Điều khiển truy cập bắt buộc

Trong khoa học máy tính, kỹ thuật **điều khiển truy cập bắt buộc** (*[[tiếng Anh]]: mandatory access control - viết tắt là MAC*) được dùng để bảo vệ và ngăn chặn các quy trình máy tính, dữ liệu, và các thiết bị hệ thống khỏi sự lạm dụng. Kỹ thuật này có thể mở rộng và thay thế cho kỹ thuật điều khiển truy cập tùy quyền đối với các phép truy cập và sử dụng hệ thống tập tin (*file-system permissions *) cùng những khái niệm về người dùng và nhóm người dùng.

Đặc trưng quan trọng nhất của MAC bao hàm việc từ chối người dùng toàn quyền truy cập / sử dụng tài nguyên do chính họ kiến tạo. Chính sách an ninh của hệ thống (như đã được viên quản lý (*administrator*) quy định) hoàn toàn quyết định các quyền truy cập được công nhận, và một người dùng không thể tự hạn chế quyền truy cập vào các tài nguyên của họ hơn những gì mà viên quản lý chỉ định. (Các hệ thống dùng điều khiển truy cập tùy quyền cho phép người dùng toàn quyền quyết định quyền truy cập được công nhận cho các tài nguyên của họ, có nghĩa là họ có thể (do tình cờ hay do ác ý) ban quyền truy cập cho những người dùng bất hợp pháp.)

Mục đích của MAC là định nghĩa một kiến trúc mà trong đó nó đòi hỏi sự đánh giá tất cả các nhãn hiệu có liên quan đến an ninh (*security-related labels*) và đưa ra những quyết định dựa trên cơ sở ngữ cảnh của các thao tác cùng các nhãn hiệu dữ liệu (*data labels*) tương đồng. Kiến trúc FLASK và những kiến trúc Cơ cấu tổ chức tổng quát đối với điều khiển truy cập (*Generalized Framework for Access Control - GFAC*), đi đôi với MAC, trở thành những kỹ thuật khả thi cho những hệ thống an ninh đa tầng cấp (*multilevel security systems*).

