PlusMagi's Blog By Pitt Phunsanit Cybersecurity การตั้งค่าความเป็นส่วนตัวและสิทธิ์ของแอป (Privacy Settings, App Permissions, OAuth/Third-Party Connected Apps Audit)

การตั้งค่าความเป็นส่วนตัวและสิทธิ์ของแอป (Privacy Settings, App Permissions, OAuth/Third-Party Connected Apps Audit)

ในยุคที่ข้อมูลส่วนบุคคลถูกกระจายตัวออกไปตามแอปพลิเคชันและบริการออนไลน์ต่างๆ การรักษาความมั่นคงปลอดภัยจึงไม่ใช่แค่การตั้งรหัสผ่านที่รัดกุม แต่คือการทำความเข้าใจ ‘ขอบเขตของสิทธิ์’ (Scope of Permissions) ที่เราได้มอบให้กับบริการภายนอก (Third-Party Apps) อย่างละเอียด

ในมุมมองของสถาปนิกความปลอดภัยข้อมูล การให้สิทธิ์ที่มากเกินความจำเป็น (Over-permissioning) โดยเฉพาะผ่านกลไก OAuth คือช่องโหว่ทางสถาปัตยกรรมที่ร้ายแรงที่สุด การตรวจสอบ (Audit) การเชื่อมต่อเหล่านี้จึงเป็นภารกิจสำคัญที่ต้องทำอย่างสม่ำเสมอ เพื่อให้แน่ใจว่าข้อมูลของเราถูกเข้าถึงด้วยสิทธิ์เท่าที่จำเป็นเท่านั้น

การจัดการสิทธิ์แอปภายนอกในมุมมองของ PostgreSQL

แม้ว่า PostgreSQL จะเป็นระบบจัดการฐานข้อมูล แต่หลักการควบคุมสิทธิ์ (Access Control) ก็สามารถนำมาประยุกต์ใช้เพื่อจำลองการตรวจสอบสิทธิ์ของแอปพลิเคชันภายนอกได้ เราสามารถออกแบบตารางเพื่อบันทึกการเชื่อมต่อ (Connection) และขอบเขตสิทธิ์ (Scope) ที่ถูกมอบให้ เพื่อให้สามารถ Query และวิเคราะห์ความเสี่ยงได้

สมมติว่าเรามีตารางชื่อ app_permissions ที่บันทึกว่าแอปใด (app_id) ได้รับสิทธิ์อะไรบ้าง (scope) จากผู้ใช้ (user_id) การตรวจสอบความเสี่ยงคือการค้นหา Scope ที่เกินความจำเป็น:

SQL

-- ตารางจำลองการบันทึกสิทธิ์แอปพลิเคชันภายนอก<br>CREATE TABLE app_permissions (<code><br>    permission_id SERIAL PRIMARY KEY,<br>    user_id VARCHAR(50) NOT NULL,<br>    app_name VARCHAR(100) NOT NULL,<br>    scope TEXT NOT NULL, -- เช่น 'read:contact,write:profile'<br>    granted_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP<br>);<br><br>-- ตัวอย่างการ Query เพื่อ Audit สิทธิ์ที่ผู้ใช้ 'user123' มอบให้<br>SELECT app_name, scope, granted_date FROM app_permissions WHERE user_id = 'user123' ORDER BY granted_date DESC;<br><br>-- ผลลัพธ์ที่ได้จะช่วยให้เห็นว่าแอปใดกำลังเข้าถึงสิทธิ์ใดบ้าง<br>-- ตัวอย่าง: 'CalendarApp', 'read:calendar,write:event'<br>

หลักการ Audit: การจำกัดขอบเขตสิทธิ์ (Principle of Least Privilege)

หลักการสำคัญที่สุดในการรักษาความปลอดภัยคือการให้สิทธิ์เท่าที่จำเป็นต่อการใช้งานเท่านั้น (Principle of Least Privilege) เมื่อเราทำการ Audit ข้อมูลจาก PostgreSQL เราต้องพิจารณาว่า Scope ที่บันทึกไว้ยังคงจำเป็นหรือไม่ หากแอปพลิเคชันใดเคยได้รับสิทธิ์ ‘read:all_data’ แต่ปัจจุบันใช้งานเพียงแค่ ‘read:profile’ เราควรดำเนินการจำกัดสิทธิ์ (Revoke) ทันที

ในทางปฏิบัติ หากเราพบว่าสิทธิ์ที่มอบให้มีความเสี่ยงสูง เราสามารถใช้คำสั่งเพื่อจำกัดการเข้าถึงข้อมูลในระดับฐานข้อมูลได้ เช่น การใช้ REVOKE หรือการสร้าง View ที่จำกัดคอลัมน์ที่มองเห็นได้ เพื่อลดความเสี่ยงจากการรั่วไหลของข้อมูล (Data Leakage) แม้ว่าแอปนั้นจะถูกแฮ็กก็ตาม

SQL

-- การจำลองการเพิกถอนสิทธิ์ (Conceptual Revocation)<br>-- สมมติว่าเราต้องการลบสิทธิ์ที่เกินความจำเป็นของแอป 'OldService'<br>DELETE FROM app_permissions WHERE app_name = 'OldService' AND scope LIKE '%write:%';<br><br>-- การตรวจสอบสิทธิ์ที่เหลืออยู่หลังการ Audit<br>SELECT COUNT(*) FROM app_permissions WHERE user_id = 'user123';<br>

บทสรุป: การป้องกันเชิงรุก

การจัดการความเป็นส่วนตัวและสิทธิ์แอปพลิเคชันภายนอกจึงเป็นกระบวนการที่ต้องทำอย่างต่อเนื่อง (Continuous Monitoring) ไม่ใช่แค่การทำครั้งเดียวจบ การใช้เครื่องมืออย่าง PostgreSQL ในการจัดเก็บและ Query ข้อมูลสิทธิ์อย่างเป็นระบบ จะช่วยให้องค์กรหรือผู้ใช้สามารถมองเห็น ‘ร่องรอยข้อมูล’ (Digital Footprint) ได้อย่างชัดเจน และสามารถดำเนินการแก้ไขความเสี่ยงด้วยการจำกัดสิทธิ์หรือเพิกถอนการเชื่อมต่อที่ไม่จำเป็นได้อย่างมีประสิทธิภาพ

Exit mobile version