Các câu lệnh (Commands)

Một phần của tài liệu an ninh cơ sở dữ liệu (Trang 46 - 49)

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.

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

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) (adsbygoogle = window.adsbygoogle || []).push({});

if

read in (s2, o) and iread in (s1, s2) then

enter read into (s1, o) End

Một phần của tài liệu an ninh cơ sở dữ liệu (Trang 46 - 49)