Một kiến trúc như vậy sẽ ngăn chặn một người dùng đã được xác thực, hoặc một quy trình tại một phân hạng cụ thể nào đấy (*classification*), hoặc có một mức độ tin cẩn (*trust-level*) nhất định nào đấy, không cho họ truy cập thông tin, truy cập các quy trình (*processes*) hoặc truy cập các thiết bị (*devices*) ở một tầng cấp khác. Kết quả của việc này là nó cung cấp cho chúng ta một cơ chế chính sách ngăn chặn đối với người dùng và các quy trình, hoặc biết, hoặc chưa biết (lấy ví dụ, một chương trình ứng dụng lạ, chưa từng thấy (*unknown program* có thể bao hàm một chương trình ứng dụng không đáng tin (*untrusted application*) và hệ thống phải theo dõi, giám sát và/hay khống chế những truy cập của nó vào các thiết bị và các tập tin).

Những yêu cầu của một kiến trúc trong đó đòi hỏi sự phân tách giữa dữ liệu và các thao tác bên trong một máy tính bao gồm:
* Không tránh né hoặc qua mắt được. (*non-bypassable*)
* Có thể đánh giá và so sánh được (*evaluatable*) (để xác định tính hữu dụng và tính có hiệu lực của một chính sách)
* Luôn luôn được khởi động do yêu cầu - không tự động (*always-invoked*) (để ngăn ngừa việc tránh né những kiểm duyệt của hệ thống)
* Chống can thiệp bên ngoài - như xáo trộn, giả mạo, quấy nhiễu v.v. (*tamper-proof*)

## Những thực thi theo xu hướng MAC
* Một đề án nghiên cứu của NSA gọi là **SELinux** (Linux với nâng cấp về anh ninh (*Security-Enhanced Linux*)) xây dựng thêm kiến trúc điều khiển truy cập bắt buộc vào trong bộ điều hành trung tâm của hệ thống điều hành Linux. Trong phiên bản 4 của Linux cấp kinh doanh của Red Hat (*Red Hat Enterprise Linux - viết tắt là RHEL*) và cả trong những phiên bản sau này, các nhân viên sản xuất phần mềm đã cho biên dịch SELinux vào trong bộ điều hành trung tâm của nó. Bộ mã nguồn tiêu chuẩn của bộ điều hành trung tâm tại kernel.org đều có chứa mã nguồn của SE Linux trong nội dung của nó. SE Linux có khả năng hạn chế tất cả các quy trình trong hệ thống, song do muốn đảm bảo tính sử dụng dễ dàng của hệ điều hành, RHEL chỉ hạn chế những chương trình ứng dụng dễ bị tấn công nhất mà thôi.
* SUSE Linux (hiện thời được hỗ trợ và bảo quản bởi công ty Novell) có cho thêm phần thực thi của MAC vào trong nó, và phần thực thi này được gọi là AppArmor. AppArmor sử dụng một đặc trưng của phiên bản 2.6 bộ điều hành trung tâm Linux được gọi là LSM - Giao diện cho các môđun về anh ninh trong Linux - (*Linux Security Modules interface*). LSM cung cấp API với bộ điều hành trung tâm và nó cho phép các môđun trong mã nguồn của bộ điều hành trung tâm chi phối điều khiển truy cập. AppArmor không có khả năng hạn chế tất cả các chương trình ứng dụng, và mã nguồn của nó cũng chưa được sáp nhập với mã nguồn bộ điều hành trung tâm tại kernel.org.
* Bắt đầu từ phiên bản 5.0, công trình của đề án TrustedBSD khởi công được sáp nhập vào các phát hành của hệ điều hành FreeBSD. Sự phát triển công trình là một công việc chưa hoàn thành và vẫn còn đang được tiếp tục tiến hành (*work in progress*). Các mô hình thực hiện cũng như các năng lực trong phần mềm về truy cập an ninh càng ngày càng trở nên tốt hơn. MAC trong FreeBSD đến với người dùng với những cấu trúc bố trí trước của MAC hỗ trợ việc thực hiện những mô hình MAC như mô hình tính hoàn chỉnh của Biba (*Biba Integrity Model*) và mô hình An ninh đa tầng (*Multi-Level Security*).
* Hệ điều hành **Trusted Solaris** (*Solaris Tin cẩn*) của công ty Sun sử dụng một cơ chế điều khiển truy cập bắt buộc và được thi hành ở cơ sở hạ tầng của hệ thống (*mandatory and system-enforced access control mechanism - MAC*), trong đó sự cho phép sử dụng thông tin bí mật (*clearance*) và các nhãn hiệu được dùng để đảm bảo hiệu lực của chính sách an ninh. Những chương trình ứng dụng mà người dùng vận hành được phối hợp với mức độ an ninh của phiên giao dịch mà người dùng đang làm việc. Truy cập vào thông tin, vào chương trình ứng dụng, và vào các thiết bị đều được quản lý và chỉ có thể được ban phép cho tầng cấp an ninh tương đồng hoặc thấp hơn mà thôi. MAC ngăn chặn người dùng quyền viết vào các tập tin ở các tầng thấp hơn (*writing to files at lower levels*) và đảm bảo hiệu lực của việc này bằng các chính sách an ninh tại cơ sở, địa điểm. Không ai có quyền vượt qua trừ khi họ được ủy quyền đặc biệt hoặc có những đặc quyền.

## Các kiến trúc MAC trong quá khứ

Hiện có vài hệ điều hành chuyên đề về an ninh (*security-focused operating systems*) thực hiện MAC, và nó tạo nên một phần trung tâm của các hệ điều hành dùng kiến trúc FLASK.

## Ghi chú

## So sánh
* Điều khiển truy cập tùy quyền (*Discretionary access control* - DAC)
* Điều khiển truy cập trên cơ sở vai trò (*Role-Based Access Control - RBAC*)
* Bảo quản an ninh trên cơ sở năng lực tiềm tàng (*Capability-based security*)

## Xem thêm
* Phân hạng an ninh trong phạm trù an ninh (*security classification*)
* Tuân thủ phân loại trong phạm trù an ninh (*type enforcement*)
* FreeBSD
* TrustedBSD
* Linux với nâng cấp về an ninh (*Security Enhanced Linux*)
* Điều khiển truy cập dùng tổ hợp chính sách (*Rule-Set-Based Access Control - RSBAC*)
* Các mô hình an ninh của thao tác (*Security Modes of Operation*)
* Mô hình an ninh của Bell-La Padula (*Bell-La Padula security model*)
* An ninh đa tầng cấp (*Multi-Level Security - MLS*)
* Điều khiển truy cập trên cơ sở tổ chức (*Organisation-Based Access Control - Or-BAC*)
* Mô hình tính hoàn chỉnh của Biba (*Biba Integrity Model*) 
* Mô hình bảo vệ sử dụng sự ban quyền và sự sử dụng quyền (*Take-Grant Protection Model*)
* Mô hình tính hoàn chỉnh của Clark-Wilson (*The Clark-Wilson Integrity Model*)
* Mô hình của Graham-Denning (*Graham-Denning Model*)
* Systrace

## Liên kết ngoài
* Weblog post  on the how virtualization can be used to implement Mandatory Access Control.