AWS 02. IAM service
IAM service?
IAM = Identity Access Management
IAM là một dịch vụ cung cấp khả năng xác thực và phân quyền truy cập cho:
- User (người dùng) có thể truy cập và thao tác trên các resource (tài nguyên) của AWS.
- AWS resource có thể truy cập và thao tác trên các AWS Resource khác.
1. User
Có 2 loại user:
- Root user
- IAM user
Root user: là tài khoản đăng ký AWS, nó có quyền hạn tối cao cho tài khoản AWS.
Một số lưu ý cho Root user:
- Nên xóa access key của Root user
- Tạo 1 IAM user có quyền là administrator để thao tác với AWS (không nên sử dụng trực tiếp Root user)
IAM user: là tài khoản được tạo ra từ Root user (hoặc IAM user có quyền admin). Và thường sử dụng trong việc cung cấp user account cho các thành viên tham gia quản lý, phát triển dự án. Mặc định IAM user sẽ không có bất cứ permission nào.
2. Group
Group là một nhóm các user kế thừa chung một số permission (trên hệ thống AWS) của group (eg: tạo user mới / upload file lên S3 bucket / ...)
3. Policies
Trước khi đi vào tìm hiểu Policies, thì ta nên biết rằng AWS phân các quyền hạn dựa trên các action (hành động tương tác vào resource) và gọi nó là permission
ví dụ: "s3:CreateBucket" là action cho phép tạo bucket (folder) trên S3 service.
Policy là đơn vị nhỏ nhất mà chúng ta (user) có thể tạo ra được để nhằm phân quyền cho user / group / role.
Để quản lý các Policy, chúng ta sẽ vào dịch vụ IAM sau đó điều hướng tới menu Policy
Dưới đây là một ví dụ về một Policy
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"s3:CreateBucket",
"s3:DeleteBucket",
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "true"
}
}
}
]
}
Chúng ta phân tích 1 chút về Policy ở ví dụ trên:
- Policy được tạo bằng 2 cách: Sử dụng Visual editor hoặc viết dưới dạng JSON document


- Nội dung trong trường Statement là một mảng các AWS resource permissions
- Trong mỗi một AWS resource permission thì ta quan tâm tới các thành phần:
EffectActionResourceCondition Effect(= Allow || Deny) nó thể hiện sự ảnh hưởng của cácActioncó được cho phép hay không (từ chối) trong Policy.Actionlà các hành động được phép thao tác với resource.Resourcelà tài nguyên được áp dụng các hành động trongActionfield.Conditionlà điều kiện để tăng tính security cho Policy. (eg: require MFA hoặc source IP)
**Lưu ý:
- Nên đánh tag cho Policy để dễ kiểm soát (eg: đánh tag theo môi trường
Dev | Staging | Product)
4. Role
Role được dùng để ủy quyền truy cập cho user hoặc AWS resources
Role sử dụng các Policies để set permission cho user hoặc AWS resources
Một ứng dụng của việc sử dụng role, đó là thiết lập role cho phép EC2 truy cập vào S3, thay vì chúng ta phải sử dụng cặp access/secret key để implement vào trong code của application chạy trên EC2, sau đó EC2 mới có thể gọi tới S3.
Thì bây giờ chúng ta sẽ set role cho EC2 là có quyền access vào S3, thì nghiễm nhiên application nằm trên EC2 có thể gọi tới S3 mà không cần tới access/secret key
