[0]
aws s3 ls 검색시
AWS SDK / CLI 는
1. 환경변수
2. ~/.aws/credentials
3. IMDS (Instance Role)
로 크레덴셜을 탐색하기 시작한다
-
[1]
Environment Variables
-> 하드코딩 키
보통
IAM User Access Key
STS 임시 키
CI/CD 파이프라인 키
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN # (옵션, STS일 경우)
EX)
export AWS_ACCESS_KEY_ID=AKIA....
export AWS_SECRET_ACCESS_KEY=abcd....
저장 위치 : OS 환경변수
수명 : 키 만료까지 (회전x)
보안 x
우선순위 1순위
-
[2]
로컬 자격증명 파일
~/.aws/credentials
[default]
aws_access_key_id = AKIA....
aws_secret_access_key = abcd....
[dev]
aws_access_key_id = AKIA....
aws_secret_access_key = efgh....
저장 위치 : 파일
키 종류 : IAM User Key
Profile : 여러 개 가능
CLI 사용 : aws configure
우선순위 : 2순위
---------------------------------------------
환경변수와 credentials 파일에는
"IAM User Access Key or STS 임시 키가 들어 있다
둘 다 Role 기반 키 아님.
-
[3]
EC2 Role (IMDS)와 차이
| 환경변수 / Credentials | IMDS | |
| 키 발급 주체 | IAM User or STS | STS (Role 기반) |
| 저장 위치 | OS / 파일 | Metadata API |
| 자동 회전 | ❌ | ⭕ |
| 권장 여부 | 낮음 | 높음 |
| EC2 표준 | ❌ | ⭕ |
-
[4]
실무 보안 관점
환경변수 x
credentials x
IMDS o
이것만 남겨둔다
-
[6]
cli / aws configure의 경우
-> STS token이 아닌
-> IAM User의 Long-term Credentials

그러면 저장되는 파일
~/.aws/credentials
~/.aws/config
##ex####
[default]
aws_access_key_id = AKIA....
aws_secret_access_key = abcd....
발급 주체 : IAM User
수명 : 만료 없음
발급 : IAM
token : 없음
STS개입 : 없음
즉 CLI CRUD가 가능한 이유는
IAM User 자체 권한으로 직접 AWS API 호출하는 것
-
STS 토큰과 차이
STS 사용시 credential 형태
AccessKeyId
SecretAccessKey
SessionToken ← 이게 핵심
Expiration
하지만 aws configure 기본 키에는
SessionToken 없음
Expriation 없음
-> 그래서 장기 키
-
chain
AWS CLI
↓
Access Key 서명
↓
AWS API 직접 호출
-
[7]
token을 사용하는 경우 3가지
A : MFA 세션 토큰
(aws sts get-session-token)
web 로그인시 authenticator
B : AWS SSO 로그인
CLI v2 특징
aws configure sso
aws sso login
##########동작#################
SSO 인증
↓
STS Token 발급
↓
CLI 저장
C :
Assume Role Profile
[default]
aws_access_key_id=AKIA...
aws_secret_access_key=abcd...
[prod]
role_arn = arn:aws:iam::123:role/Admin
source_profile = default
##############################################
aws s3 ls --profile prod
############# 동작 ###################3
default 키 사용
↓
sts:AssumeRole
↓
Temp Credential 발급
↓
API 호출
-
[8]
내 환경이 STS인지 확인하는 경우
1 : ~/.aws/credentials -> Session Token 있으면 STS
2: cli로 aws get-caller-identity
User ARN -> IAM User 키
Assumed-role ARN -> STS

'[2] 250909~ 클라우드 > [b] 12월 : Terraform + Ansible' 카테고리의 다른 글
| [53] AWS APP mesh (0) | 2026.02.17 |
|---|---|
| [52] "EC2 Launch Type" vs "ECS Fargate" (0) | 2026.02.17 |
| [51] EKS console view가 proxy 쓰는 이유 (0) | 2026.02.17 |
| [50] ECS Role VS EKS Role (0) | 2026.02.17 |
| [49] IAM <-> RBAC (EKS ACCESS ENTRY) (0) | 2026.02.16 |