Access key dài hạn lưu trong CI là bí mật tồn tại vĩnh viễn: rò một lần là dùng được mãi, khó xoay vòng, và khó biết ai đã dùng nó ở đâu.
OIDC thay bí mật lưu trữ bằng danh tính chứng minh được tại thời điểm chạy:
1. Cloud provider được cấu hình tin tưởng CI provider như một OIDC identity provider.
2. Khi job chạy, CI phát một JWT ngắn hạn mô tả chính job đó: repo nào, branch/tag nào, environment nào, workflow nào.
3. Job đổi JWT lấy credential tạm của cloud (vd AssumeRoleWithWebIdentity), hết hạn sau ít phút.
4. Role phía cloud có điều kiện trên claim — chỉ chấp nhận token từ đúng repo và đúng ref.
permissions:
id-token: write # bắt buộc để job xin được OIDC token
contents: readĐiểm mấu chốt khi phỏng vấn: ràng buộc trust policy phải đủ hẹp. Nếu điều kiện chỉ khớp tới cấp tổ chức (repo:my-org/*), bất kỳ repo nào trong tổ chức — kể cả repo mới tạo, hoặc PR chạy trên nhánh bất kỳ — đều lấy được credential production. Phải khóa đến repo + ref cụ thể, và kết hợp với environment có protection rule cho quyền deploy production.
Kết quả: không còn secret dài hạn để rò, credential tự hết hạn, và audit log ở cloud truy được về đúng workflow đã yêu cầu.