Lecture 4 — Authorization
รู้แล้วว่าเป็นใคร แล้วจะให้ทำอะไรได้บ้าง คาบนี้ว่าด้วยการเขียนนโยบาย แปลงเป็นตาราง แล้วบังคับใช้จริง
เลกเชอร์ 4 · อ่าน 35 นาที · เรียบเรียงจากสไลด์ Chapter 4 ของ Krerk Piromsopa, Ph.D.
Authentication ตอบว่า คุณเป็นใคร ส่วน Authorization ตอบว่า คุณทำอะไรได้ และคำตอบข้อหลังไม่มีคำตอบสากล มันขึ้นกับนโยบายของแต่ละระบบ — ปลอดภัยในแอป A ไม่ได้แปลว่าปลอดภัยในแอป B
เนื้อหามาจากสไลด์ Chapter 4 ทั้ง 44 หน้า คำนิยาม ชื่อโมเดล ตาราง คำสั่ง และเคสตัวอย่างมาจากสไลด์จริง ส่วนคำอธิบาย รูป และกล่องที่ติดป้าย "เสริม" เขียนขึ้นใหม่
หน้าแรกของสไลด์ระบุวันแก้ไขไว้ว่า Update: August 23, 2025 แต่บรรทัดท้ายทุกหน้ายังลงท้ายว่า @ 2019
คาบนี้จะพาไปไหน
คาบนี้มีเป้าหมายเดียวคือ ทำให้เขียนนโยบายความปลอดภัยของระบบหนึ่งได้จริง และงานนั้นมีสี่ขั้น
| คำถาม | คำตอบอยู่ที่ |
|---|---|
| Authorization คืออะไร และต่างจาก Authentication ตรงไหน | ส่วนที่ 1 |
| นโยบายตัดสินจากคุณสมบัติอะไรของข้อมูล | ส่วนที่ 2 |
| ใครเป็นคนเขียนนโยบาย | ส่วนที่ 3 |
| นโยบายกลายเป็นตาราง แล้วบังคับใช้ยังไง | ส่วนที่ 4 |
| มีแบบร่างอะไรให้ลอกบ้าง | ส่วนที่ 5 |
| เอาทั้งหมดมาต่อกันยังไง | ส่วนที่ 6 |
ส่วนที่ 3 ถึง 5 ไล่จากของที่จับต้องได้ไปหาของที่เป็นนามธรรม คือเริ่มที่ ใครเขียนนโยบาย แล้วค่อยไปถึง แบบร่างที่ช่วยคิดนโยบาย
แต่ตอนทำงานจริงเดินกลับทาง คือเลือกแบบร่างก่อน แล้วค่อยไล่ลงมา ส่วนที่ 6 จะพาเดินตามลำดับที่ถูกอีกรอบ
ส่วนที่ 1 — Authorization คืออะไร
Honesty is the best policy.
— Italian Proverb
ต่างจาก Authentication ตรงไหน
Authorization (การให้สิทธิ์ว่าทำอะไรได้บ้าง) ต่างจาก Authentication ที่จุดเดียวแต่เป็นจุดใหญ่
Authentication แชร์กันได้ ตัวตนของเราเป็นของเรา เอาไปใช้กับหลายระบบได้ นี่คือเหตุผลที่ปุ่ม "เข้าสู่ระบบด้วย Google" มีอยู่จริง
Authorization แชร์ไม่ได้ เพราะมันเป็น Application Specific คือ ผูกกับแอปนั้นแอปเดียว
Secure in App A ≠ Security in App B
เหมือนกฎหมายที่ต่างกันไปตามแต่ละที่
พาสปอร์ตของเราใช้ได้ทุกประเทศ นั่นคือ authentication มันบอกว่าเราเป็นใคร แต่สิ่งที่เราทำได้เมื่อเข้าประเทศแล้ว ต่างกันไปทุกประเทศ นั่นคือ authorization
การตัดสินว่าใครทำอะไรได้ ตั้งอยู่บน Security Policy (นโยบายความปลอดภัย) ส่วนตัวที่ทำหน้าที่บังคับให้เป็นไปตามนโยบายเรียกว่า Type Enforcement (กลไกที่บังคับใช้นโยบาย)
นโยบายคือกฎหมาย type enforcement คือตำรวจ
กฎหมายเขียนว่าอะไรทำได้ทำไม่ได้ แต่ตัวหนังสือไม่ได้หยุดใคร ต้องมีคนคอยบังคับใช้ ระบบคอมพิวเตอร์ก็เหมือนกัน เขียนนโยบายไว้สวยแค่ไหน ถ้าไม่มีกลไกบังคับ มันก็เป็นแค่เอกสาร
Policy คืออะไร
นิยามจากพจนานุกรมคือ
It is a definite course or method of action selected from among alternatives and in light of given conditions to guide and determine present and future decisions.
แนวทางหรือวิธีปฏิบัติที่ชัดเจน ซึ่งถูกเลือกมาจากทางเลือกหลายทาง ภายใต้เงื่อนไขที่กำหนด เพื่อชี้นำและกำหนดการตัดสินใจทั้งในปัจจุบันและอนาคต
— Merriam-Webster online Dictionary
สรุปให้สั้นที่สุด — ไม่รู้ว่าจะตัดสินใจยังไง ก็ไปถามนโยบาย
- คำถาม — "May I eat in a class?"
- นโยบาย — "The instructor should create supportive learning environment." ผู้สอนควรสร้างสภาพแวดล้อมที่เอื้อต่อการเรียนรู้
- คำตอบของผู้สอน — "If it makes you learn better, then you may eat in a class." ถ้ามันทำให้เรียนได้ดีขึ้น ก็กินได้
สังเกตว่านโยบายไม่ได้พูดถึงการกินข้าวเลยสักคำ
นี่คือสิ่งที่ทำให้นโยบายต่างจากรายการกฎ นโยบายที่ดีตอบคำถามที่คนเขียนยังไม่เคยเจอได้ เพราะมันให้ เกณฑ์ตัดสิน ไม่ใช่ คำตอบสำเร็จรูป ถ้าเขียนเป็นรายการว่าห้ามอะไรบ้าง พอเจอเรื่องใหม่ที่ไม่อยู่ในรายการ ก็ตอบไม่ได้
Security Policy และ Secure System
นิยามของ security policy คือ
A security policy is a statement that partitions the states of the system into a set of authorized, or secure, states and a set of unauthorized or insecure, states.
นโยบายความปลอดภัยคือข้อความที่แบ่งสถานะทั้งหมดของระบบออกเป็นสองกอง คือกองที่ได้รับอนุญาตหรือปลอดภัย กับกองที่ไม่ได้รับอนุญาตหรือไม่ปลอดภัย
— BISHOP
ข้อความอะไรก็ตามที่แบ่งระบบออกเป็นสองกองได้ ถือเป็น security policy
ตัวอย่างที่ยกไว้สั้นมากสองข้อ
- Do not cross the lawn — ห้ามเดินลัดสนาม
- No cheating in examination — ห้ามทุจริตในการสอบ
พอมีนโยบายแล้ว ก็นิยาม Secure System (ระบบที่ปลอดภัย) ต่อได้
A secure system is a system that starts in an authorized state and cannot enter an unauthorized state.
ระบบที่ปลอดภัยคือระบบที่เริ่มต้นในสถานะที่ได้รับอนุญาต และไม่มีทางเข้าสู่สถานะที่ไม่ได้รับอนุญาตได้
— BISHOP
นิยามนี้มีสองท่อน และคนมักจำแค่ท่อนหลัง
ท่อนแรก — เริ่มต้นในสถานะที่ปลอดภัย ระบบที่ติดตั้งมาแล้วมีรหัสผ่านเริ่มต้นเป็น admin/admin ผิดตั้งแต่วินาทีแรก ไม่ต้องรอให้ใครมาโจมตี
ท่อนที่สอง — ออกไปนอกกองที่ปลอดภัยไม่ได้ ต่อให้เริ่มดี ถ้ามีทางเดินไปสู่สถานะที่ไม่ควรเป็นได้ ก็ยังไม่นับว่าปลอดภัย
จุดสำคัญคือ นิยามนี้พูดถึงสถานะ ไม่ได้พูดถึงเทคโนโลยี ไม่ได้บอกว่าต้องเข้ารหัสหรือต้องมีไฟร์วอลล์ เพราะสิ่งที่นับว่าปลอดภัย ขึ้นกับนโยบายที่เราเขียนเอง
ลองตอบดู: ระบบที่ทุกคนเข้าถึงทุกอย่างได้ เป็น secure system ได้ไหมตามนิยามนี้
ได้ ถ้านโยบายเขียนไว้แบบนั้น
ถ้านโยบายของระบบคือ "ทุกคนในองค์กรเข้าถึงทุกอย่างได้" แล้วระบบทำตามนั้นได้จริงและไม่หลุดออกไปจากสถานะนั้น ระบบนั้นก็เข้านิยามของ secure system
ฟังดูขัดความรู้สึก แต่นี่คือประเด็นของทั้งคาบ — คำว่าปลอดภัยไม่มีความหมายในตัวเอง จนกว่าจะมีนโยบายมากำหนดว่าอะไรคือสถานะที่ยอมรับได้
สิ่งที่ผิดในกรณีนี้จึงไม่ใช่ตัวระบบ แต่เป็นนโยบายที่เขียนไว้ไม่ดี ซึ่งเป็นคนละปัญหาและแก้คนละที่
ส่วนที่ 2 — นโยบายตัดสินจากอะไร
สองคุณสมบัติหลักของข้อมูล
กุญแจของ authorization คือ security policy แล้วจะเขียนนโยบายยังไง คำตอบคือแบ่งตามคุณสมบัติของข้อมูลสองข้อ
Confidentiality — หน้าที่ในการปกปิดหรือปกป้องข้อมูลไม่ให้คนที่ไม่ได้รับอนุญาตเข้าถึง พูดอีกแบบคือมีแต่คนที่ถูกต้องเท่านั้นที่เข้าถึงข้อมูลได้
Who can read the data?
Integrity — สภาพของการไม่ถูกทำให้เสียหาย ในบริบทนี้แปลง่าย ๆ ว่าข้อมูลไม่ถูกแก้โดยผู้ใช้ที่ไม่ได้รับอนุญาต
Who can alter / write the data?
Confidentiality (การรักษาความลับของข้อมูล) กับ Integrity (ความครบถ้วนถูกต้องของข้อมูล) ตอบคนละคำถาม คำถามหนึ่งเรื่องอ่าน อีกคำถามเรื่องเขียน
ยังมีคุณสมบัติเพิ่มอีกข้อคือ Availability เช่นเรื่อง fault tolerant สามข้อนี้รวมกันเรียกว่า the CIA of Security Policy
CIA ในบริบทนี้ย่อมาจาก Confidentiality, Integrity และ Availability เป็นคำที่ใช้กันทั่วไปในวงการความปลอดภัย ไม่ได้เกี่ยวอะไรกับ Central Intelligence Agency
ส่วนคำว่า data ในที่นี้หมายถึงข้อมูลที่อ่อนไหว ความลับ และความเป็นส่วนตัว
โจทย์ให้คิด — ข้อสอบ
โจทย์ที่ทิ้งไว้คือ นโยบายที่เกี่ยวกับข้อสอบควรมีหน้าตาแบบไหน พร้อมคำใบ้ว่าให้แยกเป็นสองคำถาม
- Confidentiality — ใครอ่านได้ และอ่านได้เมื่อไหร่
- Integrity — ใครเขียนได้ และเขียนได้เมื่อไหร่
แล้วตามด้วยคำถามอีกสองข้อ
- ถ้านิสิตเห็นข้อสอบก่อนเวลาสอบ ถือว่าข้อสอบรั่วไหม
- ถ้ามีคนสลับหรือแก้ข้อสอบได้ ผิดกฎหมายไหม (ข้อสอบเป็นเอกสารทางกฎหมายหรือเปล่า)
คำว่า when โผล่มาในคำใบ้ทั้งสองข้อ และมันคือคำเดียวกับที่นิยาม Who can do what when? ในคาบแรกย้ำไว้
ข้อสอบชุดเดียวกัน อาจารย์อ่านได้ตลอด นิสิตอ่านได้เฉพาะในห้องสอบ และหลังสอบเสร็จทุกคนอ่านได้ คนไม่เปลี่ยน ข้อมูลไม่เปลี่ยน แต่สิทธิ์เปลี่ยนตามเวลา
| ช่วงเวลา | ใครอ่านได้ | ใครเขียนได้ |
|---|---|---|
| ก่อนสอบ | ผู้ออกข้อสอบ และผู้ตรวจทาน | ผู้ออกข้อสอบเท่านั้น |
| ระหว่างสอบ | เพิ่มนิสิตที่เข้าสอบ | ไม่มีใครแก้ตัวข้อสอบได้ |
| หลังสอบ | ทุกคน | ไม่มีใคร |
ตอบคำถามสองข้อที่ทิ้งไว้ได้เลย
ข้อสอบรั่ว คือการละเมิด confidentiality เพราะมีคนอ่านนอกช่วงเวลาที่นโยบายอนุญาต
การสลับข้อสอบ คือการละเมิด integrity เพราะมีคนเขียนในช่วงที่ไม่มีใครควรเขียนได้
มีข้อเสนอกวน ๆ ทิ้งไว้ว่า เอาข้อสอบใส่ซองแล้วเผาทิ้งไปเลย งั้นก็รักษาได้ทั้ง confidentiality และ integrity
ซึ่งถูกทั้งสองข้อจริง ไม่มีใครอ่านได้ ไม่มีใครแก้ได้ แต่ก็ไม่มีใครสอบได้ด้วย
นี่คือเหตุผลที่ต้องมี Availability เป็นข้อที่สาม ระบบที่ล็อกแน่นจนใช้งานไม่ได้ ไม่ได้แปลว่าปลอดภัย มันแปลว่าพัง
ส่วนที่ 3 — ใครเป็นคนเขียนนโยบาย
Access Control Model (แบบแผนว่าใครมีอำนาจกำหนดนโยบาย) คือโมเดลที่กำหนดว่า ใครเป็นผู้รับผิดชอบในการสร้างนโยบายความปลอดภัย โดยอิงกับ CIA ในส่วนที่แล้ว
โมเดลที่ใช้กันมีสามแบบ
| แบบ | หลักการ |
|---|---|
| Mandatory Access Control (MAC) | ผู้ใช้เชื่อถือไม่ได้ ต้องถูกควบคุม |
| Discretionary Access Control (DAC) | ผู้ใช้รับผิดชอบข้อมูลของตัวเอง |
| Role-Based Access Control (RBAC) | least privilege |
MAC — ผู้ดูแลระบบเป็นคนกำหนด
Mandatory Access Control (การควบคุมที่ผู้ดูแลระบบกำหนดให้ทั้งหมด) คือแบบที่ผู้ดูแลระบบเขียนนโยบายเพื่อควบคุมผู้ใช้ มีลักษณะสี่อย่าง
- เป็น multilevel system เช่นข้อมูลลับของรัฐบาลและกองทัพ
- มี sensitivity label ติดกับทั้ง subject และ object ทุกตัว
- ควบคุมการนำข้อมูลเข้าจากระบบอื่นและการส่งออกไประบบอื่น
ตัวอย่างคือ นิสิตต้องถูกควบคุม ไม่งั้นนิสิตก็ให้เกรดตัวเอง
DAC — เจ้าของข้อมูลเป็นคนกำหนด
Discretionary Access Control (การควบคุมที่เจ้าของข้อมูลกำหนดเอง) คือแบบที่เจ้าของรับผิดชอบข้อมูลของตัวเอง จุดสำคัญคือเรื่องความเป็นเจ้าของไฟล์และข้อมูล กับสิทธิ์การเข้าถึง
ตัวอย่างคือ ถ้าเป็นไฟล์ของฉัน ฉันก็ควบคุมได้เองว่าใครเห็นได้
RBAC — ให้สิทธิ์ตามหน้าที่
Role-Based Access Control (การให้สิทธิ์ตามบทบาทหน้าที่) ไม่ใช่ทั้ง MAC และ DAC มันตั้งอยู่บนหลัก least privilege จากคาบแรก
- เข้าถึงได้ เฉพาะตอนที่ต้องใช้ทำงานนั้นจริง ๆ
- ให้สิทธิ์โดยดูที่ จุดประสงค์ เป็นหลัก
ตัวอย่างสามข้อ
RunASของ Windows และsudoของระบบตระกูล Unix- หมอเห็นข้อมูลของเราได้เฉพาะตอนที่เรากำลังรักษากับหมอคนนั้น ยกเว้นกรณีฉุกเฉิน หมอจะเห็นได้ทั้งหมด
- อาจารย์ให้เกรดนิสิตได้เฉพาะในวิชาที่เกี่ยวข้อง
สังเกตว่าตัวอย่างทั้งสามข้อมีคำว่า เฉพาะตอนที่ อยู่ด้วยทุกข้อ
หมอคนเดิม คนไข้คนเดิม แต่สิทธิ์เปิดและปิดตามความสัมพันธ์ที่กำลังเกิดขึ้น นี่คือความต่างจาก DAC ที่ให้สิทธิ์แล้วสิทธิ์อยู่ยาว และต่างจาก MAC ที่ป้ายชั้นความลับติดอยู่กับตัวคน
sudo เป็นตัวอย่างที่เห็นชัดที่สุด เราเป็นคนเดิมทั้งก่อนและหลังพิมพ์ sudo แต่บทบาทที่สวมอยู่ไม่เหมือนกัน
จุดอ่อนของแต่ละแบบ
เคสสามเคสที่ทิ้งไว้ให้คิด แต่ละเคสชี้ไปที่โมเดลที่มีปัญหา
| เคส | ปัญหาของ |
|---|---|
| สายลับรัสเซียถูกเลื่อนขั้นเป็น CIA ระดับสูง จึงเข้าถึงทุกคดีได้ แม้แต่คดีที่ไม่ใช่ของตัวเอง | MAC |
| แพทย์เห็นเวชระเบียนของคนไข้ทุกคนในโรงพยาบาลได้เสมอ | MAC |
| สิทธิ์ของระบบกันไม่ให้พ่อแม่เห็นว่าลูกดูเนื้อหาที่ไม่เหมาะสม | DAC |
สองเคสแรกพังด้วยเหตุผลเดียวกัน คือ MAC ให้สิทธิ์ตามชั้น ไม่ได้ให้ตามความจำเป็น
พอเลื่อนขั้นแล้วชั้นสูงขึ้น ก็เห็นทุกอย่างในชั้นนั้น ทั้งที่งานจริงต้องการแค่คดีของตัวเอง คำตอบของทั้งสองเคสคือ RBAC ซึ่งถามว่า ตอนนี้กำลังทำหน้าที่อะไรอยู่ แทนที่จะถามว่า อยู่ชั้นไหน
เคสที่สามกลับด้าน DAC ให้เจ้าของข้อมูลคุมเอง และในระบบนั้นลูกคือเจ้าของ พ่อแม่จึงถูกกันออกไป ทั้งที่ในโลกจริงพ่อแม่คือผู้รับผิดชอบ DAC สมมติว่าเจ้าของข้อมูลกับผู้รับผิดชอบเป็นคนเดียวกันเสมอ ซึ่งไม่จริง
RBAC ในของจริง
แอปส่วนใหญ่เดินไปทาง RBAC กัน แต่มีปัญหาหนึ่งข้อที่ยังไม่มีคำตอบ — ไม่มีนิยามที่ชัดเจนว่าจะนิยาม role ยังไง แต่ละที่จึงทำกันคนละแบบ
- Unix/Linux อาจสร้างผู้ใช้หนึ่งคนต่อหนึ่งบริการ คือแปลง role เป็น user เช่น
www-dataสำหรับเว็บเซิร์ฟเวอร์ และftp-dataสำหรับ ftp - แอปพลิเคชัน อาจผูก role เข้ากับ method เช่นในการเขียนโปรแกรมเชิงวัตถุ
- เฟรมเวิร์กบางตัว ให้ผู้ออกแบบสร้าง role เองแล้วผูกสิทธิ์เข้ากับ role บางตัวถึงขั้นให้ผู้ใช้พิมพ์รหัสผ่านเพื่อเปลี่ยน role
ในระบบสมัยใหม่ การติดตั้งซอฟต์แวร์ต้องพิมพ์รหัสผ่านเพื่อขอ role ของผู้ดูแลระบบ ซึ่งก็คือรูปแบบสุดท้ายนั่นเอง
สามแบบยังไม่พอ
มีโมเดลใหม่ที่เพิ่มเข้ามาอีกชุด
Attribute-Based Access Control (ABAC) — ตัดสินจากคุณสมบัติสามกลุ่ม
| กลุ่ม | ตัวอย่าง |
|---|---|
| User Attributes | role, department, security clearance |
| Resource Attributes | ความอ่อนไหวของข้อมูล เช่น PII หรือ Public, project code |
| Environmental Attributes | เวลาของวัน, สถานที่ เช่นอยู่ในเครือข่ายองค์กรไหม, ชนิดของอุปกรณ์ |
ตัวอย่างนโยบายที่เขียนด้วย ABAC
Allow a user to access financial documents if their role is 'Accountant' AND they are accessing from a corporate-owned device AND it is during normal business hours.
อนุญาตให้เข้าถึงเอกสารการเงินได้ ถ้าบทบาทคือ Accountant และ เข้าถึงจากอุปกรณ์ของบริษัท และ อยู่ในเวลาทำการปกติ
OAuth 2.0 และ OpenID Connect (OIDC) — ผู้ใช้ให้สิทธิ์แอปของบุคคลที่สามเข้าถึงทรัพยากรของตัวเองบนอีกบริการหนึ่งได้อย่างจำกัด โดยไม่ต้องบอกรหัสผ่าน
Zero Trust Architecture (ZTA) — Never trust, always verify ตั้งสมมติฐานว่าไม่มีผู้ใช้หรืออุปกรณ์ไหนน่าเชื่อถือโดยปริยาย แม้แต่ตัวที่อยู่ในเครือข่ายองค์กรแล้ว
Don't extend trust easily ในคาบแรกบอกว่าอย่าเชื่อเซิร์ฟเวอร์ของตัวเอง และเคส Slammer ที่โรงไฟฟ้า Davis-Besse ก็พังเพราะทุกคนเชื่อว่า "อยู่ในเครือข่ายภายในแปลว่าปลอดภัย"
Zero Trust คือการเอาความไม่เชื่อนั้นมาเขียนเป็นสถาปัตยกรรม แทนที่จะเป็นแค่คำเตือน
เทียบสี่แบบในตารางเดียว
| Discretionary (DAC) | Mandatory (MAC) | Role-Based (RBAC) | Attribute-Based (ABAC) | |
|---|---|---|---|---|
| ใครคุม | เจ้าของ object | System / Admin | System / Admin | System / Admin |
| ตัดสินจาก | Identity | Labels | Job Function | Attributes |
| ความยืดหยุ่น | High | Low | Medium | Very High |
| เหมาะกับ | ไฟล์ส่วนตัว งานที่ทำร่วมกัน | ทหาร งานที่ต้องการความปลอดภัยสูง | องค์กรทั่วไป | ระบบสมัยใหม่ที่เงื่อนไขเปลี่ยนตลอด |
สังเกตว่า ความยืดหยุ่นสูงไม่ได้แปลว่าดีกว่า DAC ยืดหยุ่นสูงแต่เหมาะกับไฟล์ส่วนตัว ส่วน MAC ยืดหยุ่นต่ำที่สุดแต่เป็นตัวที่กองทัพใช้
ยิ่งยืดหยุ่น ยิ่งเขียนนโยบายผิดได้ง่าย และยิ่งตรวจสอบยากว่าตอนนี้ใครเข้าถึงอะไรได้บ้าง สำหรับระบบที่พลาดไม่ได้ ความยืดหยุ่นที่ต่ำคือข้อดี ไม่ใช่ข้อจำกัด
สิทธิ์ในระบบไฟล์
ของจริงที่ใกล้ตัวที่สุดคือสิทธิ์ของไฟล์
| Basic Unix/Linux | Windows (NTFS) |
|---|---|
r — read | Read |
w — write | Write |
x — execute (สำหรับโปรแกรม) | Execute |
x — search (สำหรับไดเรกทอรี) | Delete |
| change permission | |
| change ownership |
ทั้งสองฝั่งมีหมายเหตุกำกับ
- ฝั่ง Unix/Linux — รุ่นใหม่ ๆ รองรับสิทธิ์ที่ละเอียดกว่านี้ แต่ไม่ได้เปิดใช้มาตั้งแต่ต้น
- ฝั่ง Windows — ถ้าไม่ได้เป็นผู้ดูแล Windows Server ก็แทบไม่มีโอกาสได้เห็นสิทธิ์พวกนี้
x ในฝั่ง Unix ทำงานคนละอย่างกันระหว่างไฟล์กับไดเรกทอรี ทั้งที่เขียนเหมือนกัน
บนไฟล์ x แปลว่ารันโปรแกรมนี้ได้
บนไดเรกทอรี x แปลว่าเดินผ่านเข้าไปข้างในได้ ซึ่งเป็นคนละเรื่องกับ r ที่แปลว่าดูรายชื่อไฟล์ในนั้นได้
ผลคือไดเรกทอรีที่มี x แต่ไม่มี r จะเปิดไฟล์ข้างในได้ถ้ารู้ชื่อ แต่ ls ดูรายชื่อไม่ได้
ลองตอบดู: ระบบพวกนี้ใช้โมเดลไหน — Facebook Profile, Google Drive, ระบบไฟล์ของ Unix/Linux/Windows, ระบบลงทะเบียนของมหาวิทยาลัย
Facebook Profile และ Google Drive เป็น DAC เจ้าของโพสต์หรือเจ้าของไฟล์เลือกเองว่าจะให้ใครเห็น
ระบบไฟล์ของ Unix/Linux/Windows เป็น DAC เหมือนกัน เจ้าของไฟล์สั่ง chmod เองได้
ระบบลงทะเบียนของมหาวิทยาลัย เป็น RBAC นิสิตลงทะเบียนได้แต่แก้เกรดไม่ได้ อาจารย์กรอกเกรดได้เฉพาะวิชาที่สอน สิทธิ์มาจากหน้าที่ ไม่ได้มาจากความเป็นเจ้าของ
จุดที่น่าสังเกตคือ Google Drive มีทั้งสองอย่างปนกัน ตัวการแชร์ไฟล์เป็น DAC แต่ถ้าใช้ในบัญชีขององค์กร ผู้ดูแลตั้งกฎครอบไว้ได้ว่าห้ามแชร์ออกนอกองค์กร ซึ่งเป็น MAC ทับลงมาอีกชั้น
ส่วนที่ 4 — จากนโยบายไปเป็นของที่รันจริง
Access Control Matrix
ไม่ว่าจะเลือกโมเดลไหน สุดท้ายนโยบายทั้งหมดถูกแปลงเป็นตารางเดียวกัน เรียกว่า Access Control Matrix (ตารางสิทธิ์การเข้าถึง)
วิธีสร้างมีสามขั้น
- เอา subject หรือ role เป็น แถว
- เอาทรัพยากรเป็น คอลัมน์
- ใส่กฎลงในช่อง ตามนโยบายที่เขียนไว้
ตารางนี้เก็บได้สองแบบ และสองแบบนี้คือการหั่นตารางคนละทาง
- Access Control List (รายชื่อผู้มีสิทธิ์ที่ผูกกับตัวของ) — เก็บ ตามคอลัมน์
- Capability (โทเคนที่ผูกกับตัวคน) — เก็บ ตามแถว
ACL กับ Capability ต่างกันยังไง
| ACL | Capability | |
|---|---|---|
| ผูกกับ | object | subject |
| หน้าตา | ของชิ้นนั้นถือรายชื่อไว้ ว่าใครทำอะไรกับมันได้ | คนถือโทเคนหรือกุญแจไว้ |
| การให้สิทธิ์ | เพิ่มชื่อลงในรายการ | ส่งโทเคนหรือกุญแจให้อีกคน |
คำถามเดียวกันคือ ใครเข้าห้องเรียนนี้ได้
แบบ ACL — ชื่อฉันอยู่ในรายการที่ติดไว้หน้าห้อง
แบบ Capability — ฉันมีกุญแจของห้องนี้
ความต่างที่สำคัญที่สุดคือ ใครเป็นคนถือข้อมูลสิทธิ์ไว้
บัตรคอนเสิร์ตคือ capability ใครถือบัตรก็เข้าได้ คนตรวจบัตรไม่ต้องรู้จักชื่อเรา และเราส่งบัตรต่อให้เพื่อนได้ทันที
รายชื่อผู้มีสิทธิ์เข้างานคือ ACL คนตรวจต้องหาชื่อเราในรายการ เราส่งสิทธิ์ให้เพื่อนเองไม่ได้ ต้องให้คนคุมรายการเพิ่มชื่อให้
ACL ทำง่ายกว่า และเป็นแบบที่ระบบปฏิบัติการเกือบทั้งหมดเลือกใช้
แต่มีคำถามหนึ่งที่ ACL ตอบยากมาก คือ "ในระบบนี้ฉันเข้าถึงไฟล์อะไรได้บ้าง" เพราะต้องเปิดดูทุกไฟล์ในระบบแล้วหาชื่อตัวเองในรายการของแต่ละไฟล์
ฝั่ง capability ตอบคำถามนี้ได้ทันที เพราะสิทธิ์ทั้งหมดของเราอยู่ในมือเราอยู่แล้ว สไลด์ทิ้งช่องของ capability ไว้เป็นเครื่องหมายคำถามทั้งสองช่อง โดยไม่ได้เฉลย
ระบบปฏิบัติการเกือบทั้งหมด (ถ้าไม่ใช่ทั้งหมด) ใช้ ACL แล้วทิ้งคำถามไว้ว่า ทำไม
ระบบที่ใช้ capability มีอยู่จริง แต่คำที่ใช้อธิบายว่ามันอยู่ที่ไหนคือ in a museum
ลองดู ACL ในเครื่องตัวเอง
| ระบบ | คำสั่ง |
|---|---|
| Windows | cacls |
| macOS X | ls -le |
| Linux รุ่นใหม่ | getfacl และ setfacl |
และ Security-Enhanced Linux (SELinux) ทำได้ทั้ง MAC, DAC และ RBAC แต่มีหมายเหตุกำกับว่า การตั้งค่าไม่ใช่เรื่องง่าย
getfacl /etc/passwdผลที่ได้หน้าตาประมาณนี้
# file: etc/passwd
# owner: root
# group: root
user::rw-
group::r--
other::r--สามบรรทัดล่างคือคอลัมน์ของ /etc/passwd ในตาราง access control matrix นั่นเอง — เจ้าของอ่านเขียนได้ กลุ่มกับคนอื่นอ่านได้อย่างเดียว
ลองเทียบกับ ls -l /etc/passwd ที่ให้ -rw-r--r-- จะเห็นว่าเป็นข้อมูลชุดเดียวกัน แค่เขียนคนละรูปแบบ
โจทย์ที่ทิ้งไว้ท้ายส่วนนี้
คำถามคือ ระบบแบบ capability จะแก้ปัญหาพวกนี้ได้ไหม
- superuser เข้าถึงได้ทุกไฟล์ในระบบ รวมถึงไฟล์ที่ตัวเองไม่ได้สร้าง คิดว่าถูกต้องแล้วหรือ
- โปรแกรมประมวลผลคำเปิดไฟล์อะไรก็ได้ที่เราเปิดได้ รวมถึงไฟล์ไบนารี พูดอีกแบบคือ โปรแกรมนั้นก็คือตัวเรา ฟังดูถูกไหม
คำตอบที่ทิ้งไว้คือ
A practical capability-based system will solve a lot of security issues. However, there is none.
ระบบแบบ capability ที่ใช้งานได้จริงจะแก้ปัญหาความปลอดภัยได้เยอะมาก แต่มันไม่มีอยู่
และผลที่ตามมาคือ ถ้ามี capability-based system เราจะมีระบบที่ไม่ต้องมีผู้ดูแลระบบเลย
เวลาเราซื้อรถ รถเป็นของเราตั้งแต่วินาทีที่ดีลเลอร์ส่งกุญแจให้
แต่เรื่องนี้ไม่จริงกับคอมพิวเตอร์ Apple, Microsoft และ Google เข้าถึงระบบของเราได้โดยไม่ต้องขออนุญาต
ประโยคเรื่องโปรแกรมประมวลผลคำคือหัวใจของทั้งส่วนนี้
เวลาเราเปิดโปรแกรม ระบบไม่ได้ให้สิทธิ์กับ โปรแกรม แต่ให้สิทธิ์กับ เรา แล้วโปรแกรมยืมสิทธิ์ของเราไปทั้งก้อน โปรแกรมแก้ข้อความจึงลบไฟล์อะไรก็ได้ที่เราลบได้ ทั้งที่งานของมันคือแก้ข้อความ
นี่คือเหตุผลที่มัลแวร์ทำงานได้ผลนัก มันไม่ต้องเจาะสิทธิ์อะไรเลย แค่ทำงานในนามของเรา และหลักการ least privilege ข้อ 1 ในคาบแรกก็ถูกละเมิดตั้งแต่ต้น
ระบบแบบ capability จะกลับด้านเรื่องนี้ เพราะโปรแกรมต้องถือกุญแจของไฟล์ที่มันจะเปิดจริง ๆ ไม่ใช่ยืมพวงกุญแจของเราไปทั้งพวง — ซึ่งก็คือแนวคิดเดียวกับที่ระบบสิทธิ์ของแอปบนมือถือทำอยู่ทุกวันนี้
ส่วนที่ 5 — Security Models: แบบร่างที่ช่วยเขียนนโยบาย
มีหน้าที่เขียนว่า ตอนนี้คุณเรียนจบแล้ว เจ้านายเห็นว่าคุณเคยเรียนวิชานี้ เลยสั่งให้ทำนโยบายความปลอดภัยให้บริษัท คุณจะทำยังไง แล้วตอบตัวเองว่า Resign?
หน้านี้โผล่มาสองครั้ง คือก่อนเข้าเรื่อง security models และอีกครั้งหลังสรุปจบ
ถึงจะรู้ทุกอย่างในสามส่วนที่ผ่านมาแล้ว การเขียนนโยบายจริงก็ยังไม่ใช่งานง่าย
เพราะการรู้ว่ามี MAC, DAC, RBAC ไม่ได้บอกว่า องค์กรของเราควรใช้อันไหน และไม่ได้บอกว่าควรแบ่งชั้นข้อมูลยังไง
Security Model (แบบร่างระดับสูงที่ใช้เป็นแนวทางเขียนนโยบาย) จึงเข้ามาเป็นแนวทาง มันคือ แนวคิดระดับสูงที่ช่วยให้เข้าใจและระบุนโยบายได้ง่ายขึ้น และเป็น กรอบทั่วไปสำหรับกำหนดระบบนโยบาย
มีสองกรอบใหญ่
| กรอบ | ใช้กับ |
|---|---|
| Multilevel Security | ภายในองค์กรเดียวกัน |
| Multilateral Security | ระหว่างแผนก |
Multilevel Security — แบ่งเป็นชั้น
ใช้ภายในองค์กร ทำงานคู่กับ MAC และมีสองโมเดลที่ถูกเสนอไว้คือ Bell-LaPadula และ Biba
Bell-LaPadula — กันความลับรั่ว
หลักการคือ The system may leak the information ระบบอาจทำข้อมูลรั่วได้ ใช้กับการจัดชั้นความลับของข้อมูลทางทหารและข่าวกรอง เป็นแบบ High Watermark
มีสามคุณสมบัติ
| คุณสมบัติ | กฎ | ชื่อย่อ |
|---|---|---|
| The simple property | ห้าม process อ่านข้อมูลที่ชั้นสูงกว่า | no read up (NRU) |
| The *-property | ห้าม process เขียนข้อมูลลงไปที่ชั้นต่ำกว่า | no write down (NWD) |
| The tranquility property | ห้ามเปลี่ยนระดับความลับของ object ขณะที่ระบบกำลังประมวลผลมันอยู่ | declassify |
กฎข้อแรก ห้ามอ่านขึ้น เข้าใจง่าย คนชั้นล่างไม่ควรเห็นความลับของชั้นบน
กฎข้อสอง ห้ามเขียนลง สวนสัญชาตญาณ ทำไมคนที่รู้ความลับถึงเขียนลงไปข้างล่างไม่ได้
เพราะกฎนี้ไม่ได้กันคน มันกัน โปรแกรม เหตุผลที่ให้ไว้ตรง ๆ คือ เราแทบไม่เคยเขียนซอฟต์แวร์ที่เราใช้เอง ลองนึกดูว่าในเครื่องของเรามีโปรแกรมไหนบ้างที่เราเขียนเอง
ถ้ามัลแวร์เข้าไปรันด้วยสิทธิ์ระดับสูง แล้วเขียนไฟล์ลงมาที่ชั้นต่ำได้ ความลับก็ไหลออกไปทันที ระบบจึงต้องกันไว้ตั้งแต่ต้น
ระหว่างสงคราม นายพลสร้างแผนรบขึ้นมาโดยขอข้อมูลจากพลทหาร — นั่นคือ อ่านลง ซึ่งทำได้
แต่แผนที่ได้ ส่งลงไปให้ชั้นล่างไม่ได้ เพื่อกันข้อมูลรั่ว
พอแผนพร้อมแล้ว จึง declassify ลดชั้นความลับ แล้วส่งให้ทหารทุกคนใช้ออกรบได้
Biba — กันของเสียไหลขึ้น
หลักการคือ Information flowing from lower level may be malicious to the system ข้อมูลที่ไหลมาจากชั้นล่างอาจเป็นอันตรายต่อระบบ
Biba ดูแล integrity และไม่สนใจ confidentiality เป็นแบบ Low Watermark และคำอธิบายที่สั้นที่สุดคือ Bell-LaPadula กลับหัว
Never read down or write up
ห้ามอ่านลง และห้ามเขียนขึ้น
ให้ลองสังเกต low-watermark security ในระบบของตัวเองดู
เวลาดาวน์โหลดไฟล์จากอินเทอร์เน็ตบน macOS หรือ Windows แล้วเปิด ระบบจะขึ้นเตือนว่าไฟล์นี้มาจากอินเทอร์เน็ต
นั่นคือ Biba ตรง ๆ ไฟล์จากภายนอกถูกติดป้ายว่าอยู่ชั้นความน่าเชื่อถือต่ำ และระบบไม่ยอมให้มันไหลขึ้นไปทำงานในชั้นที่เชื่อถือได้ จนกว่าเราจะกดยืนยัน
macOS เรียกป้ายนี้ว่า quarantine attribute ส่วน Windows เรียกว่า Mark of the Web
ลองตอบดู: ใช้ Biba กับ Bell-LaPadula พร้อมกันในระบบเดียวได้ไหม
ในทางทฤษฎีได้ แต่ผลที่ได้แทบใช้งานไม่ได้
Bell-LaPadula บอกว่า ห้ามอ่านขึ้น ห้ามเขียนลง ส่วน Biba บอกว่า ห้ามอ่านลง ห้ามเขียนขึ้น พอเอามารวมกัน สิ่งที่เหลือคือ อ่านและเขียนได้เฉพาะในชั้นของตัวเองเท่านั้น
ผลคือแต่ละชั้นกลายเป็นเกาะที่ตัดขาดจากกันหมด ซึ่งปลอดภัยมากแต่ไม่มีข้อมูลไหลไปไหนได้เลย
ในทางปฏิบัติจึงต้องเลือกว่าจะให้น้ำหนักกับอะไรมากกว่า — ความลับหรือความถูกต้อง แล้วใช้อีกโมเดลเป็นส่วนเสริมเฉพาะจุดที่จำเป็น
Multilateral Security — กั้นระหว่างแผนก
ใช้ระหว่างแผนก โมเดลที่ยกมาคือ China Walls model
ที่มาคือกฎภายในของบริษัทการเงิน แนวคิดคือ ถ้าคนคนหนึ่งเพิ่งทำงานให้บริษัทหนึ่งในภาคธุรกิจหนึ่ง คนคนนั้นจะไปทำงานให้อีกบริษัทในภาคธุรกิจเดียวกันไม่ได้ในช่วงเวลาหนึ่ง
ในหลายประเทศ คนทำงานสายการเงินจึงแทบไม่ย้ายงาน (กฎนี้ไม่ได้ใช้ในประเทศไทย) และเรื่องนี้จัดอยู่ในหมวด privacy
China Wall ต่างจาก MAC และ DAC ตรงที่ สิทธิ์ขึ้นกับประวัติ ไม่ได้ขึ้นกับตัวคนหรือชั้นความลับ
ตอนเริ่มงานวันแรก ที่ปรึกษาคนหนึ่งเข้าถึงข้อมูลของทุกบริษัทได้เท่ากันหมด แต่พอแตะข้อมูลของธนาคาร A ปุ๊บ กำแพงก็ขึ้นทันที ปิดธนาคารอื่นทั้งหมดในกลุ่มเดียวกัน
สิทธิ์จึง แคบลงเรื่อย ๆ ตามสิ่งที่เคยเข้าถึง ไม่ใช่ถูกกำหนดไว้ตั้งแต่ต้น
China Wall กับการทำวิศวกรรมย้อนกลับ
โมเดลเดียวกันนี้ใช้กับ Reverse Engineering of Software ได้
- ทีม A ศึกษาซอฟต์แวร์ต้นฉบับ แล้วเขียนเป็นข้อกำหนด (specification)
- ทีม B ใช้ข้อกำหนดนั้นสร้างซอฟต์แวร์ตัวใหม่
- ทีม B ไม่เห็นซอฟต์แวร์ต้นฉบับเลยแม้แต่นิดเดียว
กำแพงตรงนี้ไม่ได้กันความลับ มันสร้าง หลักฐานทางกฎหมาย
ถ้าทีม B ไม่เคยเห็นโค้ดต้นฉบับ ก็พิสูจน์ได้ว่าโค้ดใหม่ไม่ได้ลอกมา วิธีนี้มีชื่อเรียกในวงการว่า clean room design และเป็นวิธีที่บริษัทใช้ทำ BIOS ของ IBM PC เลียนแบบได้อย่างถูกกฎหมายในยุค 80
ครั้งหนึ่ง โปรแกรมประมวลผลคำที่ดีที่สุดคือ WordPerfect ตอนที่ WordPerfect 5 ออก Microsoft ไปงานแถลงข่าวเพื่อ ถ่ายภาพหน้าจอและจดรายการฟีเจอร์
ไม่กี่เดือนต่อมา Microsoft ปล่อย Word 6.0 โดยกระโดดจาก 2.0 ข้าม 3.0 ถึง 5.0 ไปเลย พร้อมฟีเจอร์ทุกอย่างที่พบใน WordPerfect 5
มีเคสคล้ายกันระหว่าง Lotus 1-2-3 เวอร์ชัน 4.0 กับ Excel 5.0 และอื่น ๆ อีก
ข้อความที่ติดมากับเรื่องนี้คือ Microsoft was (is) known as an evil empire in reverse engineering popular software
ส่วนที่ 6 — เอาทั้งหมดมาต่อกัน
สมมติว่าต้องเขียนนโยบายความปลอดภัยจริง ๆ ขั้นตอนมีสี่ขั้น
วิเคราะห์ว่าระบบของเราเข้ากับแบบร่างไหน — Bell-LaPadula, Biba, China Wall หรืออื่น ๆ
คำถามที่ช่วยตัดสินคือ ระบบนี้กลัวข้อมูลรั่วมากกว่า หรือกลัวข้อมูลถูกแก้มากกว่า และมีเรื่องผลประโยชน์ทับซ้อนระหว่างกลุ่มไหม
โจทย์ที่ให้ไว้คือ
Our university is launching a new, all-in-one online portal. This portal will handle everything from student registration and grade management to faculty collaboration and research data storage. The system must protect student privacy, ensure academic integrity, and manage potential conflicts of interest among researchers.
มหาวิทยาลัยกำลังจะเปิดพอร์ทัลออนไลน์ตัวใหม่แบบรวมทุกอย่างไว้ที่เดียว ตั้งแต่การลงทะเบียนของนิสิตและการจัดการเกรด ไปจนถึงการทำงานร่วมกันของอาจารย์และการเก็บข้อมูลวิจัย ระบบต้องปกป้องความเป็นส่วนตัวของนิสิต รักษาความซื่อสัตย์ทางวิชาการ และจัดการผลประโยชน์ทับซ้อนที่อาจเกิดขึ้นระหว่างนักวิจัย
งานที่ต้องทำมีสี่ข้อ
- นิยาม security policy ของพอร์ทัลนี้
- ระบุ subject และ object
- เลือก Access Control Model หรือ Security Framework หลัก
- ทำ Access Control Matrix
โจทย์ใส่คำสำคัญไว้สามคำ ซึ่งชี้ไปที่สามเรื่องในคาบนี้
| คำในโจทย์ | ชี้ไปที่ |
|---|---|
| protect student privacy | Confidentiality |
| ensure academic integrity | Integrity |
| conflicts of interest among researchers | China Wall |
คำที่สามคือคำที่คนมองข้ามบ่อยที่สุด ถ้าอาจารย์คนหนึ่งเป็นที่ปรึกษาให้ทีมวิจัยที่แข่งกันสองทีม ระบบต้องกันไม่ให้เขาเห็นข้อมูลของทีมที่สองหลังจากแตะข้อมูลของทีมแรกแล้ว — ซึ่ง MAC และ DAC ทำไม่ได้ ต้องใช้ China Wall
Authorization ต่างจาก Authentication
- Authentication แชร์ข้ามระบบได้ ส่วน Authorization เป็น Application Specific —
Secure in App A ≠ Security in App B - การตัดสินอิงกับ security policy และ Type Enforcement คือกลไกที่บังคับใช้นโยบาย เทียบได้กับตำรวจกับกฎหมาย
- Policy คือแนวทางที่เลือกมาจากทางเลือกหลายทาง สรุปสั้นว่า ไม่รู้จะตัดสินใจยังไง ก็ไปถามนโยบาย
- Security policy (BISHOP) คือข้อความที่แบ่งสถานะของระบบเป็นกองที่อนุญาตกับกองที่ไม่อนุญาต
- Secure system (BISHOP) คือระบบที่เริ่มในสถานะที่อนุญาต และเข้าสู่สถานะที่ไม่อนุญาตไม่ได้
นโยบายตัดสินจาก CIA
- Confidentiality — ใครอ่านได้ · Integrity — ใครเขียนหรือแก้ได้ · Availability — เช่น fault tolerant
- โจทย์ข้อสอบ: ข้อสอบรั่วคือละเมิด confidentiality ส่วนการสลับข้อสอบคือละเมิด integrity
- เผาข้อสอบทิ้งรักษาได้ทั้งสองข้อ แต่พัง availability
ใครเขียนนโยบาย — Access Control Models
- MAC ผู้ใช้เชื่อถือไม่ได้ ผู้ดูแลคุมทั้งหมด ใช้ sensitivity label คุมทั้ง import และ export
- DAC เจ้าของรับผิดชอบข้อมูลของตัวเอง
- RBAC ตั้งอยู่บน least privilege ให้สิทธิ์ตามหน้าที่และเฉพาะตอนที่ต้องใช้ เช่น
sudo,RunAS, หมอกับคนไข้ที่กำลังรักษาอยู่ - จุดอ่อน: สายลับที่เลื่อนขั้นแล้วเห็นทุกคดี และแพทย์ที่เห็นเวชระเบียนทุกคน เป็นปัญหาของ MAC ส่วนพ่อแม่ที่ถูกกันไม่ให้เห็นข้อมูลลูก เป็นปัญหาของ DAC
- RBAC ไม่มีนิยามที่ชัดเจนว่าจะนิยาม role ยังไง แต่ละที่ทำคนละแบบ เช่น
www-data,ftp-data - ABAC ตัดสินจาก user / resource / environmental attributes · OAuth 2.0 กับ OIDC ให้สิทธิ์แอปอื่นแบบจำกัดโดยไม่ต้องบอกรหัสผ่าน · Zero Trust —
Never trust, always verify - ความยืดหยุ่น: DAC High, MAC Low, RBAC Medium, ABAC Very High
- สิทธิ์ไฟล์ Unix คือ
rwxโดยxบนไดเรกทอรีแปลว่า search ส่วน NTFS มี Delete, change permission และ change ownership เพิ่ม
จากนโยบายไปเป็นของจริง
- Access Control Matrix — แถวคือ subject คอลัมน์คือทรัพยากร ในช่องคือกฎ
- เก็บได้สองแบบ ACL ตามคอลัมน์ ผูกกับ object และ Capability ตามแถว ผูกกับ subject
- ACL ทำง่ายกว่าและเป็นแบบที่ OS เกือบทั้งหมดใช้ แต่ตอบยากว่า "ฉันเข้าถึงไฟล์อะไรได้บ้าง"
- ระบบแบบ capability ที่ใช้จริงได้จะแก้ปัญหาได้เยอะ แต่มันไม่มีอยู่ และถ้ามี ก็จะได้ระบบที่ไม่ต้องมีผู้ดูแลระบบ
- คำสั่งดู ACL: Windows
cacls· macOSls -le· Linuxgetfaclและsetfacl· SELinux ทำได้ทั้ง MAC, DAC, RBAC แต่ตั้งค่ายาก - ปัญหาที่ยังค้าง: superuser เข้าถึงได้ทุกไฟล์ และโปรแกรมประมวลผลคำเปิดไฟล์อะไรก็ได้ที่เราเปิดได้ — โปรแกรมนั้นก็คือตัวเรา
Security Models
- Multilevel ใช้ในองค์กร ทำงานคู่กับ MAC มีสองตัวคือ Bell-LaPadula และ Biba
- Bell-LaPadula — High Watermark, กันความลับรั่ว,
no read upและno write downบวก tranquility property ที่ห้ามเปลี่ยนชั้นระหว่างประมวลผล - Biba — Low Watermark, ดู integrity ไม่สนใจ confidentiality,
never read down or write upคือ Bell-LaPadula กลับหัว - Multilateral ใช้ระหว่างแผนก โมเดลคือ China Walls สิทธิ์แคบลงตามประวัติที่เคยเข้าถึง
- China Wall กับ reverse engineering: ทีม A อ่านของเดิมแล้วเขียน spec ทีม B สร้างใหม่จาก spec โดยไม่เห็นของเดิมเลย
- เคส WordPerfect 5 ที่ Microsoft ถ่ายภาพหน้าจอจากงานแถลงข่าว แล้วออก Word 6.0 ข้ามจาก 2.0 และเคส Lotus 1-2-3 4.0 กับ Excel 5.0
สี่ขั้นตอนของการทำนโยบาย
- วิเคราะห์ security model ของระบบ
- เอามาสร้าง access control model
- แปลงเป็น access control matrix
- บังคับใช้ด้วย type enforcement ที่เหมาะสม