การควบคุมการเข้าถึงและการเข้ารหัส
ปกป้องข้อมูลขณะจัดเก็บ
การควบคุมการเข้าถึงและการเข้ารหัส เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
การปกป้องข้อมูลขณะจัดเก็บ
ฐานข้อมูลเก็บข้อมูลสำคัญที่สุดไว้ ดังนั้นการควบคุมสองอย่างที่สำคัญที่สุดคือ การควบคุมการเข้าถึง (ใครสามารถเข้าถึงข้อมูลได้) และการเข้ารหัส (ทำให้ข้อมูลไร้ประโยชน์หากถูกขโมย)
เมื่อใช้ร่วมกัน ทั้งสองอย่างจะปกป้องข้อมูลทั้งขณะระบบทำงาน และกรณีที่ดิสก์หรือข้อมูลสำรองถูกนำออกไป
การยืนยันตัวตนกับการอนุญาตสิทธิ์
ควรแยกแนวคิดทั้งสองออกจากกัน:
- การยืนยันตัวตนพิสูจน์ว่าคุณเป็นใคร (การเข้าสู่ระบบ ใบรับรอง โทเค็น IAM)
- การอนุญาตสิทธิ์กำหนดว่าคุณทำอะไรได้บ้างหลังจากยืนยันตัวตนแล้ว
การรักษาความปลอดภัยฐานข้อมูลที่รัดกุมต้องมีทั้งสองอย่าง ได้แก่ ตัวตนที่ผ่านการตรวจสอบและสิทธิ์ที่กำหนดไว้อย่างจำกัด
หลักการให้สิทธิ์เท่าที่จำเป็น
ให้สิทธิ์แก่แต่ละบัญชีเฉพาะที่จำเป็นต้องใช้เท่านั้น และไม่ให้มากกว่านั้น บริการสร้างรายงานควรมีสิทธิ์อ่านอย่างเดียว ส่วนแอปที่เขียนข้อมูลไม่ควรสามารถใช้ DROP กับตารางได้
CREATE ROLE report_reader;
GRANT SELECT ON sales.* TO report_reader;
GRANT report_reader TO 'analytics_svc'@'%';การควบคุมการเข้าถึงตามบทบาท
RBAC จัดกลุ่มสิทธิ์เป็นบทบาทและกำหนดบทบาทให้ผู้ใช้ วิธีนี้รองรับการขยายระบบได้ดีกว่าการให้สิทธิ์แก่ผู้ใช้ทีละคน และทำให้การตรวจสอบชัดเจน
- กำหนดบทบาท:
read_only,app_writer,dba - กำหนดผู้ใช้ให้กับบทบาท
- ตรวจสอบการเป็นสมาชิกบทบาทเป็นประจำ
การรักษาความปลอดภัยระดับแถวและคอลัมน์
การควบคุมแบบละเอียดจะจำกัดการเข้าถึงภายในตาราง
- ระดับคอลัมน์: ซ่อนคอลัมน์เงินเดือนหรือ SSN จากบางบทบาท
- การรักษาความปลอดภัยระดับแถว (RLS): ผู้เช่าแต่ละรายจะเห็นเฉพาะแถวของตนเอง
-- PostgreSQL row-level security
ALTER TABLE orders ENABLE ROW LEVEL SECURITY;
CREATE POLICY tenant_isolation ON orders
USING (tenant_id = current_setting('app.tenant')::int);การเข้ารหัสขณะจัดเก็บ
การเข้ารหัสขณะจัดเก็บช่วยปกป้องข้อมูลบนดิสก์ หากมีผู้ขโมยไดรฟ์หรือไฟล์ข้อมูลสำรอง เนื้อหาจะไม่สามารถอ่านได้หากไม่มีคีย์
ตัวเลือกต่าง ๆ ได้แก่ การเข้ารหัสทั้งดิสก์ การเข้ารหัสระบบไฟล์ และการเข้ารหัสข้อมูลแบบโปร่งใส (TDE)ที่มีอยู่ในฐานข้อมูล
การเข้ารหัสข้อมูลแบบโปร่งใส
TDE จะเข้ารหัสไฟล์ฐานข้อมูลโดยอัตโนมัติ แอปพลิเคชันไม่ต้องเปลี่ยนแปลงใด ๆ เนื่องจากกลไกฐานข้อมูลจะเข้ารหัสเมื่อเขียนและถอดรหัสเมื่ออ่าน วิธีนี้ป้องกันไฟล์ที่ถูกขโมยได้ แต่ไม่ป้องกันผู้โจมตีที่มีเซสชันฐานข้อมูลที่ถูกต้องอยู่แล้ว
-- SQL Server example concept
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE tde_cert;
ALTER DATABASE appdb SET ENCRYPTION ON;การเข้ารหัสระดับคอลัมน์
สำหรับช่องข้อมูลที่มีความอ่อนไหวเป็นพิเศษ เช่น หมายเลขบัตรและข้อมูลสุขภาพ ควรเข้ารหัสแต่ละคอลัมน์ ข้อมูลแบบข้อความธรรมดาจะไม่ถูกเก็บอยู่ในฐานข้อมูล แม้แต่สำหรับ DBA
ข้อแลกเปลี่ยนคือ คอลัมน์ที่เข้ารหัสจะสร้างดัชนีและค้นหาได้ยาก จึงควรใช้วิธีนี้อย่างเลือกสรร
การเข้ารหัสขณะรับส่งข้อมูล
ข้อมูลยังต้องได้รับการปกป้องขณะส่งผ่านเครือข่ายด้วย ให้บังคับใช้ TLS กับการเชื่อมต่อระหว่างไคลเอ็นต์กับฐานข้อมูลทั้งหมด เพื่อไม่ให้ข้อมูลประจำตัวและชุดผลลัพธ์ถูกดักอ่าน
-- PostgreSQL: force SSL in pg_hba.conf
hostssl appdb webapp 0.0.0.0/0 scram-sha-256
-- reject non-TLS:
hostnossl appdb all 0.0.0.0/0 rejectการจัดการคีย์
ความแข็งแกร่งของการเข้ารหัสขึ้นอยู่กับการจัดการคีย์ด้วย ห้ามเก็บคีย์ไว้ใกล้กับข้อมูลที่คีย์นั้นใช้ปกป้อง
- ใช้บริการจัดการคีย์ (KMS) หรือ HSM
- เปลี่ยนคีย์ตามกำหนดเวลา
- แยกหน้าที่กัน: DBA ไม่ควรเป็นผู้ถือคีย์หลักด้วย
นำทุกอย่างมาประกอบกัน
รูปแบบการป้องกันข้อมูลขณะจัดเก็บแบบหลายชั้น:
- ยืนยันตัวตนของทุกการเชื่อมต่อ (TLS และข้อมูลประจำตัวที่รัดกุม)
- อนุญาตสิทธิ์ผ่าน RBAC และการให้สิทธิ์เท่าที่จำเป็น
- ใช้การรักษาความปลอดภัยระดับแถวและคอลัมน์สำหรับความต้องการแบบละเอียด
- เข้ารหัสข้อมูลขณะจัดเก็บ (TDE) และเข้ารหัสคอลัมน์ที่มีความอ่อนไหวโดยเฉพาะ
- จัดการคีย์ใน KMS ซึ่งแยกออกจากฐานข้อมูล
ตรวจสอบความเข้าใจ
ลองวิเคราะห์ว่าการควบคุมแต่ละอย่างป้องกันภัยคุกคามใด
ทบทวน
การปกป้องข้อมูลขณะจัดเก็บทำได้โดยผสานการควบคุมการเข้าถึงเข้ากับการเข้ารหัส:
- แยกความแตกต่างระหว่างการยืนยันตัวตนกับการอนุญาตสิทธิ์
- ใช้การให้สิทธิ์เท่าที่จำเป็นและ RBAC รวมถึงการรักษาความปลอดภัยระดับแถวและคอลัมน์เมื่อจำเป็น
- เข้ารหัสข้อมูลขณะจัดเก็บ (TDE และระดับคอลัมน์) และขณะรับส่งข้อมูล (TLS)
- จัดการคีย์แยกต่างหากใน KMS และเปลี่ยนคีย์เป็นระยะ
คำถามที่พบบ่อย
บทเรียน “การควบคุมการเข้าถึงและการเข้ารหัส” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การควบคุมการเข้าถึงและการเข้ารหัส” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การควบคุมการเข้าถึงและการเข้ารหัส”
ปกป้องข้อมูลขณะจัดเก็บ คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การควบคุมการเข้าถึงและการเข้ารหัส” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม
ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การป้องกัน SQL Injection
- การควบคุมการเข้าถึงและการเข้ารหัส
- การตรวจสอบและการเฝ้าติดตาม
- ความปลอดภัยของการสำรองและกู้คืนข้อมูล