[2] 250909~ 클라우드/[b] 12월 : Terraform + Ansible

[38] Policy 정리 (ECS fargate(taskEXE) / EC2->S3 / cloudfront-> S3 )

서버관리자 페페 2026. 2. 9. 21:23

[1]

ECS -> Service

ECS cluster -> Service -> TASK -> Task용 container

 

1.

doc 작성 // trust-policy

  • ecs-tasks.amazonaws.com 이 이 Role을 ‘가져다 쓸 수 있다(Assume)’”라는 신뢰 관계 선언
  • 즉 **자격증명(temporary credentials) 발급 루트(=STS)**로 가기 위해

 

2.

role 생성

 

 

3.

policy_attachment (Permission_policy)

여기에 붙이는 AmazonECSTaskExecutionRolePolicy는 보통 이런 권한 포함

- ECR에서 이미지 Pull

- CloudWatch Logs로 로그 전송

- (상황에 따라) SSM Parameter Store / Secrets Manager 읽기 등

 

* ECS 서비스가 task를 실행하기보다

* TASK가 시작될 떄 EC2 Agent / Fargate가 태스크를 대신해서 필요한 작업을 수행하기 위한 권한

* 그래서 이름도 task_exec(Execution Role) 이다.

 

서비스에

- cluster.id

- task_definition.id

를 매핑하고

 

task (definition) 에 role.arn을 할당

 

-----------------------------------------------------------

 

[2]

EC2 -> S3

IDENTITY_BASED

EC2는 내부 서비스로서 IAMROLE

 

1. doc 생성 : actions = ["sts:Assume"] 필요 // trust policy

2. Role 생성 

3. role에 policy attachment : S3 Readonly // permission Policy

4. EC2에 부착하기 위해 instance_profile에 ROLE 장착

 

 

 

 

---------------------------------------------------------------------------------------------------------

 

[3]

Cloudfront -> S3

Resource-based

(cloudfront는 API 호출이 아닌 S3 직접  허용 / externel proxy service로 간주)

1. doc 작성 : actions = ["S3:getObject"]

doc 안에 service principal이 들어간다 (cloudfront)

 

2. S3_bucket_policy(resource_based) 에 위 doc.json 장착

 

S3 내부 버킷 리소스를 "대신 받아서" 사용자에게 전달

사용자 대신 GET 수행

global edge location에서 접근

 

즉 S3 입장에서는 "누군가 인터넷 너머에서 내 객체를 가져가려 한다."

-> 그래서 서비스 프린시펄을 둔다

 

-

 

그런데 Cludfront라면 전부 허용은 너무 넓다

-> condition을 둔다

 

dst가 인증되었을 떄만

 

-

 

+ OAC

cloudfront가 S3에 접근할 때 "자기 신분증" 을 들고 가게 만드는 장치

 

OAC 붙이면 Cloudfront가 요청 보낼 떄

GET /index.html
Authorization: AWS4-HMAC-SHA256 ...

즉 

- SigV4 서명 수행

- IAM 인증 체계 편입

- S3가 "신뢰 가능한 호출" 로 인식

 

-

 

Distribution 단계에서는

- S3 접근 권한 없어도 생성 가능하다

- 단순히 Origin 주소만 등록하는거다

(케이블 꽃기만 한 상태)

 

-

 

실제 콘텐츠 요청은 (*여기서 권한 필요)

1. bucket policy 허용

2. service principal 조건

3. OAC 서명 일치

이게 안 맞으면?

-> 403 Access Denied

*일종의 ping은 가는데 SSH로그인 실패한 상태

 

-

 

[User]
   ↓
CloudFront Edge
   ↓ (OAC 서명)
S3 Bucket Policy 검증
   ↓
Object GET

 

DST 존재 -> 라우팅 가능

OAC 존재 -> 인증 가능

Buckey Policy 존재 -> 인가 가능

Object 존재 -> 응답 가능

 

-

 

Cloudfront는 대리 수령자

OAC는 위임장 서명

Bucket Policy는 창고 출입 허가서

->  셋이 동시에 맞아야 s3 object 물건이 나ㅇㄴ다

 

구분EC2 → S3CloudFront → S3

접근 주체 IAM Role AWS Service
인증 방식 STS Token OAC SigV4
정책 유형 Identity Policy Resource Policy
네트워크 위치 내부 외부 프록시
Principal arn:aws:iam cloudfront.amazonaws.com

'[2] 250909~ 클라우드 > [b] 12월 : Terraform + Ansible' 카테고리의 다른 글

[40] Dockerd / Containerd / runc + k8s  (0) 2026.02.10
[39] Execution Role vs Task Role  (0) 2026.02.10
[37] ECS  (0) 2026.02.07
[36] 명령어 모음  (0) 2026.02.07
[35] tier-3 + DB테스트  (0) 2026.02.06