MongoDB ความปลอดภัย การตรวจสอบ และการสำรองข้อมูล (Mongodump)

หนึ่งในแนวคิดสำคัญใน MongoDB คือการจัดการฐานข้อมูล ประเด็นสำคัญต่างๆ เช่น ความปลอดภัย การสำรองข้อมูล การเข้าถึงฐานข้อมูล ล้วนเป็นแนวคิดที่สำคัญเมื่อพูดถึงการจัดการฐานข้อมูล

MongoDB ภาพรวมความปลอดภัย

MongoDB มีความสามารถในการกำหนดกลไกความปลอดภัยให้กับฐานข้อมูล ตามค่าเริ่มต้นไม่มีใครต้องการให้ทุกคนมีสิทธิ์เข้าถึงทุกฐานข้อมูลแบบเปิด MongoDBดังนั้นจึงจำเป็นต้องมีกลไกการรักษาความปลอดภัยบางอย่างเข้ามา MongoDB เป็นสิ่งสำคัญ

ต่อไปนี้เป็นแนวทางปฏิบัติที่ดีที่สุดเมื่อนำการรักษาความปลอดภัยไปใช้ในฐานข้อมูล

  1. เปิดใช้งานการควบคุมการเข้าถึง – สร้างผู้ใช้เพื่อให้แอปพลิเคชันและผู้ใช้ทั้งหมดถูกบังคับให้มีกลไกการรับรองความถูกต้องบางประเภทเมื่อเข้าถึงฐานข้อมูลบน MongoDB.
  2. กำหนดค่าการควบคุมการเข้าถึงตามบทบาท – บางครั้งอาจมีการจัดกลุ่มสิทธิ์ตามตรรกะซึ่งอาจจำเป็น ซึ่งสามารถรวมเป็นบทบาทได้ จากนั้นผู้ใช้สามารถถูกกำหนดให้กับบทบาทเหล่านี้ได้
  3. ลองกำหนดค่า MongoDB เพื่อใช้โปรโตคอลการเข้ารหัสบางประเภท เช่น TLS หรือ SSL โปรโตคอลเหล่านี้สามารถใช้เพื่อเข้ารหัสการรับส่งข้อมูลที่ไหลระหว่างไคลเอนต์และสภาพแวดล้อม mongo DB
  4. กำหนดค่าการตรวจสอบ – โดยปกติผู้ดูแลระบบจำเป็นต้องทราบว่าใครกำลังทำอะไร ซึ่งจะช่วยในการวิเคราะห์ปัญหาในภายหลัง วิธีที่ดีที่สุดคือเปิดใช้งานการตรวจสอบใน MongoDB.
  5. เรียกใช้อินสแตนซ์เซิร์ฟเวอร์ MongDB ด้วย ID ผู้ใช้แยกต่างหากซึ่งสามารถเข้าถึงทรัพยากรที่จำเป็นบนสภาพแวดล้อมเซิร์ฟเวอร์

ขั้นตอนการสำรองข้อมูล Mongodb – mongodump

เมื่อทำงานร่วมกับ MongDB สิ่งสำคัญคือต้องตรวจสอบให้แน่ใจว่าได้มีขั้นตอนการสำรองข้อมูลไว้เสมอในกรณีที่ข้อมูลอยู่ภายใน MongoDB ได้รับความเสียหายไม่ว่าด้วยเหตุผลใดก็ตาม

