Triển khai một tổ chức; kiểm tra quyền theo vai trò
Doanh nghiệp MSP
HierarchicalMSP
Liên minh đa tổ chức; phân cấp chứng chỉ X.509 với CertificateAuthority
Mỗi thực thể phải đăng ký và xác thực danh tính trước khi được gọi PolicyEngine hoặc gửi sự kiện.
Sơ đồ luồng: đăng ký thực thể (doanh nghiệp MSP)
sequenceDiagram
autonumber
participant Admin as 🏢 Quản trị viên Doanh nghiệp
participant MSP as 🏛️ HierarchicalMSP
participant CA as 📜 CertificateAuthority
participant PE as ⚖️ PolicyEngine (Thực thi Chính sách)
rect rgb(0, 0, 0, 0)
Note over Admin: Giai đoạn 1 — Định nghĩa vai trò
Admin->>MSP: define_role(role_name, permissions, policy_ids)
MSP->>MSP: OrganizationPolicies.assign_role_permissions(role, perms)
end
rect rgb(0, 0, 0, 0)
Note over Admin: Giai đoạn 2 — Đăng ký thực thể
Admin->>MSP: register_entity(entity_id, credentials, role, attributes)
MSP->>CA: issue_certificate(entity_id, public_key, attributes, valid_days)
CA->>CA: _generate_cert_id(entity_id, public_key)
CA->>CA: _sign_certificate(cert_id, subject, public_key, ca_key)
CA-->>MSP: Certificate { cert_id, valid_until, status=ACTIVE }
MSP->>MSP: entities[entity_id] = { certificate, role, status: active }
MSP-->>Admin: True ✅
end
Sơ đồ luồng: xác thực quyền lúc chạy
sequenceDiagram
autonumber
participant Caller as 🖥️ API Client
participant MSP as 🏛️ HierarchicalMSP
participant CA as 📜 CertificateAuthority
participant PE as ⚖️ PolicyEngine (Thực thi Chính sách)
rect rgb(0, 0, 0, 0)
Note over Caller,CA: Giai đoạn 1 — Xác thực Danh tính
Caller->>MSP: validate_identity(entity_id, credentials)
MSP->>CA: verify_certificate(cert_id)
CA->>CA: Kiểm tra: chứng chỉ chưa bị thu hồi VÀ is_valid() (trong thời hạn)
CA-->>MSP: True / False
MSP->>MSP: So khớp credentials.public_key với chứng chỉ đã lưu trữ
MSP-->>Caller: True ✅ (xác nhận danh tính)
end
rect rgb(0, 0, 0, 0)
Note over Caller,PE: Giai đoạn 2 — Cấp quyền Hành động
Caller->>MSP: authorize_action(entity_id, action, resource)
MSP->>MSP: check_permission(role, action)
MSP->>MSP: evaluate_policy(policy_id, context) cho mỗi chính sách vai trò
MSP-->>Caller: True / False
end
alt Hành động được cấp quyền
Caller->>PE: evaluate_policy(policy_id, context_with_role)
Note right of PE: Luồng Thực thi Chính sách tiếp tục tại đây
end
Sơ đồ luồng: thu hồi chứng chỉ
sequenceDiagram
autonumber
participant Admin as 🏢 Quản trị viên Doanh nghiệp
participant MSP as 🏛️ HierarchicalMSP
participant CA as 📜 CertificateAuthority
Admin->>MSP: revoke_entity(entity_id, reason)
MSP->>CA: revoke_certificate(cert_id, reason)
CA->>CA: revoked_certificates.add(cert_id)
CA->>CA: cert.status = REVOKED
MSP->>MSP: entity[status] = revoked
MSP-->>Admin: True ✅
Note over CA: Tất cả các yêu cầu validate_identity() sau này của thực thể này<br/>sẽ thất bại tại CA.verify_certificate()