Bài toán kiểm chứng tính đúng đắn giữa thiết kế và cài đặt chính sách RBAC

Một phần của tài liệu Kiểm chứng sự tuân thủ giữa đặc tả điều khiển truy cập và cài đặt (Trang 35)

Từ khi ra đời cho đến nay, điều khiển truy cập dựa trên vai trò đã có những bƣớc phát triển mạnh mẽ từ mức khái niệm đến tạo thành qui chuẩn và đƣợc cài đặt trong hầu hết các hệ thống công nghệ thông tin. Trong thập kỉ trƣớc đã có hàng trăm bài báo nghiên cứu và tạo nên cuộc cách mạng trong điều khiển truy cập. Một trong những chủ đề đƣợc nhiều tác giả quan tâm đó là chủ đề về kiểm chứng tính đúng đắn trong mô tả các luật RBAC.

Hai tác giả E. Martin và T. Xie đã có một loạt các nghiên cứu về kiểm thử các chính sách trong RBAC đƣợc mô tả theo chuẩn XACML. Hai tác giả đã đƣa ra cách kiểm chứng chính sách dựa trên mô hình lỗi. Đó là một kĩ thuật mô hình hóa khi chính sách điều khiển truy cập có thể gây ra lỗi [24]. Các lỗi chính sách có thể đƣợc phân chia thành hai loại: lỗi về mặt cú pháp (syntactic fault) và lỗi về mặt ngữ nghĩa (semantic fault). Lỗi về mặt ngữ nghĩa rất khó nhận biết, thƣờng liên quan đến việc sử dụng không đúng các cấu trúc lô gic trong ngôn ngữ đặc tả chính sách. Trong khi đó lỗi về mặt cú pháp thƣờng dễ nhận biết hơn, đó là các lỗi liên quan đến cấu trúc các chính sách không đúng theo qui chuẩn của ngôn ngữ mô tả. Hai tác giả này dựa trên mô hình lỗi của chính sách điều khiển truy cập đã phát triển công cụ hỗ trợ kiểm thử hoán đổi (mutation testing), công cụ này tự động kiểm thử các chính sách để tìm ra lỗi bằng cách áp dụng các phép toán hoán đổi.

Hai tác giả cũng đƣa ra tiêu chuẩn phủ các cấu trúc đối với các chính sách XACML dựa trên việc xác định các chính sách riêng đƣợc liên quan khi đánh giá một yêu cầu [25]. Nếu không có yêu cầu nào đƣợc đánh giá đối với một qui tắc khi kiểm thử có nghĩa là quy tắc đó đã không đƣợc kiểm thử hết và có thể sẽ gây ra lỗi. Vì vậy việc sinh các yêu cầu là rất quan trọng để đảm bảo mỗi qui tắc đều đƣợc đánh giá bởi ít nhất một yêu cầu. Trong XACML có ba loại cấu trúc chính: chính sách, qui tắc cho mỗi chính sách, và điều kiện cho mỗi qui tắc này. Để tự động đánh giá việc bao phủ các cấu trúc, hai tác giả đã phát triển một công cụ đánh giá đƣợc cài đặt theo chuẩn mã nguồn mở XACML của Sun [25].

Ngoài ra, còn có những nghiên cứu về việc chứng minh sự phù hợp về các chính sách điều khiển truy cập đƣợc mô tả theo ngôn ngữ XACML [20]. Sự phù hợp này đƣợc

đánh giá dựa trên sự phù hợp về liên kết các qui tắc và sự phù hợp của các đặc điểm của điều khiển truy cập.

Sự phù hợp về liên kết các qui tắc [rule binding] đảm bảo rằng các chƣơng trình cài đặt chính sách điều khiển truy cập theo ngôn ngữ XACML từ chối các yêu cầu của ngƣời dùng truy cập đến các tài nguyên không đƣợc mô tả trong các chính sách. Trong RBAC, việc kiểm tra đƣợc tiến hành theo hai tính chất chính của RBAC. Tính chất đầu tiên là tính chất cho phép các vai trò: một đối tƣợng không bao giờ có một vai trò hoạt động không đƣợc gán cho ngƣời dùng nó. Tính chất thứ hai là đối tƣợng truy cập các tính chất đƣợc phép: một chủ thể s có thể thực hiện một phép toán op trên đối tƣợng o nếu có một vai trò r trong tập các vai trò của chủ thể, và có một sự cho phép đƣợc gán cho r cho phép thực thi phép toán op trên o [20].

Kiểm tra sự phù hợp của các đặc điểm của điều khiển truy cập. Các tác giả tập trung vào hai tính chất có thể kiểm thử đƣợc của bất kì mô hình điều khiển truy cập nào đó là tính an toàn và tách biệt các nhiệm vụ. Tính an toàn: Dựa trên các qui tắc ràng buộc của điều khiển truy cập, sẽ kiểm tra liệu có sự vi phạm đặc quyền nào của các truy cập đƣợc mô tả trong đặc tả XACML hay không. Thuật toán sẽ xác định xem có bất kì sự kết hợp nào của các qui tắc sẽ cho phép truy cập không đƣợc phép so với các chính sách điều khiển truy cập. Tính tách biệt các nhiệm vụ (Separation of Duties - SOD): chính sách này đảm bảo rằng bất kì chủ thể s nào trong nhóm A sẽ không đƣợc truy cập đến các đối tƣợng trong nhóm X nếu s cũng là thành viên của nhóm B. Việc kiểm tra này sẽ xác định có một phép gán chủ thể nào trong XACML cho phép một chủ thể s đang là thành viên của nhóm A và B truy cập đến đối tƣợng trong nhóm X hay không, nếu nhƣ đã có một ràng buộc đƣợc định nghĩa [20].

