PlusMagi's Blog By Pitt Phunsanit Backend,Database การบริหารสิทธิ์ผู้ใช้และสถาปัตยกรรมแชร์ไฟล์ (ACL, User/Group Permissions, Quota Control, SMB/NFS/iSCSI)

การบริหารสิทธิ์ผู้ใช้และสถาปัตยกรรมแชร์ไฟล์ (ACL, User/Group Permissions, Quota Control, SMB/NFS/iSCSI)

SQL

-- 1. สร้าง Role (เทียบเท่า User/Group)</code>
<code class="language-sql">CREATE ROLE analyst_role;</code>
<code class="language-sql">CREATE ROLE app_owner;</code>

<code class="language-sql">-- 2. กำหนดสิทธิ์ (GRANT) ให้ Role</code>
<code class="language-sql">GRANT SELECT ON schema_data.user_data TO analyst_role;</code>
<code class="language-sql">GRANT INSERT, UPDATE ON schema_data.user_data TO app_owner;</code>

<code class="language-sql">-- 3. จำกัดสิทธิ์ (REVOKE) เมื่อไม่จำเป็น</code>
<code class="language-sql">REVOKE DELETE ON schema_data.user_data FROM analyst_role;

2. การควบคุมทรัพยากร (Quota Control)

“>

แม้ว่า PostgreSQL จะไม่ได้มีคำสั่ง Quota ในระดับ File System โดยตรง แต่เราสามารถจำกัดการใช้ทรัพยากรในระดับ Role ได้ผ่านการจัดการ Connection Limit หรือการใช้ Row-Level Security (RLS) เพื่อจำกัดขอบเขตข้อมูลที่ Role นั้นเข้าถึงได้ ซึ่งทำหน้าที่คล้ายกับการจำกัดพื้นที่จัดเก็บ (Quota) เพื่อป้องกันการใช้ทรัพยากรเกินขีดจำกัด

SQL

-- ตัวอย่างการจำกัดจำนวนการเชื่อมต่อ (Connection Quota)</code>
<code class="language-sql">ALTER ROLE analyst_role CONNECTION LIMIT 5;

บทสรุป: สถาปัตยกรรมความปลอดภัยที่สมบูรณ์

“>

การใช้ RBAC ใน PostgreSQL ช่วยให้สถาปนิกระบบสามารถสร้างสถาปัตยกรรมความปลอดภัยที่ซับซ้อนและละเอียดอ่อนได้เทียบเท่ากับการจัดการ File Share ระดับองค์กร (เช่น SMB/NFS) โดยการใช้ Role และคำสั่ง GRANT/REVOKE อย่างเคร่งครัด ทำให้มั่นใจได้ว่าข้อมูลจะถูกเข้าถึงได้เฉพาะผู้ที่ได้รับอนุญาตตามบทบาทเท่านั้น การทำความเข้าใจกลไกเหล่านี้จึงเป็นหัวใจสำคัญของการออกแบบระบบที่มั่นคงปลอดภัยและสอดคล้องกับข้อกำหนดทางธุรกิจ

“>

ในยุคที่ข้อมูลคือสินทรัพย์ที่มีมูลค่าสูงสุด การรักษาความมั่นคงปลอดภัยของข้อมูล (Data Security) จึงเป็นภารกิจหลักของสถาปนิกระบบ องค์กรไม่ได้ต้องการเพียงแค่การเข้าถึงข้อมูล แต่ต้องการการเข้าถึงที่ถูกจำกัดตามบทบาทหน้าที่ (Role-Based Access Control: RBAC) การจัดการสิทธิ์ที่ไม่รัดกุมไม่เพียงแต่เสี่ยงต่อการรั่วไหลของข้อมูล (Data Leakage) เท่านั้น แต่ยังอาจนำไปสู่ปัญหาด้านการปฏิบัติตามข้อกำหนดทางกฎหมาย (Compliance) ได้ด้วย

