해킹공주의 일상
AWS IAM 정책 설정하기(+ Action에 와일드 카드쓰기) 본문
1. IAM 정책
IAM 정책은 AWS 리소스에 대한 접근 권한을 정의하는 문서.
쉽게 말해, "어떤 사용자(또는 역할)가, 어떤 작업을, 어떤 리소스에 대해 할 수 있게 해줄지" 를 JSON 형식으로 적는 보안 룰북이라고 생각하면 된다
아래와 같이 IAM > 정책 란에서 확인할 수 있고, 정책 생성을 통해 고객 관리형 정책을 만들 수도 있음
1. AWS 관리형 정책 (AWS Managed Policy)
- AWS가 미리 만들어놓은 정책
- 클릭 한 번으로 바로 사용 가능
- 수정 ❌, 복사해서 커스터마이징은 가능
- 예: AmazonS3ReadOnlyAccess, AmazonEC2FullAccess
- 테스트용이나 빠른 설정에 좋음
2. 고객 관리형 정책 (Customer Managed Policy)
- 내가 직접 만드는 정책
- 필요한 권한만 딱 골라서 설정 가능
- 수정, 삭제, 버전 관리 모두 가능
- 실무에서 자주 씀 (보안 정책 맞춤형 설계 가능)
3. 인라인 정책 (Inline Policy)
- 특정 사용자/역할에 딱 붙는 정책
- 다른 데 재사용 ❌
- 대상 삭제하면 정책도 같이 사라짐
- 진짜 특수한 상황에만 사용 (예: 일회성 권한 부여)
📌 언제 뭘 써야 할까?
빠르게 테스트할 땐 → AWS 관리형 정책
세부적으로 권한 통제할 땐 → 고객 관리형 정책
한 사람에게만 잠깐 줄 땐 → 인라인 정책
IAM 정책 구성 요소
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "정책설명_선택사항",
"Effect": "Allow", // Allow 또는 Deny
"Action": "s3:GetObject", // 어떤 작업?
"Resource": "arn:aws:s3:::my-bucket/*" // 어떤 리소스에 대해?
}
]
}
- Version: 보통 "2012-10-17" 고정
- Statement: 실제 권한 정의 블록
- Effect: "Allow" 또는 "Deny" → 허용할지 거부할지
- Action: 무엇을 할건지. AWS API 작업명 (ec2:StartInstances, s3:GetObject 등)
- Resource: 어디에 할건지. 작업이 적용될 대상 ARN
예시 : 내 도시락 열기
"Action": "도시락:열기",
"Resource": "내 도시락"
- 내 도시락만 열 수 있음
실전 예시 : s3 버킷 다운
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/*"
- GetObject = S3에서 파일 다운로드하기
- "my-bucket/*" = 이 버킷 안의 모든 파일
Action에 *(와일드카드)을 쓰면, 대부분 Resource도 "*"로 지정해야 충돌 없이 동작한다.
>> 이게 너무 헷갈려서,,, 예시와 함께 정리한다.
Action에 와일드 카드를 쓰면 Resource에도 와일드 카드를 써야하는 이유
🎯 상황 : 너가 문 열 권한 주는 보안 시스템 만들고 있음
🎯 목표 : "모든 문(문:*)을 열 수 있게 해줄게.
❌ 잘못된 경우
"Action": "문:*",
"Resource": "우리집 현관문"
- 지금 너는 모든 문을 열 수 있는 권한을 주겠다고 해놓고,
- 실제로는 “우리집 현관문” 하나만 리소스로 지정했잖아?
- 👉 현관문 열기 → ✅ 가능
- 👉 안방문, 뒷문 열기 → ❌ 권한 없음 (리소스가 하나밖에 없으니까!)
✅ 제대로 된 경우
"Action": "문:*",
"Resource": "*"
- 모든 문 열 수 있는 권한 줌
- 모든 문이 대상임 (현관문, 안방문, 뒷문 등등)
- 👉 모든 문에서 모든 작업 가능
그대로 AWS 에 적용하면 아래와 같다.
❌ 잘못된 정책:
"Action": "ec2:*",
"Resource": "arn:aws:ec2:ap-northeast-2:123456789012:instance/i-123456"
- EC2의 모든 작업을 주겠다고 해놓고,
- 실제로는 EC2 인스턴스 하나만 지정함
- 👉 근데 ec2:*엔 VPC, EBS, 보안그룹 작업도 포함되어 있음
- 👉 결과: 대부분 실패함
✅ 바람직한 정책:
"Action": "ec2:*",
"Resource": "*"
- EC2의 모든 작업 가능
- EC2의 모든 리소스에 대해 허용됨
👉 결론
Action에 "ec2:*" 같은 와일드카드 작업을 쓰면,
그 작업들이 다루는 리소스도 다양하니까 "Resource": "*"로 풀어줘야 잘 작동함.
단! 일부 민감한 작업은 "Resource": "*" 못 씀
예: ApplySecurityGroupsToClientVpnTargetNetwork(이건 반드시 딱 맞는 리소스 ARN만 허용함)
'사이드 프로젝트 > 클라우드' 카테고리의 다른 글
AWS 과금방지 리소스 검토 PYTHON 스크립트 (0) | 2025.06.12 |
---|---|
AWS 보안 그룹 소스 대상 유형 쉽게 정리하기 (0) | 2025.06.07 |
EC2 인스턴스 SSH로 접속하기(Mobaxterm 사용) (0) | 2025.06.06 |
AWS 개발/운영, 운영/운영 시스템 간 접근 통제 점검하기(VPC 기준) (0) | 2025.05.31 |
IAM Identify Center 패스워드 정책 설정 (0) | 2025.02.19 |
Comments