IAM Policy - Nâng cao
IAM Conditions
AWS IAM xử lý các policy theo thứ tự sau:
- Explicit Deny → luôn được ưu tiên cao nhất (chặn chắc chắn).
- Explicit Allow → cho phép nếu không bị deny.
- Implicit Deny (ngầm định) → mọi thứ không được allow rõ ràng đều bị từ chối.
Giới hạn địa chỉ IP client mà từ đó các lệnh API được thực hiện.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": ["192.0.2.0/24", "203.0.113.0/24"]
}
}
}
]
}👉 IAM Policy trên sẽ từ chối tất cả các hành động (Action: "*") trên mọi tài nguyên (Resource: "*") nếu IP nguồn không thuộc các dải IP được chỉ định (NotIpAddress với aws:SourceIp).
Giới hạn vùng (region) mà các lệnh API được thực hiện đến.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": ["ec2:*", "rds:*", "dynamodb:*"],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:RequestedRegion": ["eu-central-1", "eu-west-1"]
}
}
}
]
}👉 Policy này từ chối tất cả hành động liên quan đến EC2, RDS và DynamoDB nếu yêu cầu được gửi đến các vùng eu-central-1 hoặc eu-west-1 (theo điều kiện StringEquals với aws:RequestedRegion).
Giới hạn thao tác EC2 dựa trên Tag
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["ec2:StartInstances", "ec2:StopInstances"],
"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*",
"Condition": {
"StringEquals": {
"ec2:ResourceTag/Project": "DataAnalytics",
"aws:PrincipalTag/Department": "Data"
}
}
}
]
}Cho phép người dùng khởi động (Start) và tắt (Stop) các EC2 instance chỉ khi:
- EC2 đó có tag
Project = DataAnalytics - Và người dùng (Principal) có tag
Department = Data
Bắt buộc dùng MFA để thực hiện hành động nguy hiểm
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:*",
"Resource": "*"
},
{
"Effect": "Deny",
"Action": ["ec2:StopInstances", "ec2:TerminateInstances"],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": false
}
}
}
]
}- Cho phép thực hiện mọi thao tác EC2
- Nhưng từ chối hai hành động quan trọng là
StopInstancesvàTerminateInstancesnếu người dùng không bật MFA
IAM for S3
- Bucket-level permission:
s3:ListBucketáp dụng cho:
→arn:aws:s3:::test
👉 Nghĩa là: quyền thao tác ở cấp độ bucket
- Object-level permission:
- Các quyền:
s3:GetObject,s3:PutObject,s3:DeleteObjectáp dụng cho:
→arn:aws:s3:::test/*
👉 Nghĩa là: quyền thao tác ở cấp độ object trong bucket

Resource Policies & aws:PrincipalOrgID
aws:PrincipalOrgIDcó thể được dùng trong bất kỳ resource policy nào để giới hạn quyền truy cập chỉ dành cho các tài khoản là thành viên của một AWS Organization.

Bạn thấy bài này thế nào?