Cách hỗ trợ các yêu cầu OpenID AuthZEN với Amazon Verified Permissions

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

  1. Ứng dụng (PEP) gửi yêu cầu ủy quyền theo định dạng AuthZEN
  2. Amazon API Gateway xác thực yêu cầu qua AWS Lambda authorizer
  3. Lambda function truy vấn kho thực thể (PIP) để lấy thuộc tính bổ sung
  4. Chuyển đổi định dạng từ AuthZEN sang Verified Permissions
  5. Verified Permissions đánh giá chính sách và trả về quyết định
  6. 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:

  • PolicyStoreId
  • CedarEntitiesTableName

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ạn
  • ApiCredentialsSecretArn – 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

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.

Leave a comment