Giới thiệu tiêu chuẩn Ngôn ngữ đánh dấu kiểm soát truy cập eXtensible 

Trong xu hướng phát triển, ngày càng có nhiều kiểu ngôn ngữ ra đời, mỗi kiểu ngôn ngữ có một kiểu triển khai khác nhau, bảo mật khác nhau, điều này dẫn đến việc khó khăn trong tích hợp hay kết nối các hệ thống với nhau. Đứng trước khó khăn này, Tổ chức phát triển tiêu chuẩn thông tin có cấu trúc (OASIS) đã nghiên cứu, xây dựng và ban hành một kiểu xác định ngôn ngữ chung để dễ dàng quản lý cũng như phát triển chính sách bảo mật.

Tiêu chuẩn ngôn ngữ đánh dấu kiểm soát truy cập eXtensible Access Control Markup Language (XACML) Phiên bản 3.0 xác định ngôn ngữ chung để thể hiện chính sách bảo mật. XACML được Tổ chức phát triển tiêu chuẩn thông tin có cấu trúc (OASIS) phê duyệt ba phiên bản là 1.0, 2.0 và phiên bản cuối 3.0 vào tháng 1 2013.

Động lực để xây dựng XACML là phát triển một ngôn ngữ chính sách dựa trên XML có thể được sử dụng:

- Cung cấp một phương pháp để định nghĩa linh hoạt về thủ tục mà các quy tắc và chính sách được kết hợp với nhau.

- Cung cấp một phương pháp để đối phó với nhiều đối tượng hoạt động với các năng lực khác nhau.

- Cung cấp một phương pháp để đưa ra quyết định ủy quyền dựa trên các thuộc tính của đối tượng và tài nguyên.

- Cung cấp phương pháp xử lý các thuộc tính đa giá trị.

- Cung cấp một phương pháp để ra quyết định ủy quyền dựa trên nội dung của một nguồn thông tin.

- Cung cấp một tập hợp các toán tử logic và toán học về các thuộc tính của đối tượng, tài nguyên và môi trường.

- Cung cấp một phương pháp để xử lý một tập hợp phân tán các thành phần chính sách, đồng thời trừu tượng hóa phương thức để định vị, truy xuất và xác thực các thành phần chính sách.

- Cung cấp một phương pháp để nhanh chóng xác định chính sách áp dụng cho một hành động nhất định, dựa trên các giá trị thuộc tính của chủ thể, nguồn lực và hành động.

- Cung cấp một lớp trừu tượng để cách ly người viết chính sách khỏi các chi tiết của môi trường ứng dụng.

- Cung cấp một phương pháp để chỉ định một tập hợp các hành động phải được thực hiện cùng với việc thực thi chính sách.

Các giải pháp XACML cốt lõi được bao gồm trong Khuyến nghị này. Điều khoản 7 phát triển các mô hình XACML. Điều khoản 8 phát triển ngôn ngữ chính sách. Khoản 10 phát triển các quy tắc xử lý chính sách. Khoản 11 phát triển các hướng dẫn cho người thực hiện.

Trên thực tế, XACML đã được OASIS giới thiệu như một tiêu chuẩn vào năm 2003, nhưng vẫn chưa có nhiều tổ chức ưu chuộng với nó. Điều này là do hầu hết các tổ chức đã không thể hiện sự quan tâm đến việc hướng tới giải pháp XACML để ủy quyền. Một số lý do cho điều này là: nhiều nhà thiết kế và phát triển phần mềm không hiểu rõ về tầm quan trọng và lợi thế của XACML, hơi khó để triển khai giải pháp XACML hơn là hệ thống ủy quyền mã hóa cứng hoặc JDBC điển hình, Hiệu suất của hệ thống ủy quyền dựa trên XACML có thể kém hơn hệ thống ủy quyển mà các tổ chức sử dụng hiện tại, sự phức tạp của việc xác định và quản lý các chính sách XACML.

Một số khái niệm cơ bản và mô hình luồng của XACML

Trong XACML có 5 khái niệm phổ biến và trao đổi qua lại trong mô hình thông tin của XACML, đó là:

- Điểm quản trị chính sách (PAP - Policy Administration Point) là điểm cung cấp các chính sách về chấp nhận hay từ chối quyền truy cập vào hệ thống.

