웹 콘솔: ID/비밀번호(+MFA)로 로그인.
CLI/SDK: 자격증명으로 API 호출. 대표 소스
AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY …~/.aws/credentials, ~/.aws/config의 프로파일.gitignore 예:
.terraform/,*.tfstate,*.tfvars,terraform.tfstate.backup
aws configure vs SSO설정 예 (세션 한 번만):
export AWS_ACCESS_KEY_ID=AKIA...
export AWS_SECRET_ACCESS_KEY=...
export AWS_PROFILE=dev # 프로파일 지정 시
주의: 현재 셸/프로세스의 환경에 평문으로 남습니다. 터미널 기록·프로세스 검사 등으로 노출 위험이 있어 상시 사용은 지양.
사용 용도: 일시 테스트나 CI에서 단기 토큰만 주입.
aws configure(프로파일 파일에 저장) - 지금 학원에서 사용하는 방식실행:
aws configure # default 프로파일
aws configure --profile dev
저장 위치: ~/.aws/credentials, ~/.aws/config (Windows: C:\Users\<you>\.aws\...) (AWS 문서)
중요: 이 파일들은 평문 텍스트. 암호화가 아니라 파일 권한(예: 600) 으로 보호합니다. 필요 시 권한을 점검하세요. (AWS 문서)
장점: 브라우저 로그인 → 단기 자격증명 발급, 장기 키 보관 불필요.
설정:
aws configure sso
aws sso login --profile my-sso
이후 aws sts get-caller-identity --profile my-sso로 확인. (AWS 문서)
aws sts get-caller-identity
# 출력: Account, Arn(사용자/역할), UserId
“지금 어떤 사용자/역할로 호출 중인지”를 알려주는 표준 확인법 (AWS 문서)
# providers.tf
provider "aws" {
region = "ap-northeast-2"
profile = "dev" # ~/.aws/{credentials,config}의 dev 프로파일 사용
}
Terraform AWS Provider는 AWS의 표준 자격증명 체인을 그대로 사용합니다. (프로파일/환경변수/역할 등) (registry.terraform.io)
provider "aws" {
region = "ap-northeast-2"
profile = "dev-base" # 베이스 자격증명
assume_role {
role_arn = "arn:aws:iam::123456789012:role/TerraformRole"
session_name = "tf-apply"
}
}
베이스 자격증명으로 임시 역할을 받아 작업합니다(권장 패턴). (registry.terraform.io)
~/.aws/credentials
[default]
aws_access_key_id=AKIA...
aws_secret_access_key=...
[dev]
aws_access_key_id=AKIA...
aws_secret_access_key=...
~/.aws/config
[default]
region=ap-northeast-2
output=json
[profile dev]
region=ap-northeast-2
두 파일은 평문. 접근 권한을 제한(예:
chmod 600 ~/.aws/credentials). (AWS 문서)
AWS_PROFILE로 명시aws sts get-caller-identity로 확인 (AWS 문서)aws configure로 넣으면 암호화된다?” → 아니요. 평문 파일입니다. 다만 기본적으로 로컬 파일 권한으로 보호되고, 통신은 TLS로 암호화. 저장 자체가 암호화되는 건 아님. (AWS 문서)키를 코드에 넣지 말고, 로컬은 프로파일/SSO, 서버는 Role 기반 단기 자격증명으로. 저장 파일은 평문이니 권한 관리와 최소 권한 원칙을 지키자. (AWS 문서)