TIÊU CHUẨN SAML – NGÔN NGỮ ĐÁNH DẤU BẢO








Tiêu chuẩn SAML – Ngôn ngữ đánh dấu bảo đảm an toàn





Tiêu chuẩn SAML Ngôn ngữ đánh dấu bảo đảm an toàn

Tổng quan về SAML

Tiêu chuẩn Security Assertion Markup Language (SAML) – Ngôn ngữ đánh dấu bảo đảm an toàn là một tiêu chuẩn được phát triển và duy trì bởi Tổ chức phát triển tiêu chuẩn thông tin có cấu trúc (Organization for the Advancement of Structured Information Standards - OASIS).

SAML v1.0 đã trở thành một tiêu chuẩn của OASIS vào tháng 05/2002. Sau đó, SAML v1.1 được công bố vào tháng 09/2003 và đã có thành công đáng kể trong một số lĩnh vực như: dịch vụ tài chính, giáo dục, chính phủ và các ngành công nghiệp khác. SAML đã được triển khai rộng rãi bởi tất cả các nhà cung cấp quản lý truy cập web lớn. SAML cũng hỗ trợ trong sản phẩm máy chủ ứng dụng chính và thường nằm trong sản phẩm của các nhà cung cấp trong quản lý và bảo mật dịch vụ Web (Web Services). SAML v2.0 được xây dựng trên sự thành công của SAML v1.1 và được công bố vào tháng 03/2005.

Những điểm mới của SAML v2.0 so với SAML v1.1

Một số tính năng chính của SAML v2.0 so với SAM v1.1

Biệt danh (Pseudonyms) - SAML v2.0 định nghĩa cách một định danh giả ngẫu nhiên (pseudo-random) có thể được sử dụng giữa các nhà cung cấp để đại diện cho các đối tượng có thể xác nhận. Biệt danh là một công nghệ quan trọng, hỗ trợ tạo ra riêng tư bởi vì nó hạn chế sự thông đồng giữa các nhà cung cấp.

Quản lý định danh (Identifier management) - SAML v2.0 định nghĩa cách thức hai nhà cung cấp có thể thiết lập và quản lý các biệt danh của các đối tượng.

Dữ liệu đặc tả (Metadata) - Đặc điểm dữ liệu đặc tả của SAML định nghĩa cách thể hiện cấu hình và dữ liệu tin cậy có liên quan để triển khai các hệ thống SAML dễ dàng hơn. Để làm được điều này, nó xác định các nhân tố liên quan trong các cấu hình khác nhau, chẳng hạn như nhà cung cấp định danh và nhà cung cấp dịch vụ đăng nhập một lần (Single Sign-On, SSO) và đơn vị quản lý thuộc tính hợp pháp và bên yêu cầu. Các dữ liệu phải được thống nhất giữa các thực thể hệ thống bao gồm nhà cung cấp dịch vụ, nhà cung cấp định danh, các định danh, hồ sơ, định danh tài nguyên thống nhất, chứng thư và các khóa.

Mã hóa (Encryption) - SAML v2.0 cho phép các mệnh đề (statement) thuộc tính, định danh tên hoặc toàn bộ khẳng định (assertion) được mã hóa. Tính năng này bảo đảm bảo mật đầu cuối của những phần tử này có thể được hỗ trợ khi cần thiết.

Hồ sơ thuộc tính (Attribute profiles) – Các hồ sơ thuộc tính đơn giản hóa việc cấu hình và triển khai các hệ thống trao đổi dữ liệu thuộc tính. Các hồ sơ thuộc tính bao gồm:

- Hồ sơ thuộc tính cơ bản: hỗ trợ tên thuộc tính chuỗi và các giá trị thuộc tính rút ra từ định nghĩa kiểu nguyên thủy trong lược đồ XML.

- Hồ sơ thuộc tính X.500/LDAP: hỗ trợ tên và các giá trị thuộc tính X.500/LDAP tiêu chuẩn.

- Hồ sơ thuộc tính định danh duy nhất toàn thể (universally unique identifier- UUID): hỗ trợ sử dụng các UUID cho các tên thuộc tính.

- Hồ sơ thuộc tính ngôn ngữ đánh dấu quản lý truy cập mở rộng (eXtensible Access Control Markup Language-XACML): định nghĩa các định dạng phù hợp để xử lý bằng XACML.

Quản lý phiên làm việc (Session management) - Giao thức đăng xuất duy nhất trong SAML v2.0 cung cấp một giao thức cho phép tất cả các phiên làm việc đăng xuất gần như đồng thời một lúc. Ví dụ, nếu một người sử dụng sau khi chứng thực tại một nhà cung cấp định danh, sau đó đăng nhập một lần vào nhiều nhà cung cấp dịch vụ, cuối cùng người sử dụng có thể tự động đăng xuất khỏi tất cả những nhà cung cấp dịch vụ theo yêu cầu của nhà cung cấp định danh.

Thiết bị (Devices) - SAML v2.0 hỗ trợ cho các thiết bị di động, giải quyết cả hai bài toán về thiết bị và hạn chế băng thông.

