Notice
Recent Posts
Recent Comments
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
07-16 18:20
Today
Total
관리 메뉴

해킹공주의 일상

AWS IAM 정책 설정하기(+ Action에 와일드 카드쓰기) 본문

사이드 프로젝트/클라우드

AWS IAM 정책 설정하기(+ Action에 와일드 카드쓰기)

7.3.7 2025. 6. 7. 00:06

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만 허용함)

Comments