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

[24] IAMROLE 추가

서버관리자 페페 2025. 12. 29. 18:13

[0]

플로우

1. IAM Role (신뢰정책 : ec2.amazonaws.com)

2. Role에 S3 접근 정책 부여 (READONLY or 특정 Bucket 전용 정책)

3. Instance Profile 생성 후 EC2에 연결

4. EC2의 메타데이터 서비스(IMDS)를 통해 임시 자격증명 발급

-> aws s3 ls 가능

 

-

 

[1]

해석

- EC2는 아무 키도 없고

- IAM Role도 키를 직접 주는 것은 아니며

- AWS가 IMDS를 통해 "짧은 수명의 임시 자격증명" 을 자동 발급

- SDK / CLI 가 그걸 읽어서 aws s3 ls가 된다

 

-

 

[2]

IAM Role : 이 EC2는 이런 권한을 가질 수 있다는 정의서

Trust Policy : 이 Role을 누가 사용할 수 있는지

Permission Policy : 이 Role로 무엇을 할 수 있는지

 

Instancetance Profile : 이 Role을 EC2에 부착하기 위한 포매터

 

IMDS : EC2 전용 자격증명 자동 배포 서버

STS : 임시 자격증명을 발급하는 중앙 발급소

 

-

 

[3]

IAM Role : 신뢰 정책

{
  "Effect": "Allow",
  "Principal": {
    "Service": "ec2.amazonaws.com"
  },
  "Action": "sts:AssumeRole"
}

이 Role은 사람(User) 가 아니라 EC2 서비스 자체만 가능

- 로컬 PCx 

- 다른 AWS Service x

- EC2만 가능

 

여기에는 S3 접근권한은 아직 없으며, 오직 누가 쓸 수 있냐만 정의

 

-

 

[4]

Role에 S3 접근 정책 부여 : 무엇을 할 수 있는지

{
  "Action": ["s3:ListBucket", "s3:GetObject"],
  "Effect": "Allow",
  "Resource": "*"
}

이 Role을 쓰면 이런 행동이 허용된다

User처럼 Access Key를 주는 구조가 아님

*아직 EC2에 권한은 없음

-

 

[5]

Instance Profile : Role을 EC2에  꽃는 어댑터

EC2
 └─ Instance Profile
     └─ IAM Role
         └─ Policies

EC2 내부에는 Secret Key / Access Key도 없고

단지 이런 Instance Profile이 붙어있다는 메타 정보만 보유

 

-

 

[6]
EC2 부팅 후 벌어지는 일 : AWS 인프라가 한다

- 이 instance에는 어떤 Instance Profile이 붙어 있지? -> 연결된 IAM Role 확인

- STS를 호출 : 이 EC2가 이 Role을 AssumeRole해도 되는지?

-  Trust policy 검사

- OK면 임시 자격증명 발급

AccessKeyId
SecretAccessKey
SessionToken
(유효기간 보통 6시간)

이 자격증명을 EC2 내부에 있는 IMDS 서버(169.254.169.254) 에 임시 자격증명을 자동 배치

 

[7]

EC2 내부에서 aws s3 ls 실행시 

 

1. AWS CLI의 자격증명 탐색 순서

1. 환경 변수
2. ~/.aws/credentials
3. ~/.aws/config
4. EC2 Metadata (IMDS)  ← 여기서 발견

 

2. CLI가 IMDS 호출

curl http://169.254.169.254/latest/meta-data/iam/security-credentials/

# Role 이름 반환
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/ROLE_NAME

# 임시 자격증명(JSON) 반환

 

3. CLI가 STS세션으로 서명 후 API 호출

aws s3 ls
↓
SigV4 서명
↓
S3 API 호출
↓
Policy 검사
↓
결과 반환

 

4, aws s3 ls 성공

 

-

 

[8]

이 아키텍쳐의 본질

Access Key 방식의 문제

키 유출 / 키 회전 필요 / 서버에 평문 저장

Role + IMDS방식의 장점

키 저장 없음

키 수명 짧은 (자동 회전)

탈취 리스크 최소화

권한 변경 : Role 정책만 수정

감사 : CloudTrail 추적 가능

 

-

 

[9]

EC2는 IAMRole을 직접 가지는 것이 아니라

AWS가 STS로 발급한 임시 자격증명을

IMDS를 통해 빌려 쓰는 구조

 

-

 

-.

 

 

 

[10]

왜 aws configure 없어도 동작하는지

 

-

 

[11]

왜 Private subnet에서도 S3 접근이 되는지