시나리오
- 요청 IP가 xxx.xxxx.xxx.xxx/24에 포함되지 않을 경우 요청 차단
- 요청이 AWS Servcie에서 발생한 것이 아닐 경우 차단
- 요청 VPC가 vpc-123456789, vpc-0987654321에 포함되지 않을 경우 요청 차단
- 하나의 Sid에 포함되어 있으므로 AND 조건 (OR 조건은 별도로 Sid 분리하여 작성)
- <조건>
- 요청이 허용한 IP 대역이 아니고
- 요청이 AWS Service에서 발생한 것이 아니며
- 요청이 원본 VPC가 허용된 VPC 목록에 포함되지 않는다면
- 요청은 Deny
- 즉, 모두 아니여야 Deny이므로, 위의 3가지 조건 중 1개를 만족하면 요청이 차단되지 않음
- <조건>
{
"Version": "2012-10-17",
// 정책 버전. AWS IAM 정책의 최신 버전은 "2012-10-17"입니다.
"Statement": [
{
"Sid": "AllowAllSTSAssumeRole",
// sts:AssumeRole 작업을 모든 리소스에서 허용
"Effect": "Allow",
// 명시적으로 요청을 허용합니다.
"Action": "sts:AssumeRole",
// sts:AssumeRole 작업에 대해 적용됩니다.
"Resource": "*"
// 모든 리소스에 대해 적용됩니다.
},
{
"Sid": "DenyAccessOutsideIP",
// 특정 조건을 만족하는 요청을 차단
"Effect": "Deny",
// 명시적으로 요청을 차단합니다.
"Action": "*",
// 모든 작업에 대해 적용됩니다.
"Resource": "*",
// 모든 리소스에 대해 적용됩니다.
"Condition": {
"NotIpAddressIfExists": {
// 요청의 원본 IP가 아래 지정된 IP 대역에 포함되지 않으면 차단
"aws:SourceIp": [
"xxx.xxxx.xxx.xxx/24"
// 허용된 IP 대역. 여기에 요청이 속하지 않으면 차단됩니다.
]
},
"BoolIfExists": {
"aws:ViaAWSService": "false"
// 요청이 AWS 서비스에서 발생한 것이 아니면 조건을 평가합니다.
// 즉, AWS 서비스(Lambda, Step Functions 등)가 요청한 경우 이 조건은 무시됩니다.
},
"StringNotEqualsIfExists": {
// 요청의 원본 VPC가 아래 나열된 VPC 목록에 포함되지 않으면 차단
"aws:SourceVpc": [
"vpc-1234567890",
// 허용된 VPC 1
"vpc-0987654321"
// 허용된 VPC 2
]
}
}
}
]
}
AND 조건일 경우
- 모든 조건이 True일 때, 요청이 차단
- 하나의 Statement (Sid로 묶여 있을 때)
- 요청이 허용한 IP 대역이 아니고
- AWS 서비스에서 발생한 것이 아니며
- 원본 VPC가 허용된 VPC 목록에 포함되지 않는다면
- 요청은 Deny
"Condition": {
"NotIpAddressIfExists": {
"aws:SourceIp": ["xx.248.4.0/24"]
},
"BoolIfExists": {
"aws:ViaAWSService": "false"
},
"StringNotEqualsIfExists": {
"aws:SourceVpc": ["vpc-1234567890"]
}
}
OR 조건일 경우
- 요청이 차단되지 않으려면, 조건 중 하나라도 False이여야 함
- 여러 개의 Statement (Sid로 분리되어 있을 때)
- 요청이 허용된 IP 대역이 아니거나
- 요청의 원본 VPC가 허용된 VPC 목록에 포함되지 않으면
- 요청은 Deny
{
"Sid": "DenyAccessOutsideIP",
"Effect": "Deny",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": ["xx.248.4.0/24"]
}
}
},
{
"Sid": "DenyAccessOutsideVPC",
"Effect": "Deny",
"Condition": {
"StringNotEquals": {
"aws:SourceVpc": ["vpc-1234567890"]
}
}
}
Deny가 조건상 우선이므로, 아무리 Allow 되더라도 하나가 Deny면 무조건 Deny
'Cloud Infra Architecture (AWS) > AWS Organization' 카테고리의 다른 글
[AWS Organization] 특정 Region에서 특정 AWS Service에만 접근 허용 SCP 생성 (0) | 2025.03.03 |
---|---|
[AWS Organization] 특정 시간때만 요청을 허용하는 SCP 생성 (0) | 2025.03.03 |
[AWS Organization] 특정 태그가 없는 리소스 생성 차단 SCP 생성 (0) | 2025.03.03 |
[AWS Organization] 특정 Role에 대한 Assume Role 제한 SCP 생성 (0) | 2025.03.03 |
[AWS Organization] MFA를 사용하지 않은 요청 차단 SCP 생성 (0) | 2025.03.03 |