[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 접근이 되는지
'[2] 250909~ 클라우드 > [b] 12월 : Terraform + Ansible' 카테고리의 다른 글
| [26] tfstate 개념 (0) | 2026.01.07 |
|---|---|
| [25] variables 분리 (0) | 2026.01.07 |
| [23] terraform vpc / subnet / igw / rt / sg / ec2 (0) | 2025.12.29 |
| [22] git, github (0) | 2025.12.29 |
| [21] terraform setup + s3 테스트 (0) | 2025.12.28 |
