Các AI coding agent như Claude Code chạy lệnh shell, kể cả AWS CLI, ngay trên máy của lập trình viên. Nếu file ~/.aws/credentials chứa access key dài hạn (bắt đầu bằng AKIA), phạm vi ảnh hưởng khi thao tác nhầm hoặc bị prompt injection sẽ rất lớn.
Trạng thái hướng tới
- Trên máy lập trình viên chỉ có thông tin xác thực tạm thời, có thời hạn
- Quyền được quản lý bằng permission set theo từng tài khoản và vai trò
- Môi trường production mặc định dùng role chỉ đọc, thao tác thay đổi tách sang role riêng
Ví dụ cấu hình
Sau khi bật IAM Identity Center (trước đây là AWS SSO), tạo user và permission set, mỗi lập trình viên chạy aws configure sso để tạo profile như sau.
[sso-session company]
sso_start_url = https://example.awsapps.com/start
sso_region = ap-northeast-1
sso_registration_scopes = sso:account:access
[profile dev]
sso_session = company
sso_account_id = 111111111111
sso_role_name = DeveloperAccess
region = ap-northeast-1
[profile prod-readonly]
source_profile = dev
role_arn = arn:aws:iam::222222222222:role/ReadOnly
region = ap-northeast-1Chạy aws sso login --profile dev và xác thực trên trình duyệt sẽ nhận được thông tin xác thực có hiệu lực trong thời gian giới hạn. Thao tác trên tài khoản khác đi qua AssumeRole nên CloudTrail ghi lại được ai đã dùng role nào.
Checklist chuyển đổi
- Dùng aws sts get-caller-identity để kiểm tra đang dùng thông tin xác thực nào
- Dùng báo cáo credential của IAM để tìm các access key lâu không dùng
- Chuyển CI/CD sang liên kết OIDC (như GitHub Actions), không dùng access key
- Vô hiệu hóa access key cũ sau khi chuyển, xóa hẳn nếu sau một thời gian không phát sinh vấn đề