หลักการบริหารสิทธิ์ใน PostgreSQL: จาก User/Group สู่ RBAC

“>

ในบริบทของ PostgreSQL การควบคุมการเข้าถึงไม่ได้จำกัดอยู่แค่ระดับเจ้าของ (Owner) เท่านั้น แต่เราใช้ระบบ Role-Based Access Control (RBAC) ซึ่งมีความละเอียดและยืดหยุ่นสูงมาก โดย Role ใน PostgreSQL ทำหน้าที่เป็นตัวแทนทั้งผู้ใช้ (User) และกลุ่มผู้ใช้ (Group) ทำให้เราสามารถจำลองแนวคิดของ Access Control Lists (ACLs) ได้อย่างทรงพลัง

1. การจำลอง User/Group Permissions และ ACL

“>

การกำหนดสิทธิ์ใน PostgreSQL จะเริ่มต้นด้วยการสร้าง Role และการกำหนดสิทธิ์ (GRANT) ในระดับ Schema (เทียบเท่าโฟลเดอร์หลัก) และ Table (เทียบเท่าไฟล์) เราสามารถกำหนดสิทธิ์ได้อย่างละเอียดว่า Role ใด สามารถทำอะไรกับ Object ใดได้บ้าง

SQL

-- 1. สร้าง Role (เทียบเท่า User/Group)</code>
<code class="language-sql">CREATE ROLE analyst_role;</code>
<code class="language-sql">CREATE ROLE app_owner;</code>

<code class="language-sql">-- 2. กำหนดสิทธิ์ (GRANT) ให้ Role</code>
<code class="language-sql">GRANT SELECT ON schema_data.user_data TO analyst_role;</code>
<code class="language-sql">GRANT INSERT, UPDATE ON schema_data.user_data TO app_owner;</code>

<code class="language-sql">-- 3. จำกัดสิทธิ์ (REVOKE) เมื่อไม่จำเป็น</code>
<code class="language-sql">REVOKE DELETE ON schema_data.user_data FROM analyst_role;

2. การควบคุมทรัพยากร (Quota Control)

“>

แม้ว่า PostgreSQL จะไม่ได้มีคำสั่ง Quota ในระดับ File System โดยตรง แต่เราสามารถจำกัดการใช้ทรัพยากรในระดับ Role ได้ผ่านการจัดการ Connection Limit หรือการใช้ Row-Level Security (RLS) เพื่อจำกัดขอบเขตข้อมูลที่ Role นั้นเข้าถึงได้ ซึ่งทำหน้าที่คล้ายกับการจำกัดพื้นที่จัดเก็บ (Quota) เพื่อป้องกันการใช้ทรัพยากรเกินขีดจำกัด

SQL

-- ตัวอย่างการจำกัดจำนวนการเชื่อมต่อ (Connection Quota)</code>
<code class="language-sql">ALTER ROLE analyst_role CONNECTION LIMIT 5;

บทสรุป: สถาปัตยกรรมความปลอดภัยที่สมบูรณ์

“>

การใช้ RBAC ใน PostgreSQL ช่วยให้สถาปนิกระบบสามารถสร้างสถาปัตยกรรมความปลอดภัยที่ซับซ้อนและละเอียดอ่อนได้เทียบเท่ากับการจัดการ File Share ระดับองค์กร (เช่น SMB/NFS) โดยการใช้ Role และคำสั่ง GRANT/REVOKE อย่างเคร่งครัด ทำให้มั่นใจได้ว่าข้อมูลจะถูกเข้าถึงได้เฉพาะผู้ที่ได้รับอนุญาตตามบทบาทเท่านั้น การทำความเข้าใจกลไกเหล่านี้จึงเป็นหัวใจสำคัญของการออกแบบระบบที่มั่นคงปลอดภัยและสอดคล้องกับข้อกำหนดทางธุรกิจ

Exit mobile version