Tác giả: Edward Sun và Kevin Hakanson | Ngày xuất bản: 15/4/2025
Danh mục: Bảo mật, Nâng cao (300), Amazon Verified Permissions
Nhóm làm việc AuthZEN của OpenID Foundation hiện đang phát triển một thông số kỹ thuật mới nhằm chuẩn hóa cách truyền đạt thông tin ủy quyền giữa các thành phần trong hệ thống kiểm soát truy cập.
Hôm nay, chúng tôi giới thiệu một triển khai tham chiếu nguồn mở chứng minh sự tích hợp liền mạch giữa điểm thực thi chính sách (PEP) tuân thủ AuthZEN và Amazon Verified Permissions.
OpenID AuthZEN là gì?
Thách thức của mô hình truyền thống
Truyền thống, các nhà phát triển thường xây dựng logic phân quyền trực tiếp trong mã ứng dụng. Cách tiếp cận này tạo ra nhiều vấn đề:
- Khó khăn trong việc thực thi nhất quán các quy tắc ủy quyền
- Khó theo dõi và quản lý các thay đổi quy tắc
- Cần thay đổi và triển khai lại ứng dụng mỗi khi cập nhật quy tắc
Giải pháp hiện đại: Tách biệt logic phân quyền
Các thiết kế ứng dụng hiện đại đã chuyển logic phân quyền ra khỏi mã nguồn, hỗ trợ các mô hình kiểm soát truy cập như:
RBAC (Role-Based Access Control)
- Phân quyền dựa trên vai trò của người dùng
ABAC (Attribute-Based Access Control)
- Phân quyền dựa trên thuộc tính của chủ thể hoặc tài nguyên
ReBAC (Relationship-Based Access Control)
- Phân quyền dựa trên mối quan hệ giữa các thực thể
PBAC (Policy-Based Access Control)
- Kết hợp các phương pháp trên thông qua chính sách
Kiến trúc hệ thống kiểm soát truy cập
Hệ thống bao gồm các thành phần chính:
Policy Decision Point (PDP)
- Trung tâm đánh giá chính sách
- Quyết định cho phép hoặc từ chối quyền truy cập
Policy Enforcement Point (PEP)
- Điểm kiểm soát trong ứng dụng
- Thực thi quyết định từ PDP
Policy Information Point (PIP)
- Cung cấp thông tin bổ sung (thuộc tính người dùng, tài nguyên)
- Kết nối với các nguồn dữ liệu bên ngoài
Policy Administration Point (PAP)
- Quản lý và cập nhật chính sách
- Giao diện quản trị chính sách
Tích hợp với Amazon Verified Permissions
Amazon Verified Permissions cung cấp:
- Dịch vụ được quản lý hoàn toàn kết hợp PDP và kho chính sách
- Ngôn ngữ chính sách Cedar với khả năng chứng minh toán học
- Auto-scaling theo nhu cầu ứng dụng
- API IsAuthorized() để đánh giá yêu cầu ủy quyền
- Hỗ trợ OAuth 2.0 JWT và OpenID Connect
Kiến trúc triển khai AuthZEN
Quy trình hoạt động
- Ứng dụng (PEP) gửi yêu cầu ủy quyền theo định dạng AuthZEN
- Amazon API Gateway xác thực yêu cầu qua AWS Lambda authorizer
- Lambda function truy vấn kho thực thể (PIP) để lấy thuộc tính bổ sung
- Chuyển đổi định dạng từ AuthZEN sang Verified Permissions
- Verified Permissions đánh giá chính sách và trả về quyết định
- Chuyển đổi ngược kết quả về định dạng AuthZEN
Bảo mật
Lưu ý quan trọng: Trong demo này, xác thực được quản lý bằng AWS Secrets Manager. Trong production, hãy áp dụng các cơ chế xác thực phù hợp như OAuth 2.0 tokens, client certificates, hoặc AWS IAM credentials.
Hướng dẫn triển khai
Yêu cầu hệ thống
- AWS CDK
- Node.js và npm
- AWS CLI được cấu hình
Bước 1: Triển khai kho chính sách
# Bootstrap môi trường CDK
$ cdk bootstrap aws://<account-id>/<region>
# Cài đặt dependencies
$ npm install
# Triển khai policy store
$ npm run cdk:policystore
Sau khi triển khai, lưu lại các giá trị output:
PolicyStoreIdCedarEntitiesTableName
Bước 2: Thiết lập biến môi trường
$ export POLICY_STORE_ID=1234567890abcdef0
$ export ENTITIES_TABLE_NAME=AuthZENPolicyStoreStack-EntitiesCedarEntitiesTableXXXXXXX-XXXXXXXXXXXXX
Bước 3: Triển khai AuthZEN PDP
# Triển khai PDP stack
$ npm run cdk:pdp
Lưu lại các giá trị output:
RestApiEndpoint– endpoint AuthZEN của bạnApiCredentialsSecretArn– credentials để truy cập API
Kiểm tra triển khai
Sử dụng AuthZEN Test Harness
# Clone test harness
$ git clone https://github.com/openid/authzen.git
$ cd authzen/interop/authzen-api-gateways/test-harness
# Thiết lập credentials
$ export SECRET_ARN=arn:aws:secretsmanager:...
$ export AUTHZEN_PDP_API_KEY=$(aws secretsmanager get-secret-value --secret-id $SECRET_ARN --query 'SecretString' --output text | jq -r '.authSecret')
# Chạy tests
$ yarn install
$ yarn build
$ yarn test https://your-api-endpoint.amazonaws.com/prod/ console
Kết quả mong đợi
Khi triển khai thành công, bạn sẽ thấy các kết quả PASS REQ cho tất cả scenarios của AuthZEN interop testing.
Lợi ích của giải pháp
Cho nhà phát triển
- Chuẩn hóa patterns ủy quyền across services
- Tách biệt logic phân quyền khỏi business logic
- Dễ dàng bảo trì và cập nhật chính sách
Cho doanh nghiệp
- Quản lý tập trung các chính sách ủy quyền
- Tuân thủ các tiêu chuẩn ngành
- Khả năng mở rộng với dịch vụ managed của AWS
Tài nguyên tham khảo
Tìm hiểu thêm về Cedar và Verified Permissions
- Thiết kế Cedar: Trực quan, nhanh chóng và an toàn
- Ủy quyền API Gateway với Verified Permissions
- Patterns thiết kế Cedar
Tham gia cộng đồng
Kết luận
Việc tích hợp OpenID AuthZEN với Amazon Verified Permissions mang lại một giải pháp ủy quyền hiện đại, chuẩn hóa và dễ quản lý. Triển khai tham chiếu này giúp các tổ chức áp dụng best practices trong kiểm soát truy cập trong khi tận dụng sức mạnh của dịch vụ cloud managed.
Hãy thử triển khai giải pháp này và chia sẻ feedback của bạn với cộng đồng AuthZEN!
Về tác giả:
Edward Sun – Solution Architect chuyên về Identity and Access Management tại AWS, đam mê giúp khách hàng trong journey chuyển đổi cloud.
Kevin Hakanson – Senior Solution Architect cho AWS Worldwide Public Sector, chuyên về EdTech và modern development practices.