DevSecOps/AWS Security
AWS IAM 정책의 Action vs NotAction
S0NG
2025. 7. 1. 10:11
728x90
반응형
AWS IAM 정책을 설계할 때 자주 마주치는 키워드 중 하나가 Action입니다. 하지만 이와 짝을 이루는 개념인 NotAction은 의외로 많은 사람들이 잘 이해하지 못하거나, 오해한 채 사용하는 경우가 많습니다.
이 글에서는 Action과 NotAction의 개념적 차이부터 실무 설계 시 주의할 점, 보안 사고로 이어질 수 있는 잘못된 사용 사례까지 정리합니다.
1. 기본 개념
의미 | 허용 또는 거부할 특정 작업을 명시 | 허용 또는 거부에서 제외할 작업을 명시 |
작동 방식 | 이 작업들을 허용/거부한다 | 이 작업들을 제외한 나머지를 허용/거부한다 |
주 사용 위치 | Effect: Allow 또는 Deny | 주로 Effect: Deny에서 사용 |
전형적 목적 | 명시적 권한 부여 또는 제한 | 범용 거부 정책에서 특정 예외 허용 시 사용 |
2. 예제 비교
2-1. Action 사용 예시
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": "*"
}
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": "*"
}
→ S3에서 GetObject, ListBucket 작업만 허용.
2-2. NotAction 사용 예시
{
"Effect": "Deny",
"NotAction": [
"cloudtrail:*",
"s3:GetObject"
],
"Resource": "*"
}
"Effect": "Deny",
"NotAction": [
"cloudtrail:*",
"s3:GetObject"
],
"Resource": "*"
}
→ cloudtrail:*과 s3:GetObject를 제외한 모든 작업을 거부. 즉, 특정 작업만 허용하고 나머지는 모두 막는 효과.
3. 실무 설계에서의 쓰임새
Action: 권한 허용·거부 시 기본
- 대부분의 정책은 Action을 중심으로 작성됩니다.
- 어떤 서비스의 어떤 작업을 허용할지 명확하게 정의할 수 있어, Least Privilege 설계에 적합.
NotAction: 예외 기반 제어 또는 제한적인 허용
- 특정 상황에서 모든 액션을 기본 거부하고 일부만 허용할 때 사용됩니다.
- SCP, Permissions Boundary 또는 Deny 중심 정책 설계에 활용됩니다.
4. 잘못된 사용 사례와 보안 리스크
사례: NotAction을 Effect: Allow로 사용할 경우
{
"Effect": "Allow",
"NotAction": "iam:DeleteUser",
"Resource": "*"
}
"Effect": "Allow",
"NotAction": "iam:DeleteUser",
"Resource": "*"
}
→ DeleteUser를 제외한 모든 IAM 작업을 허용. 즉, 거의 모든 작업이 허용되는 매우 위험한 정책이 됩니다.
주의: Effect: Allow와 NotAction은 매우 조합하기 까다롭고, 실수하면 과도한 권한 부여로 이어질 수 있습니다.
→ 실무에서는 Effect: Deny + NotAction 조합이 훨씬 안전하며 권장됩니다.
5. 전략적 활용 시나리오
최소 권한 모델 설계 | Action으로 명시적 허용 중심 설계 |
민감 작업을 모두 차단하고 일부만 허용 | Effect: Deny + NotAction |
특정 OU 또는 계정에서 모든 서비스 사용 금지 | SCP에서 Effect: Deny + NotAction 활용 |
IAM Role에서 예상치 못한 권한 승계를 차단 | NotAction으로 간접적인 접근 경로 제한 가능 |
6. 정리
방향성 | 허용할 작업 정의 | 제외할 작업 정의 |
주 사용 방식 | 권한 허용/거부 | 권한 거부 시 특정 작업만 허용 |
실수 시 리스크 | 제한된 권한 부여 | 과도한 권한 부여 가능성 큼 |
권장 사용 | 대부분의 정책 | Deny 중심의 보안 강화 용도에 한정 |
마무리
Action은 IAM 정책의 기본이고, NotAction은 예외적 상황에서만 신중하게 사용해야 하는 고급 기능입니다. 특히 NotAction은 Effect: Allow와 함께 쓰는 경우 과도한 권한 부여가 발생할 수 있기 때문에, 설계 목적이 명확하지 않다면 사용을 피하는 것이 안전합니다.
실무에서는 다음 원칙을 지켜야 합니다.
- 가능한 한 Action 중심으로 명시적으로 설계
- NotAction은 정말 필요한 최소한의 예외 제어에만 사용
- CloudTrail, IAM Access Analyzer 등과 연계해 권한 검증 필수
728x90
반응형