Tuy nhiên, việc kiểm chứng về sự phù hợp giữa mô tả hình thức của các chính sách RBAC và cài đặt các chính sách này trong các ngôn ngữ lập trình cụ thể chƣa thực sự nhận đƣợc nhiều sự quan tâm. Trong nghiên cứu của Vincent C. Hu, D. Richard Kuhn, và Tao Xie đề xuất kiểm chứng tính chất của mô hình điều khiển truy cập bằng cách đƣa ra một cấu trúc chuẩn hóa của điều khiển truy cập, kiểm chứng tính chất và tự động tạo ra các test case [19]. Các tác giả biểu diễn mô hình điều khiển truy cập theo ngôn ngữ đặc tả của bộ kiểm chứng và biểu diễn các tính chất của điều khiển truy cập theo biểu thức thời gian. Sau đó sẽ dùng công cụ kiểm chứng để kiểm chứng các tính chất của mô hình điều khiển truy cập và tạo ra các test case bằng cách kết hợp các mảng theo kiểm chứng. Cách tiếp cận này cho phép kiểm chứng đƣợc tính đúng đắn của mô hình thiết kế RBAC, đƣa ra các test case để kiểm thử chƣơng trình cài đặt, nhƣng không kiểm chứng đƣợc sự phù hợp giữa cài đặt các chính sách RBAC và thiết kế.

Frode Hansen và Vladimir Oleshchuk cũng đề xuất một phƣơng án kiểm chứng sự phù hợp giữa các chính sách RBAC và cài đặt dựa trên hệ thống kiểm thử mô hình SPIN [21]. Tuy nhiên các tác giả chỉ tập trung vào việc kiểm chứng các luật không vi phạm các chính sách an ninh. Một giới hạn nữa của phƣơng pháp này là cần phải mô tả các chính sách RBAC theo lôgic thời gian tuyến tính và chƣơng trình cài đặt RBAC đƣợc viết theo ngôn ngữ hình thức PROMELA – ngôn ngữ không đƣợc phổ biến trong các sản phẩm thƣơng mại.

Các tác giả Trƣơng Ninh Thuận, Nguyễn Việt Hà và Phạm Tuấn Hƣng đã đƣa ra một giải pháp để kiểm tra sự phù hợp giữa việc cài đặt ứng dụng phần mềm có chứa các ràng buộc RBAC và mô tả của các chính sách này trong cơ sở dữ liệu RBAC [26]. Các tác giả đã sử dụng cây cú pháp trừu tƣợng (Abstract Syntax Tree) để phân tích mã nguồn của chƣơng trình và đặc tả các chính sách cho phép ngƣời dùng trong phần mềm sử dụng RBAC. Cách tiếp cận này tạo ra một phƣơng pháp để kiểm chứng việc cài đặt các chính sách RBAC trong các ngôn ngữ máy tính phổ biến hiện nay nhƣ C++, Java…

Chỉ nhằm mục đích kiểm tra sự phù hợp giữa đặc tả các chính sách và việc cài đặt các chính sách này trong thực tế, các tác giả xem xét cơ sở dữ liệu các chính sách RBAC đã đƣợc thiết kế và đƣợc kiểm chứng tính đúng đắn. Trong cơ sở dữ liệu RBAC, các luật đƣợc viết theo đúng cú pháp và không mâu thuẫn với nhau. Ngoài ra các luật đều thỏa mãn phù hợp về liên kết qui tắc và phù hợp về các đặc điểm của điều khiển truy cập.

Phƣơng pháp này có thể đƣợc mô tả một cách khái quát qua các bƣớc sau:

- Xem xét mã nguồn của chƣơng trình dƣới góc độ của RBAC. Để làm đƣợc điều này, các tác giả định nghĩa ngôn ngữ trừu tƣợng đƣợc sử dụng cho việc mô tả cài đặt RBAC đƣợc gọi là LRBAC. Ngôn ngữ này chỉ tập trung thể hiện các đặc trƣng của RBAC và bỏ qua các cú pháp của các ngôn ngữ lập trình thông thƣờng. Sau đó sẽ chuyển mã nguồn của chƣơng trình dựa trên cú pháp của LRBAC thành cây cú pháp trừu tƣợng tƣơng ứng đối với ngôn ngữ LRBAC.

- Một cơ sở dữ liệu RBAC, định nghĩa các thành phần cơ bản của RBAC nhƣ ngƣời dùng, đối tƣợng, vai trò, phép toán. Những thành phần này đƣợc mô tả một cách chặt chẽ theo chuẩn mô tả cơ sở dữ liệu của RBAC. Cách cấu trúc cơ sở dữ liệu RBAC từ các chính sách RBAC đƣợc nghiên cứu và mô tả chi tiết trong [9]. - Từ cây cú pháp trừu tƣợng mô tả chƣơng trình theo ngôn ngữ LRBAC và cơ sở dữ

liệu RBAC, các tác giả đề xuất phƣơng pháp kiểm tra việc cài đặt các chính sách có phù hợp với thiết kế các chính sách đƣợc mô tả trong cơ sở dữ liệu RBAC hay không.

Hình 4.1 : Các bƣớc tiến hành kiểm thử sự phù hợp giữa đặc tả và cài đặt RBAC

Một phần của tài liệu Kiểm chứng sự tuân thủ giữa đặc tả điều khiển truy cập và cài đặt (Trang 35)