ด้านล่างนี้เป็นกลไกการสำรองข้อมูลที่มีให้จากภายใน MongoDB

  1. สำรองข้อมูลโดยการคัดลอกไฟล์ข้อมูลที่สำคัญ – นี่อาจเป็นกลไกที่ง่ายที่สุด สิ่งที่คุณต้องทำคือการคัดลอกไฟล์ข้อมูลที่มี MongoDB อยู่และคัดลอกไปยังตำแหน่งอื่นซึ่งควรเป็นเซิร์ฟเวอร์อื่น
  2. สำรองฐานข้อมูลด้วย mongodump – เครื่องมือ mongodump อ่านข้อมูลจากไฟล์ MongoDB ฐานข้อมูลและสร้างไฟล์ BSON ความเที่ยงตรงสูง สิ่งที่ต้องคำนึงถึงก็คือ หากชุดข้อมูลมีขนาดใหญ่ ดังนั้น mongodump อาจต้องใช้ทรัพยากรจำนวนมาก ดังนั้น เพื่อลดปัญหานี้ ควรรันยูทิลิตีบนเซิร์ฟเวอร์รอง
  3. MongoDB การสำรองข้อมูลตัวจัดการคลาวด์ - MongoDB Cloud Manager สำรองข้อมูลอย่างต่อเนื่อง MongoDB ชุดจำลองและคลัสเตอร์แบบแบ่งส่วนโดยการอ่านข้อมูล oplog จาก MongoDB สิ่งแวดล้อม MongoDB Cloud Manager สามารถสร้างจุดหนึ่งในการกู้คืนเวลาได้โดยการจัดเก็บข้อมูล oplog เพื่อให้สามารถสร้างการกู้คืนได้ตลอดเวลาสำหรับชุดจำลองหรือคลัสเตอร์แบบแบ่งส่วนที่เฉพาะเจาะจง

การตรวจสอบ MongoDB

การติดตามผลเป็นหนึ่งในกิจกรรมการบริหารที่สำคัญที่สุดใน MongoDB- เนื่องจากคุณสามารถดำเนินการเชิงรุกได้มากขึ้นโดยการตรวจสอบสภาพแวดล้อมเพื่อหาปัญหาที่อาจเกิดขึ้นซึ่งอาจเกิดขึ้นได้

ด้านล่างนี้เป็นตัวอย่างบางส่วนสำหรับการดำเนินการตรวจสอบ

  1. มอนโกสแตท จะบอกคุณว่าการดำเนินการฐานข้อมูล เช่น การแทรก การค้นหา การอัปเดต การลบ ฯลฯ เกิดขึ้นบนเซิร์ฟเวอร์กี่ครั้ง ซึ่งจะช่วยให้คุณทราบว่าเซิร์ฟเวอร์กำลังรับภาระหนักเพียงใด และจะระบุว่าคุณต้องการทรัพยากรเพิ่มเติมบนเซิร์ฟเวอร์หรือเซิร์ฟเวอร์เพิ่มเติมเพื่อกระจายภาระหนักหรือไม่
  2. มองโกท็อป ติดตามและรายงานกิจกรรมการอ่านและเขียนปัจจุบันของ MongoDB และรายงานสถิติเหล่านี้ตามการรวบรวม
  3. MongoDB มีเว็บอินเตอร์เฟสที่เปิดเผยข้อมูลการวินิจฉัยและการตรวจสอบในหน้าเว็บธรรมดา คุณสามารถเรียกดู URL ด้านล่างบนเซิร์ฟเวอร์ภายในเครื่องของคุณเพื่อเปิดยูทิลิตีการดูแลเว็บ http://localhost:28017
  4. คำสั่ง serverStatus หรือ db.serverStatus() จากเชลล์ จะส่งคืนภาพรวมสถานะของฐานข้อมูล พร้อมรายละเอียดเกี่ยวกับการใช้งานดิสก์ การใช้หน่วยความจำ การเชื่อมต่อที่สร้างขึ้น MongoDB สิ่งแวดล้อม ฯลฯ

