Để ôn thi AWS Certified Developer Associate (DVA-C02) liên quan đến chủ đề “Assume Role” (giữ vai trò), bạn cần hiểu rõ khái niệm này trong AWS Identity and Access Management (IAM) và cách nó được áp dụng trong các tình huống thực tế. Dưới đây là hướng dẫn chi tiết để bạn nắm vững chủ đề này:

1. “Assume Role” là gì?
- Trong AWS, “Assume Role” là hành động một thực thể (người dùng, ứng dụng, hoặc dịch vụ AWS) tạm thời đảm nhận một vai trò IAM (IAM Role) để có được quyền truy cập vào các tài nguyên AWS theo chính sách được gắn với vai trò đó.
- Vai trò (Role) không có thông tin xác thực dài hạn (như access key hay mật khẩu). Thay vào đó, nó cung cấp thông tin xác thực tạm thời thông qua AWS Security Token Service (STS).
2. Cách hoạt động của Assume Role
- Khi một thực thể gọi API
sts:AssumeRole
, AWS STS sẽ trả về một bộ thông tin xác thực tạm thời bao gồm: - Access Key ID
- Secret Access Key
- Session Token
- Những thông tin xác thực này có thời hạn (mặc định là 1 giờ, tối đa 12 giờ tùy cấu hình) và được sử dụng để truy cập tài nguyên theo chính sách của vai trò.
3. Các tình huống sử dụng Assume Role
- Truy cập đa tài khoản (Cross-account access): Một người dùng hoặc dịch vụ từ tài khoản A có thể đảm nhận vai trò ở tài khoản B để truy cập tài nguyên.
- Ứng dụng chạy trên EC2: Thay vì nhúng access keys vào mã nguồn, ứng dụng trên EC2 có thể sử dụng vai trò IAM được gán cho instance để truy cập dịch vụ AWS.
- Ứng dụng bên ngoài AWS: Một ứng dụng chạy on-premises hoặc trên nền tảng khác có thể sử dụng Assume Role với STS để truy cập tài nguyên AWS.
- Ủy quyền tạm thời: Cung cấp quyền truy cập tạm thời cho người dùng hoặc dịch vụ mà không cần tạo IAM user cố định.
4. Cấu hình Assume Role
- Tạo IAM Role:
- Xác định “Trusted Entity” (thực thể đáng tin cậy) được phép đảm nhận vai trò, ví dụ: một tài khoản AWS khác, dịch vụ AWS (như EC2), hoặc người dùng IAM.
- Gắn chính sách quyền hạn (Permission Policy) để quy định vai trò có thể làm gì.
- Trust Relationship Policy: Đây là chính sách JSON xác định ai/cái gì có thể assume vai trò. Ví dụ:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/ExampleUser"
},
"Action": "sts:AssumeRole"
}
]
}
- Gọi API STS: Sử dụng lệnh AWS CLI như sau để assume vai trò:
aws sts assume-role --role-arn arn:aws:iam::123456789012:role/ExampleRole --role-session-name test-session
5. Các câu hỏi thường gặp trong DVA-C02 về Assume Role
Trong kỳ thi, bạn có thể gặp các câu hỏi dạng tình huống yêu cầu chọn giải pháp tối ưu liên quan đến Assume Role. Dưới đây là một số ví dụ:
- Câu hỏi mẫu 1: Một ứng dụng chạy trên EC2 cần truy cập S3 bucket trong một tài khoản khác. Giải pháp nào là tốt nhất?
- Đáp án: Gắn IAM Role vào EC2 instance và sử dụng
sts:AssumeRole
để truy cập bucket ở tài khoản khác với chính sách cross-account. - Câu hỏi mẫu 2: Làm thế nào để một ứng dụng on-premises truy cập AWS mà không lưu access keys trong mã nguồn?
- Đáp án: Sử dụng IAM Role và gọi
sts:AssumeRole
để lấy thông tin xác thực tạm thời.
6. Mẹo ôn thi
- Hiểu STS APIs: Nắm rõ các API như
AssumeRole
,AssumeRoleWithSAML
,AssumeRoleWithWebIdentity
. - Thực hành thực tế: Tạo một IAM Role trong AWS Console, gán cho EC2 hoặc gọi qua CLI để hiểu quy trình.
- So sánh với IAM User: Hiểu khi nào nên dùng Role thay vì User (Role an toàn hơn vì không cần lưu trữ thông tin xác thực dài hạn).
- Xem tài liệu AWS: Đọc kỹ tài liệu chính thức về IAM Roles và STS.
10 Views