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

⚡ สรุปอย่างชาญฉลาด

MongoDB ความปลอดภัย การตรวจสอบ และการสำรองข้อมูล เป็นแนวคิดหลักในการบริหารจัดการฐานข้อมูลที่ช่วยให้ข้อมูลปลอดภัย พร้อมใช้งาน และกู้คืนได้ เอกสารนี้ครอบคลุมถึงแนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัย การสำรองข้อมูลด้วย mongodump เครื่องมือตรวจสอบ เคล็ดลับการจัดทำดัชนี กลไกการตรวจสอบสิทธิ์ ใบรับรอง x.509 และการกำหนดค่าต่างๆ MongoDB โดยใช้การตรวจสอบสิทธิ์แบบ Kerberos

  • 🔒 การรักษาความปลอดภัย: เปิดใช้งานการควบคุมการเข้าถึง การเข้าถึงตามบทบาท การเข้ารหัส TLS/SSL และการตรวจสอบบันทึก
  • 💾 สำรอง: คัดลอกไฟล์ข้อมูล ใช้ mongodump สำหรับการสร้างไฟล์ BSON หรือใช้ Cloud Manager
  • 📊 การตรวจสอบ: ใช้คำสั่ง mongostat, mongotop, อินเทอร์เฟซบนเว็บ และ serverStatus
  • การจัดทำดัชนี: เพิ่มดัชนีในฟิลด์ที่ค้นหาและจำกัดจำนวนฟิลด์ที่แสดงผล
  • 🪪 รับรองความถูกต้อง: ใช้ใบรับรอง x.509 หรือ Kerberos เพื่อการเข้าถึงไคลเอ็นต์ที่ปลอดภัย

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

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

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

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

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

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

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

เมื่อทำงานกับ MongoDBสิ่งสำคัญคือต้องตรวจสอบให้แน่ใจเสมอว่ามีขั้นตอนการสำรองข้อมูลไว้ในกรณีที่ข้อมูลภายในสูญหาย 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. มองโกท็อป tracks และรายงานกิจกรรมการอ่านและการเขียนปัจจุบันของ MongoDB และรายงานสถิติเหล่านี้ตามการรวบรวม
  3. MongoDB มีอินเทอร์เฟซบนเว็บที่แสดงข้อมูลการวินิจฉัยและการตรวจสอบในรูปแบบหน้าเว็บที่ใช้งานง่าย
  4. คำสั่ง serverStatus หรือ db.serverStatus() จากเชลล์ จะส่งคืนภาพรวมสถานะของฐานข้อมูล พร้อมรายละเอียดเกี่ยวกับการใช้งานดิสก์ การใช้หน่วยความจำ การเชื่อมต่อที่สร้างขึ้น MongoDB สิ่งแวดล้อม และอื่นๆ

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

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

MongoDB กลไกการรับรองความถูกต้อง

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

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

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

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

เพื่อให้การทำงานเป็นไปอย่างราบรื่น ต้องปฏิบัติตามขั้นตอนต่อไปนี้:

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

วิธีกำหนดค่า 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 ไปยังฐานข้อมูลได้แล้ว

คำถามที่พบบ่อย

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

ใช่แล้ว สคริปต์ที่ใช้ AI และเครื่องมือบนคลาวด์สามารถกำหนดเวลาการสำรองข้อมูล mongodump ตรวจสอบความสมบูรณ์ และแนะนำจุดกู้คืนได้ MongoDB นอกจากนี้ Atlas ยังมีระบบสำรองข้อมูลอัตโนมัติอย่างต่อเนื่อง ช่วยลดภาระงานในการปกป้องข้อมูลด้วยตนเอง

mongodump สร้างสแนปช็อต BSON ของฐานข้อมูลตามความต้องการ MongoDB Cloud Manager จะอ่านไฟล์ oplog อย่างต่อเนื่อง เพื่อให้สามารถกู้คืนชุดจำลองและคลัสเตอร์แบบชาร์ดไปยังจุดเวลาที่ต้องการได้

ใช้เครื่องมือ mongorestore โดยชี้ไปยังไดเร็กทอรีที่เก็บข้อมูลสำรอง ตัวอย่างเช่น คำสั่ง mongorestore –db Marketing dump/Marketing จะโหลดไฟล์ BSON กลับเข้าไปในฐานข้อมูลที่ระบุ

สรุปโพสต์นี้ด้วย: