Một trạng thái hệ thống đƣợc thay đổi thông qua câu lệnh. Harrion cùng đồng nghiệp đã đƣa ra mẫu câu lệnh gồm hai phần: phần điều kiện và phần thao tác. Phần điều kiện chỉ ra các ràng buộc phải đƣợc thoả mãn, các thao tác đƣợc chỉ ra trong phần thứ hai. Các điều kiện thƣờng kiểm tra các giá trị của một vài bộ phận ma trận truy cập
Cú pháp câu lệnh trong mô hình an ninh này nhƣ sau:
command c(x1,...,xk) if r1 in A[s1,o1] and if r2 in A[s2,o2] and . ... if rm in A[sm,om] and then op1 ... opn end Trong đó: r1, r2, …, rm là các chế độ truy cập;
s1, s2,…, sm và o1, o2,…, om là các chủ thể và đối tƣợng xuất hiện trong danh
sách tham số c(x1, x2, …, xk).
Phần điều kiện của lệnh kiểm tra liệu các quyền lợi truy cập đặc biệt có tồn tại không, danh sách điều kiện có thể là rỗng.
Nếu tất cả điều kiện thỏa mãn thì tuần tự các phép toán sẽ đƣợc thực hiện.
Mỗi lệnh chứa ít nhất một phép toán.
Việc thực hiện một câu lệnh c(x1,...,xk) trên một trạng thái Q=(S,O,A) sinh ra việc chuyển trạng thái Q‟, nhƣ vậy tồn tại một tập trạng thái Q1, Q2,..., Qn sao cho: Với Q‟ đƣợc tổ hợp từ các trạng thái Qi với i=1..n nhƣ sau:
Q= Q0 | op1*Q1 |op2* Q2 |... |opn *Qn=Q‟ Trong đó:
opj * là toán tử sơ cấp op
(x1,...,xk) là các tham số mặc định trong định nghĩa khi gọi lệnh. Nếu phần điều kiện của lệnh không thoả mãn thì lệnh sẽ không có hiệu quả và Q‟=Q.
48 Trong khi dùng 6 lệnh đã định nghĩa trên, các lệnh khác nhau có thể đặc tả để cung cấp các chức năng tốt nhất với yêu cầu bảo mật của hệ thống.
Ví dụ 1: Chúng ta giả sử rằng mỗi chủ thể là một quá trình, và các đối tƣợng là các tệp tin. Mỗi tệp tin đƣợc sở hữu bởi một quá trình, chủ của mỗi tệp tin có cùng một kiểu quyền own với các tệp tin. Các quyền khác là read, write, execute.
(1) Một quá trình có thể tạo một tệp tin mới. Quá trình tạo tệp tin là chủ sở hữu của tệp tin đó. Thể hiện:
Command CREATE(process, file) Create object file
Enter own into(process, file) End
(2) Chủ của một tệp tin có thể gán bất kỳ quyền nào đến tệp tin đó (ngoài own) cho bất kỳ chủ thể nào (bao gồm bản thân chủ nhân đó). Vì thế chúng ta có ba câu lệnh sau:
Command CONFERr(owner, friend, file) If own in (owner, file)
Then enter r into A[friend, file] End
Với r là read, write, execute; r ở đây không là một tham số (mô hình này chỉ cho phép các đối tƣợng là các tham số).
(3) Tƣơng tự, chúng ta có ba câu lệnh để ngƣời chủ của một tệp tin có thể thu hồi, hủy bỏ quyền truy cập của các chủ thể khác vào trong tệp tin đó.
Command REVOKEr(owner, friend, file) If own in A[owner, file]
Then delete r from A[friend, file] End
49
Ví dụ 2: Giả sử ban đầu có 2 quá trình Sam, Joe, và không có tệp tin nào đƣợc tạo ra. Giả sử rằng không có quá trình nào có quyền với chính nó hoặc với quá trình khác.
Ma trận ban đầu
Giờ, Sam tạo 2 tệp tin với tên Code và Data, và cho Joe có quyền Execute Code và Read Data. Tuần tự các câu lệnh sau:
Create(Sam, Code) Create(Sam, Data)
Conferexecute(Sam, Joe, Code) Conferread(Sam, Joe, Data)
Ví dụ 3: Chế độ truy cập “gián tiếp” (indirect). Chủ thể s1 có thể truy cập vào đối tƣợng o một cách gián tiếp nếu có một chủ thể s2 nào đó có quyền truy cập vào o, và s1
có quyền gián tiếp với s2. Thể hiện: Command IREAD(s1, s2, o)
if
read in (s2, o) and iread in (s1, s2) then
enter read into (s1, o) End
50