- Điểm quyết định chính sách (PDP - Policy Decision Point) là điểm đánh giá các yêu cầu truy cập dựa trên các chính sách cấp quyền trước khi đưa ra quyết định chấp nhận yêu cầu truy cập.

- Điểm thực thi chính sách (PEP - Policy Enforcement Point) là điểm tiếp nhận yêu cầu truy cập và điều hướng các yêu cầu kiểm tra với chính sách trong hệ thống.

- Điểm thông tin chính sách (PIP - Policy Information Point) là điểm có tác vụ như một nguồn giá trị thuộc tính (tức là tài nguyên, chủ thể, môi trường) sau đó truy vấn và gửi phản hồi về cho PDP quyết định chấp nhận hay từ chối yêu cầu truy cập.

- Điểm truy xuất chính sách (PRP - Policy Retrieval Point) là điểm xác định nơi các chính sách ủy quyền truy cập XACML được lưu trữ, thường là cơ sở dữ liệu hoặc hệ thống tệp. Do đó, PRP không phổ biến trong mô hình luồng quyết định của XACML nhưng nó tồn tại như một khái niệm cụ thể xác định vị trí của chính sách XACML.

Mô hình luồng của XACML như sau:

Hình 1: Mô hình luồng thông tin được xử lý theo XACML

Luồng dữ liệu được luân chuyển trong sơ đồ như sau:

1. PAP viết các chính sách và bộ chính sách và cung cấp chúng cho PDP. Các chính sách hoặc bộ chính sách này đại diện cho chính sách hoàn chỉnh cho một mục tiêu cụ thể.

2. Người yêu cầu truy cập gửi yêu cầu truy cập vào PEP.

3. PEP gửi yêu cầu truy cập tới trình xử lý ngữ cảnh ở định dạng yêu cầu gốc của nó, bao gồm các thuộc tính của chủ thể, tài nguyên, hành động, môi trường và các danh mục khác.

4. Trình xử lý ngữ cảnh xây dựng bối cảnh yêu cầu XACML, tùy chọn thêm các thuộc tính và gửi nó đến PDP.

5. PDP yêu cầu bất kỳ thuộc tính chủ đề, tài nguyên, hành động, môi trường bổ sung nào và các danh mục khác (không được hiển thị) từ trình xử lý ngữ cảnh.

6. Trình xử lý ngữ cảnh yêu cầu các thuộc tính từ PIP.

7. PIP có được các thuộc tính được yêu cầu.

8. PIP trả về các thuộc tính được yêu cầu cho trình xử lý ngữ cảnh.

9. Theo tùy chọn, trình xử lý ngữ cảnh bao gồm tài nguyên trong ngữ cảnh.

10. Trình xử lý ngữ cảnh gửi các thuộc tính được yêu cầu và (tùy chọn) tài nguyên tới PDP. PDP đánh giá chính sách.

11. PDP trả về ngữ cảnh phản hồi (bao gồm cả quyết định ủy quyền) cho trình xử lý ngữ cảnh.

12. Trình xử lý ngữ cảnh chuyển ngữ cảnh phản hồi sang định dạng phản hồi gốc của PEP. Trình xử lý ngữ cảnh trả về phản hồi cho PEP.

13. PEP hoàn thành các nghĩa vụ.

14. (Không hiển thị) Nếu quyền truy cập được cho phép, thì PEP cho phép truy cập vào tài nguyên; nếu không, nó từ chối quyền truy cập.

Các yếu tố trong chính sách XACML

Trong chính sách của XACML, tiêu chuẩn định nghĩa 2 yếu tố chính cấp cao nhất là Kết cấu và Thuộc tính. Các yếu tố này được xây dựng dưa trên việc kết hợp từ hai chính sách hay nhiều chính sách riêng biệt (theo số lượng hệ thống, số lượng ngôn ngữ sử dụng) để tạo thành một chính sách duy nhất áp dụng cho yêu cầu truy cập.

Kết cấu

Kết cấu của chính sách XACML gồm 3 phần tử là quy tắc (ruleID), chính sách và bộ chính sách (PolicySet).

