Ngày 3: IAM Nâng Cao
Mục tiêu học tập
- Hiểu sâu về IAM Policies và cách evaluate
- Nắm vững IAM Roles và cross-account access
- Hiểu Permission Boundaries và SCPs
1. IAM Policy Evaluation Logic
Thứ tự đánh giá
1. Explicit DENY → Nếu có → DENY (dừng lại)
↓
2. SCPs (Org) → Nếu không Allow → DENY
↓
3. Resource Policy → Nếu Allow → ALLOW (cho cross-account)
↓
4. Permission Boundary → Nếu không Allow → DENY
↓
5. Session Policy → Nếu không Allow → DENY
↓
6. Identity Policy → Nếu Allow → ALLOW
↓
7. Implicit DENY → Mặc định DENY
Nguyên tắc quan trọng
- Explicit Deny luôn thắng
- Deny by default - không có Allow = Deny
- Cross-account: Cần Allow từ CẢ HAI phía
2. Các loại IAM Policies
Identity-based Policies
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
Resource-based Policies
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
So sánh
| Loại | Attached to | Principal field |
|---|---|---|
| Identity-based | User, Group, Role | Không có |
| Resource-based | Resource (S3, SQS, etc.) | Bắt buộc |
3. IAM Roles
Cấu trúc Role
Trust Policy Example
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Các loại Roles phổ biến
| Loại | Principal | Use case |
|---|---|---|
| Service Role | AWS Service | EC2 instance profile |
| Cross-account Role | AWS Account | Access từ account khác |
| Identity Provider Role | Federated | SSO, SAML, OIDC |
4. Cross-Account Access
Cách 1: Resource-based Policy
Cách 2: IAM Role (Khuyến nghị)
So sánh 2 cách
| Aspect | Resource Policy | IAM Role |
|---|---|---|
| Audit | Khó hơn | Dễ hơn (CloudTrail) |
| Flexibility | Chỉ 1 resource | Nhiều resources |
| Best Practice | One-off access | Regular access |
5. Permission Boundaries
Định nghĩa
- Giới hạn maximum permissions mà identity-based policy có thể cấp
- Không cấp permissions, chỉ giới hạn
Ví dụ
Use case
- Cho phép developers tự tạo roles nhưng giới hạn permissions
- Delegated administration
6. Service Control Policies (SCPs)
Đặc điểm
- Áp dụng ở AWS Organizations level
- Ảnh hưởng tất cả principals trong account
- KHÔNG ảnh hưởng management account
SCP Strategies
Strategy 1: Deny List (Khuyến nghị)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"organizations:LeaveOrganization"
],
"Resource": "*"
}
]
}
Strategy 2: Allow List
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:*",
"s3:*"
],
"Resource": "*"
}
]
}
7. IAM Best Practices cho Professional level
- Least Privilege: Cấp quyền tối thiểu cần thiết
- Use Roles: Không dùng long-term credentials
- Enable MFA: Đặc biệt cho privileged actions
- Rotate Credentials: Định kỳ rotate access keys
- Use Conditions: Giới hạn theo IP, MFA, thời gian
- Audit Regularly: Dùng IAM Access Analyzer
8. Câu hỏi ôn tập
-
Khi có Explicit Deny và Explicit Allow, kết quả là gì?
Xem đáp án
Explicit Deny luôn thắng — kết quả là DENY bất kể có bao nhiêu Allow statements. Đây là nguyên tắc cốt lõi của IAM policy evaluation: Explicit Deny > Explicit Allow > Implicit Deny (default). Áp dụng khi đánh giá tất cả policies: identity-based, resource-based, SCP, Permission Boundary, session policies.
-
Cross-account access bằng Role khác Resource Policy như thế nào?
Xem đáp án
Role: principal B assume role trong account A → nhận temporary credentials → dùng credentials để access resources trong A. Cần trust policy (who can assume) + permission policy (what can do). Resource Policy (ví dụ S3 bucket policy): grant principal từ account B access trực tiếp, không cần assume role. Resource policy đơn giản hơn cho specific resources; Role dùng khi cần access nhiều resources hoặc cần assume identity khác.
-
Permission Boundary có thể cấp thêm quyền không?
Xem đáp án
Không — Permission Boundary chỉ giới hạn permissions tối đa (ceiling), không grant permissions. Effective permissions = intersection của Identity-based policy AND Permission Boundary. Ví dụ: Boundary cho phép S3+EC2, Identity policy cho phép S3+DynamoDB → effective chỉ là S3. Dùng Boundary để cho phép admins tạo roles/users nhưng không vượt quá scope đã định — delegate IAM safely.
-
SCP có ảnh hưởng đến management account không?
Xem đáp án
Không — Management account (root account của AWS Organization) không bị SCP apply, kể cả SCP attach vào root OU. SCPs chỉ affect member accounts. Best practice: không deploy workloads trong management account và dùng dedicated member accounts cho workloads. Management account chỉ dùng cho billing, organization management, Control Tower setup.
9. Bài tập thực hành
- Tạo IAM Role cho EC2 instance với quyền đọc S3
- Thử cross-account access (nếu có 2 accounts)
- Tạo policy với conditions (IP restriction)
Tài liệu tham khảo chính thức
- IAM User Guide
- IAM Policy Evaluation Logic
- IAM Roles
- Permission Boundaries
- Cross-Account Access
- IAM Best Practices
Ngày tiếp theo: VPC Fundamentals Review