MongoDB ข้อควรพิจารณาในการจัดทำดัชนีและประสิทธิภาพ

  1. ดัชนีมีความสำคัญมากในฐานข้อมูลใดๆ และสามารถใช้เพื่อปรับปรุงประสิทธิภาพของคำค้นหาใน MongoDB- หากคุณทำการค้นหาในเอกสารของคุณอย่างต่อเนื่อง จะเป็นการดีกว่าถ้าเพิ่มดัชนีลงในฟิลด์ของเอกสารที่ใช้ในเกณฑ์การค้นหา
  2. พยายามจำกัดจำนวนผลลัพธ์แบบสอบถามที่ส่งกลับเสมอ สมมติว่าคุณมีชื่อช่อง 2 ช่องในเอกสาร แต่คุณเพียงต้องการดู 2 ช่องจากเอกสาร จากนั้นตรวจสอบให้แน่ใจว่าข้อความค้นหาของคุณกำหนดเป้าหมายเพื่อแสดง 2 ฟิลด์ที่คุณต้องการเท่านั้น ไม่ใช่ทุกฟิลด์
  3. หากคุณต้องการดูค่าฟิลด์บางค่า ให้ใช้เฉพาะฟิลด์เหล่านั้นในการสืบค้น อย่าค้นหาทุกฟิลด์ในคอลเลกชันหากไม่จำเป็น

กำหนดค่า MongoDB ด้วยการตรวจสอบสิทธิ์ Kerberos

แม้ว่าการอนุญาตจะดูให้แน่ใจว่าไคลเอ็นต์เข้าถึงระบบได้ แต่การตรวจสอบสิทธิ์จะตรวจสอบประเภทการเข้าถึงที่ไคลเอ็นต์มีอยู่ MongoDBเมื่อได้รับอนุญาตเข้าสู่ระบบแล้ว

มีกลไกการตรวจสอบสิทธิ์ที่หลากหลาย ด้านล่างนี้เป็นเพียงบางส่วนเท่านั้น

MongoDB การรับรองความถูกต้องโดยใช้ใบรับรอง x.509

ใช้ใบรับรอง x.509 เพื่อตรวจสอบสิทธิ์ไคลเอ็นต์ โดยพื้นฐานแล้วใบรับรองจะเป็นลายเซ็นที่เชื่อถือได้ระหว่างไคลเอนต์และ MongoDB เซิร์ฟเวอร์

ดังนั้นแทนที่จะป้อนชื่อผู้ใช้และรหัสผ่านเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ ใบรับรองจะถูกส่งผ่านระหว่างไคลเอนต์และ MongoDB เซิร์ฟเวอร์ โดยทั่วไปไคลเอนต์จะมีใบรับรองไคลเอ็นต์ซึ่งจะถูกส่งไปยังเซิร์ฟเวอร์เพื่อตรวจสอบสิทธิ์ในเซิร์ฟเวอร์ ใบรับรองไคลเอ็นต์แต่ละรายการสอดคล้องกับใบรับรองเดียว MongoDB ผู้ใช้ ดังนั้นผู้ใช้แต่ละคนจาก MongoDB ต้องมีใบรับรองของตนเองจึงจะรับรองความถูกต้องได้ MongoDB เซิร์ฟเวอร์

เพื่อให้แน่ใจว่าสิ่งนี้ได้ผล จะต้องปฏิบัติตามขั้นตอนต่อไปนี้

  1. ต้องซื้อใบรับรองที่ถูกต้องจากหน่วยงานภายนอกที่ถูกต้องและติดตั้งลงใน MongoDB เซิร์ฟเวอร์
  2. ใบรับรองไคลเอ็นต์ต้องมีคุณสมบัติต่อไปนี้ (ผู้ให้บริการใบรับรอง (CA) รายเดียวต้องออกใบรับรองสำหรับทั้งไคลเอ็นต์และเซิร์ฟเวอร์ ใบรับรองไคลเอ็นต์ต้องมีฟิลด์ต่อไปนี้ – keyUsage และ extendedKeyUsage)
  3. ผู้ใช้แต่ละรายที่เชื่อมต่อกับเซิร์ฟเวอร์ MongDB จำเป็นต้องมีใบรับรองแยกต่างหาก

วิธีกำหนดค่า MongoDB ด้วยการตรวจสอบสิทธิ์ Kerberos

ด้านล่างนี้เป็นขั้นตอนในการกำหนดค่า MongoDB โดยเปิดการตรวจสอบสิทธิ์ Kerberos Windows:

ขั้นตอน 1) กำหนดค่า MongoDB โดยเปิดการตรวจสอบสิทธิ์ Kerberos Windows
Kerberos เป็นกลไกการตรวจสอบสิทธิ์ที่ใช้ในสภาพแวดล้อมไคลเอนต์-เซิร์ฟเวอร์ขนาดใหญ่

มันเป็นกลไกที่ปลอดภัยมากโดยที่รหัสผ่านจะได้รับอนุญาตก็ต่อเมื่อมีการเข้ารหัสเท่านั้น ดี, MongoDB มีสิ่งอำนวยความสะดวกในการตรวจสอบความถูกต้องกับระบบที่ใช้ Kerberos ที่มีอยู่

ขั้นตอน 2) กระบวนการเซิร์ฟเวอร์ mongod.exe
ถัดไป เริ่มกระบวนการเซิร์ฟเวอร์ mongod.exe

ขั้นตอน 3) กระบวนการไคลเอ็นต์ mongo.exe และเชื่อมต่อ
ถัดไป เริ่มกระบวนการไคลเอ็นต์ mongo.exe และเชื่อมต่อกับ MongoDB เซิร์ฟเวอร์

ขั้นตอน 4) เพิ่มผู้ใช้เข้า MongoDB
ซึ่งโดยพื้นฐานแล้วจะเป็นชื่อหลักของ Kerberos สำหรับฐานข้อมูล $external ฐานข้อมูล $external เป็นฐานข้อมูลพิเศษที่บอก MongoDB เพื่อรับรองความถูกต้องของผู้ใช้รายนี้กับระบบ Kerberos แทนที่จะเป็นระบบภายในของตนเอง

กำหนดค่า MongoDB ด้วยการตรวจสอบสิทธิ์ Kerberos

use $external
db.createUser(
{
	user: "user1@example.NET",

	roles:[
	{
		role: "read" , db:"Marketing"}
		
	}
		  ]
}

ขั้นตอน 5) เริ่มใช้คำสั่ง
เริ่ม mongod.exe ด้วยการรองรับ Kerberos โดยใช้คำสั่งดังต่อไปนี้

mongod.exe –auth –setParameter authenticationMechanisms=GSSAPI

จากนั้นคุณสามารถเชื่อมต่อกับผู้ใช้ Kerberos และการตรวจสอบสิทธิ์ Kerberos ไปยังฐานข้อมูลได้แล้ว

สรุป

  • สิ่งสำคัญมากคือต้องใช้การรักษาความปลอดภัยในฐานข้อมูลเพื่อให้แน่ใจว่าข้อมูลในฐานข้อมูลจะถูกเก็บไว้อย่างปลอดภัย
  • สามารถสร้างผู้ใช้ในฐานข้อมูลได้ด้วยคำสั่ง createUser สามารถกำหนดบทบาทเฉพาะให้กับผู้ใช้เพื่อให้สิทธิ์เฉพาะในฐานข้อมูลได้
  • สามารถเพิ่มผู้ดูแลระบบสำหรับฐานข้อมูลทั้งหมดได้สำหรับฐานข้อมูลเฉพาะเท่านั้น ซึ่งสามารถทำได้โดยการให้บทบาท userAdmin หรือ userAdminAnyDatabase
  • สำรองข้อมูลของคุณเสมอ MongoDB สภาพแวดล้อมเพื่อให้ในกรณีที่เกิดภัยพิบัติข้อมูลจะสามารถกู้คืนได้ง่าย
  • คอยติดตามคุณอยู่เสมอ MongoDB สภาพแวดล้อมในเชิงรุกมากขึ้นและมองเห็นปัญหาก่อนที่จะเกิดขึ้น
  • มีกลไกการรับรองความถูกต้องที่หลากหลายเพื่อให้การรักษาความปลอดภัยที่ดีขึ้นในฐานข้อมูล ตัวอย่างหนึ่งคือการใช้ใบรับรองเพื่อตรวจสอบสิทธิ์ผู้ใช้แทนการใช้ชื่อผู้ใช้และรหัสผ่าน