- Phần tử “quy tắc” có chứa biểu thức Boolean có thể được đánh giá một cách riêng biệt, nhưng nó không nhằm mục đích được truy cập một cách riêng biệt bởi PDP. Vì vậy, bản thân nó không nhằm mục đích hình thành cơ sở của một quyết định ủy quyền. Nó được dự định chỉ tồn tại một cách biệt lập trong XACML PAP, nơi nó có thể tạo thành đơn vị quản lý cơ bản. “Quy tắc” tồn tại riêng lẻ chỉ trong một trong những tác nhân chính của miền XACML. Các thành phần chính của quy tắc như sau

+ “Mục tiêu” (target) là xác định tập hợp các yêu cầu mà quy tắc được dự định áp dụng dưới dạng biểu thức logic trên các thuộc tính trong yêu cầu.

+ “Hiệu ứng” (effect) là hiệu quả của quy tắc cho biết hệ quả dự kiến ​​của người viết quy tắc của đánh giá “TRUE” cho quy tắc. Hai giá trị được phép là "Cho phép" và "Từ chối".

+ “Điều kiện” (Condition) là một biểu thức Boolean tinh chỉnh khả năng áp dụng của quy tắc ngoài các vị từ được ám chỉ bởi mục tiêu của nó. Do đó, nó có thể vắng mặt.

+ “Biểu thức nghĩa vụ” (ObligationExpressions) là biểu thức mà người viết chính sách có thể thêm các biểu thức nghĩa vụ. Khi PDP đánh giá một chính sách chứa các biểu thức nghĩa vụ, nó sẽ đánh giá các biểu thức nghĩa vụ thành nghĩa vụ và trả lại một số nghĩa vụ đó cho PEP trong ngữ cảnh phản hồi.

+ “Bộ chọn thuộc tính” (AttributeSelector) cho phép chính sách chỉ định một thuộc tính với số nhận dạng, danh mục và kiểu dữ liệu nhất định. Mặt khác, AttributeSelector cung cấp một phương tiện để tra cứu giá trị của các thuộc tính bằng cách sử dụng truy vấn XPath bằng cách chỉ định kiểu dữ liệu và biểu thức XPath. Các bộ chọn thuộc tính sau đó được thực thi dựa trên nội dung XML có thể đã được gửi cùng trong yêu cầu XACML ban đầu.

- Phần tử “chính sách” chứa tập hợp các phần tử “quy tắc” và một thủ tục được chỉ định để kết hợp các kết quả đánh giá của chúng. Đây là đơn vị cơ bản của chính sách được PDP sử dụng và vì vậy nó được dùng để tạo cơ sở cho một quyết định ủy quyền.

- Phần tử "bộ chính sách” chứa tập hợp các phần tử “chính sách” hoặc các phần tử “bộ chính sách” khác và một quy trình cụ thể để kết hợp các kết quả đánh giá của chúng. Nó là phương tiện tiêu chuẩn để kết hợp các chính sách riêng biệt thành một chính sách kết hợp duy nhất.

Hình 2: một mẫu chính sách XACML v3.0

Thuộc tính

Thuộc tính là định nghĩa biểu thị tất cả chủ thể, tài nguyên, môi trường và hành động được sử dụng trong chính sách XACML. Trong đó, chủ thể (access-subject) là thực thể yêu cầu quyền truy cập, tài nguyên có thể là một dịch vụ, dữ liệu hoặc một thành phần hệ thống, một hành động (action-ID) đề cập đến loại quyền truy cập được yêu cầu và môi trường đề cập đến một yếu tố có thể cung cấp thông tin bổ sung nếu cần thiết.

Thuật toán kết hợp chính sách

Có các thuật toán kết hợp chính sách được sử dụng bởi Bộ chính sách và các thuật toán kết hợp quy tắc được sử dụng bởi các chính sách. Mỗi thuật toán được đề cập bên dưới có thuật toán Kết hợp Chính sách và các thuật toán Kết hợp Quy tắc của nó. Các thuật toán kết hợp tiêu chuẩn được xác định trong XACML 3.0 như sau:

urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:deny-overrides

urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:deny-overrides

urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides

urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:permit-overrides

urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable

urn:oasis:names:tc:xacml:1.0:policy-combining-algorithm:first-applicable

urn:oasis:names:tc:xacml:1.0:policy-combining-algorithm:only-one-applicable

urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:ordered-deny-overrides

urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:ordered-deny-overrides

urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:ordered-permit-overrides

urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:ordered-permit-overrides

urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:deny-unless-permit

urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-unless-deny

urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:deny-unless-permit

urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:permit-unless-deny

Công cụ tìm thuộc tính carbon

Công cụ tìm kiếm thuộc tính carbon là Mô-đun này giúp tìm thuộc tính còn thiếu cho một yêu cầu XACML nhất định. Có thể cắm bất kỳ số lượng mô-đun công cụ tìm thuộc tính PIP nào với công cụ tìm thuộc tính Carbon. Bạn cần triển khai giao diện PIPAttributeFinder để viết một mô-đun mới và đăng ký mô-đun đó bằng cách sử dụng tệp cấu hình Rights.properties. Theo mặc định, WSO2 Identity Server được cung cấp cùng với DefaultAttributeFinder giao tiếp với cửa hàng người dùng cơ bản của Identity Server. Lưu trữ người dùng mặc định của Máy chủ định danh là ApacheDS nơi nó có thể được thay đổi bằng cách sử dụng tệp user-mgt.xml.

Tất cả các mô-đun sẽ được khởi tạo và các id thuộc tính được hỗ trợ được truy xuất cho mỗi mô-đun. Trong thời gian chạy, công cụ tìm thuộc tính Carbon sẽ kiểm tra Id thuộc tính hỗ trợ và chuyển nó cho mô-đun thích hợp để xử lý. Công cụ tìm thuộc tính Carbon sử dụng máy lưu vào bộ nhớ đệm để lưu các kết quả vào bộ nhớ đệm hoặc bản thân mô-đun công cụ tìm thuộc tính có thể xử lý nó.

Công cụ tìm kiếm tài nguyên carbon

Điều này được sử dụng để truy xuất tài nguyên con hoặc tài nguyên con của một giá trị tài nguyên cấp gốc nhất định. Về cơ bản, nó được sử dụng để đáp ứng yêu cầu của một hồ sơ nhiều quyết định. Việc triển khai cũng giống như mô-đun công cụ tìm thuộc tính PIP. Theo mặc định, WSO2 Identity Server được cung cấp cùng với DefaultResourceFinder (là việc triển khai PIPResourceFinder) giao tiếp với các tài nguyên đăng ký Carbon.

Một số cải thiện của XACML v3.0 so với v2.0

Sau đây là một số cải thiện của phiên bản 3.0 so với 2.0:

- Tùy chỉnh danh mục thuộc tính được xác định trong XACML v3.0 khác với phiên bản v2.0 thì các thuộc tính đã được tổ chức thành chủ đề, tài nguyên, môi trường hoặc hành động.

- Cải tiến trong Obligation là ở trong XACML 2.0, các nghĩa vụ chỉ có thể được thêm vào các chính sách và bộ chính sách. Tuy nhiên, với XACML 3.0, các quy tắc cũng có thể chứa các nghĩa vụ. Gốc của tất cả các chính sách XACML là một chính sách hoặc một bộ chính sách. Một chính sách đại diện cho một chính sách kiểm soát truy cập duy nhất, được thể hiện thông qua một tập hợp các quy tắc.  Bộ chính sách là một vùng chứa có thể chứa các chính sách hoặc bộ chính sách khác, cũng như các tham chiếu đến các chính sách được tìm thấy ở các vị trí từ xa.

- Lời khuyên (Advice) là một tính năng mới được giới thiệu với XACML 3.0. Lời khuyên tương tự như nghĩa vụ và nó chia sẻ phần lớn cú pháp của nó. Sự khác biệt là theo hợp đồng là PEP có thể bỏ qua bất kỳ lời khuyên nào mà PEP nhận được. Các PEP không phải tuân thủ các tuyên bố tư vấn; PEP có thể xem xét hoặc hủy bỏ tuyên bố. Đặc tả XACML cho biết rằng bất kỳ lời khuyên nào được trả lại cùng với một quyết định đều có thể bị các PEP tuân thủ bỏ qua một cách an toàn. Điều này có nghĩa là các PEP sẽ hoạt động như được mô tả trong phần trước, bất kể PEP làm gì với lời khuyên mà nó có thể nhận được. Ví dụ: PEP phải cho phép truy cập nếu nó nhận được quyết định Cấp phép mà không có nghĩa vụ nào, bất kể lời khuyên nào trong quyết định.