Cơ chế bảo mật (Privacy mechanisms) - SAML v2.0 bao gồm cơ chế cho phép các nhà cung cấp giao tiếp chính sách bảo mật và cài đặt. Ví dụ, SAML cho phép nhà cung cấp lấy về và thể hiện hành vi của một đối tượng với một số hoạt động đang được thực hiện.

Tìm kiếm nhà cung cấp định danh (Identity provider discovery) - Trong triển khai có nhiều nhà cung cấp định danh, các nhà cung cấp dịch vụ cần một phương tiện để tìm kiếm thêm những nhà cung cấp định danh sử dụng một đối tượng. Nhà cung cấp định danh tìm kiếm các hồ sơ dựa vào một cookie (một tập tin lưu trữ thông tin truy cập các trang web) được viết trong một miền chung giữa các nhà cung cấp định danh và dịch vụ.

Đặc điểm của SAML

Là nền tảng trung lập - SAML tách nền tảng an ninh khỏi các kiến trúc nền tảng và việc triển khai của các nhà cung cấp cụ thể. Việc tạo ra sự an toàn hơn cho các ứng dụng lô-gic độc lập là một nguyên lý quan trọng của kiến trúc hướng dịch vụ.

Có kết nối lỏng trong thư mục - SAML không yêu cầu thông tin người dùng để duy trì và đồng bộ giữa các thư mục.

Cải thiện trải nghiệm trực tuyến cho người dùng cuối - SAML cho phép đăng nhập một lần bằng cách cho phép người sử dụng xác thực tại một nhà cung cấp định danh và sau đó truy cập vào các nhà cung cấp dịch vụ mà không cần xác thực nữa. Ngoài ra, liên minh định danh (kết nối nhiều định danh) với SAML cho phép người dùng trải nghiệm tốt hơn trên từng dịch vụ trong khi vẫn bảo đảm sự riêng tư.

Giảm chi phí quản lý cho các nhà cung cấp dịch vụ - Sử dụng SAML để "tái sử dụng" một hành động xác thực đơn lẻ (ví dụ đăng nhập với tên người dùng và mật khẩu) nhiều lần trên nhiều dịch vụ có thể làm giảm chi phí duy trì thông tin tài khoản. Gánh nặng này được chuyển giao cho các nhà cung cấp định danh.

Chuyển giao rủi ro - SAML có thể chuyển trách nhiệm quản lý định danh thích hợp để cho các nhà cung cấp định danh.

Các thành phần của SAML

SAML được định nghĩa dưới dạng các khẳng định, các giao thức, các ràng buộc và các hồ sơ.

a. Các khẳng định (Assertions)

Một khẳng định là một gói các thông tin cung cấp một hoặc nhiều câu lệnh được thực hiện bởi một SAML hợp pháp. SAML định nghĩa ba loại khẳng định khác nhau có thể được tạo ra bởi một SAML hợp pháp.

Xác thực: Đối tượng cụ thể được xác định bởi một phương tiện cụ thể tại một thời gian cụ thể. Loại mệnh đề này thường được tạo ra bởi một SAML hợp pháp gọi là nhà cung cấp định danh, có trách nhiệm chứng thực người dùng và lưu các thông tin khác của người dùng.

Thuộc tính: Đối tượng cụ thể liên quan đến các thuộc tính được cung cấp.

Quyết định cấp quyền: Một yêu cầu cho phép đối tượng cụ thể truy cập vào các tài nguyên xác định đã được cấp phép hoặc từ chối.

Cấu trúc bên ngoài của một khẳng định là chung, cung cấp thông tin được phổ biến cho tất cả các mệnh đề bên trong nó. Trong một khẳng định, một loạt các yếu tố bên trong mô tả xác thực, thuộc tính, quyết định cấp quyền hoặc mệnh đề do người dùng định nghĩa có chứa các chi tiết cụ thể.

Hình dưới đây mô tả cấu trúc cấp cao của một khẳng định xác thực SAML điển hình.

TIÊU CHUẨN SAML – NGÔN NGỮ ĐÁNH DẤU BẢO































Hình 1: Cấu trúc cấp cao của một khẳng định xác thực SAML điển hình

b. Các giao thức (Protocols)

SAML định nghĩa một số giao thức yêu cầu/phản hồi cho phép tất cả các nhà cung cấp dịch vụ thực hiện:

Yêu cầu một hoặc nhiều khẳng định từ một SAML hợp pháp (bao gồm một yêu cầu trực tiếp của các khẳng định mong muốn cũng như truy vấn các khẳng định đáp ứng các tiêu chí cụ thể).

Yêu cầu một nhà cung cấp định danh xác thực một đối tượng và trả lại khẳng định tương ứng.

Yêu cầu một định danh tên phải đăng ký.

Yêu cầu sử dụng một định danh phải hủy bỏ.

Lấy một thông điệp giao thức đã được yêu cầu bằng phương tiện của một đối tượng.

Yêu cầu tập các phiên làm việc liên quan đăng xuất đồng thời (gọi là đăng xuất duy nhất).

Yêu cầu một ánh xạ định danh tên.

c. Kết hợp (Bindings)

Ánh xạ từ việc trao đổi các thông điệp yêu cầu-phản hồi SAML thành thông điệp tiêu chuẩn hoặc giao thức truyền thông được gọi là kết hợp (bindings) giao thức SAML. Ví dụ, SAML SOAP Binding xác định cách thông điệp giao thức SAML có thể được truyền tin trong các thông điệp SOAP, trong khi HTTP Redirect binding định nghĩa cách vượt qua các thông điệp giao thức thông qua việc chuyển hướng HTTP.

d. Hồ sơ (Profiles)

Nói chung, một hồ sơ (profile) của SAML định nghĩa các ràng buộc và/hoặc mở rộng để hỗ trợ việc sử dụng SAML cho một ứng dụng cụ thể, mục tiêu là để tăng cường khả năng tương tác bằng cách loại bỏ một số quy định không linh hoạt trong một tiêu chuẩn chung sử dụng. Ví dụ, Web Browser SSO Profile quy định cụ thể cách một khẳng định xác thực SAML được truyền đi giữa một nhà cung cấp định danh và nhà cung cấp dịch vụ cho phép một người sử dụng đăng nhập một lần vào trình duyệt web.

Web SSO Profile mô tả chi tiết cách sử dụng giao thức yêu cầu/phản hồi xác thực SAML liên hệ với các kết hợp khác nhau của HTTP Redirect, HTTP POST, HTTP Artifact và các SOAP binding.

Một loại hồ sơ SAML là một hồ sơ thuộc tính. SAML định nghĩa một loạt các hồ sơ thuộc tính để cung cấp các quy tắc cụ thể để giải thích các thuộc tính trong các khẳng định thuộc tính SAML. Một ví dụ là hồ sơ X.500/LDAP, mô tả cách thực hiện các thuộc tính X.500/LDAP trong các khẳng định thuộc tính SAML.

Hoạt động của SAML

a. Đăng nhập Web một lần (Web Single Sign-On, Web SSO)

Trong Web SSO, một người dùng xác thực trên một trang web, sau đó người dùng không cần phải chứng thực thêm nhưng có thể truy cập vào những trang web khác để cá nhân hóa hoặc tùy chỉnh một số tài nguyên. SAML cho phép Web SSO thông qua kênh truyền thông khẳng định xác thực từ trang web đầu tiên đến trang web thứ hai, nếu tin tưởng nguồn gốc khẳng định, có thể lựa chọn để đăng nhập nếu như người sử dụng đã chứng thực trực tiếp.

Mô hình SSO cơ bản được thể hiện trong hình 2 phía dưới. Trong đó, nhà cung cấp định danh xác thực và sau đó được nhà cung cấp dịch vụ xác nhận và cấp quyền truy cập và sử dụng các dịch vụ.

b. Cấp quyền dựa trên thuộc tính

Tương tự như các SSO kịch bản Web, mô hình cấp quyền dựa trên thuộc tính có một trang web giao tiếp thông tin định danh về một chủ thể với một trang web khác có hỗ trợ một số giao dịch. Tuy nhiên, các thông tin định danh có thể có một số đặc điểm của chủ thể không cần cho việc chứng thực về một người.

c. Bảo đảm dịch vụ Web

Các khẳng định SAML có thể được sử dụng trong các thông điệp SOAP để truyền tải thông tin an ninh và định danh giữa các đối tác trong tương tác dịch vụ Web.

TIÊU CHUẨN SAML – NGÔN NGỮ ĐÁNH DẤU BẢO





























Hình 2: Mô hình đăng nhập một lần cơ bản

Ứng dụng

SAML là một nền tảng dựa trên XML cho giao tiếp xác thực người dùng, quyền và thông tin thuộc tính. SAML cho phép các đối tượng nghiệp vụ tạo ra sự chắc chắn thông qua định danh, thuộc tính và các quyền của một chủ thể (một thực thể thường là một người sử dụng) với các đối tượng khác, chẳng hạn như một công ty đối tác hoặc một ứng dụng doanh nghiệp. SAML là một giao thức linh hoạt và mở rộng được thiết kế để sử dụng và tùy chỉnh nếu cần thiết bởi các tiêu chuẩn khác. Các tổ chức như Hiệp hội Tự do (Liberty Alliance), dự án Internet2 Shibboleth và Ủy ban An toàn dịch vụ Web OASIS (OASIS Web Services Security) đã lựa chọn SAML là một nền tảng công nghệ cho các mục đích khác nhau.

Trong Thông tư số 22/2013/TT-BTTTT ngày 23/12/2013 của Bộ trưởng Bộ Thông tin và Truyền thông Công bố Danh mục tiêu chuẩn kỹ thuật về ứng dụng công nghệ thông tin trong cơ quan nhà nước quy định Khuyến nghị áp dụng tiêu chuẩn SAML v2.0 và được xếp vào nhóm Tiêu chuẩn về an toàn thông tin.

Trần Việt Cường – Cục Tin học hóa





7







Tags: chuẩn saml, tiêu chuẩn, chuẩn