- Cải tiến trong “mục tiêu” là có thể xác định các danh mục thuộc tính tùy chỉnh, nên có những cải tiến trong một số yếu tố liên quan trong chính sách XACML 3.0 khi so sánh với 2.0. Với XACML 3.0, “mục tiêu” phần tử có thể được sử dụng để xác định logic ủy quyền phức tạp hơn trong chính nó khi so sánh với 2.0. Trong XACML 2.0, Target phần tử chứa mối quan hệ OR và AND giữa cùng một danh mục. Tuy nhiên, trong XACML 3.0, AllOf và AnyOf các phần tử đã được đưa vào Target phần tử. Điều đó rõ ràng giúp xác định mối quan hệ OR và AND giữa các danh mục khác nhau.

- Cải tiến trong XPath là tạo ra kiểu dữ liệu XPath mới được giới thiệu với XACML 3.0. Trong XACML 2.0, XPath được định nghĩa là một Chuỗi và không thể xác định ngữ cảnh mà tiền tố không gian tên sẽ giải quyết. Ngoài ra, lược đồ đa quyết định dựa trên XPath cũng được giới thiệu với XACML 3.0.

- Cải tiến trong Yêu cầu và phản hồi XACML là có thể xác định các danh mục thuộc tính tùy chỉnh. Nhiều loại danh mục thuộc tính có thể có trong yêu cầu XACML 3.0.

Kết luận

Trong bài viết này, tiêu chuẩn ngôn ngữ đánh dấu kiểm soát truy cập được giới thiệu một cách khái quát đến cụ thể các cải thiện của phiên bản mới nhất 3.0 để người đọc có hình dung về định dạng ngôn ngữ XACML. Nếu trước kia, XACML không phải là ngôn ngữ chung để thể hiện chính sách bảo mật cũng như chưa được ưa chuộng thì năm gần đây với các cập nhật bổ sung và sự đa dạng của các ngôn ngữ máy khiến cho việc lựa chọn XACML cho việc thống nhất bảo mật và xác định quyền truy cập tích hợp các ngôn ngữ.

Thông qua việc giới thiệu tiêu chuẩn này, bài đọc đưa ra các cơ sở tri thức để áp dụng phát triển ngôn ngữ chung hiệu để thể hiện chính sách bảo mật phục vụ các ứng dụng nghiệp vụ, chuyên môn trong chính phủ điện tử hiện nay. Trong bối cảnh hiện nay của Việt Nam, việc tích hợp và chia sẻ dữ liệu được ưu tiên hàng đầu nhằm phục vụ người dân, cơ quan nhà nước, đồng thời là chìa khóa phát triển chính phủ điện tử Việt Nam, vì vậy việc đưa vào ứng dụng thực tiễn tiêu chuẩn này là vô cùng thiết thực.

Vũ Cao Minh Đức

Tài liệu tham khảo

  1. RFC 7061: “eXtensible Access Control Markup Language (XACML) XML Media Type”, IETF, ISSN: 2070-1721, R. Sinnema, E. Wilde, EMC Corporation, November 2013.
  2. eXtensible Access Control Markup Language (XACML) Version 3.0, OASIS Standard, 22 January 2013
418 Go top

Sự kiện nổi bật

Ý kiến về Trang thông tin điện tử Cục Tin học hóa?
1. Đạt yêu cầu, 1180 phiếu (88 %)
2. Chưa đạt yêu cầu, 107 phiếu (8 %)
3. Cần thêm chủ đề, 57 phiếu (4 %)
Tổng số phiếu: 1344
THÔNG KÊ TRUY CẬP
  • Người trực tuyến Người trực tuyến
    • Khách Khách 42
    • Thành viên Thành viên 0
    • Tổng Tổng 42
    • Tổng lượt truy cập: Tổng lượt truy cập: 18945337