AWS Named Profiles 설정
Source: Dev.to
Introduction
여러 AWS 계정을 사용할 때 각 작업에 어떤 계정을 사용할지 AWS CLI와 Terraform에 알려줄 방법이 필요합니다. 이름이 지정된 프로파일(named profiles)은 편리한 해결책을 제공합니다.
What Is an AWS Named Profile?
이름이 지정된 프로파일은 특정 AWS 계정 내의 특정 아이덴티티를 나타내는 자격 증명과 구성 설정의 모음입니다. 로컬 AWS 구성 파일에 프로파일을 한 번 정의해 두면, 자격 증명을 계속 전환하거나 명령줄 인수로 전달할 필요 없이 이름으로 참조할 수 있습니다.
Typical profile names
management-admin– 관리 계정에 대한 관리자 접근 권한backend-dev-admin– 개발 계정에 대한 관리자 접근 권한backend-prod-developer– 프로덕션에 대한 제한된 개발자 접근 권한
Using Named Profiles with Terraform
provider "aws" {
region = "us-east-1"
profile = "backend-dev-admin"
}
Terraform가 실행될 때, 로컬 AWS 구성 파일에서 지정된 프로파일을 찾아 인증을 수행합니다.
AWS Configuration Files
프로파일은 홈 디렉터리에 있는 두 파일에 정의됩니다:
~/.aws/credentials– 인증 자격 증명(액세스 키 또는 SSO 구성)을 저장~/.aws/config– 지역 및 출력 기본값을 저장
Authentication Methods
1. AWS SSO (Recommended)
SSO는 자동으로 만료되는 임시 자격 증명을 제공하여 AWS 모범 사례에 부합합니다.
~/.aws/credentials
[profile management-admin]
sso_start_url = https://mycorp.awsapps.com/start
sso_region = us-east-1
sso_account_id = 123456789012
sso_role_name = AdministratorAccess
~/.aws/config
[profile management-admin]
region = us-east-1
output = json
Using an SSO Profile
# Log in to the SSO profile (opens a browser)
aws sso login --profile management-admin
# Verify the credentials
aws sts get-caller-identity --profile management-admin
2. Long‑Lived Access Keys (Discouraged)
정적 액세스 키를 저장할 수는 있지만 자동으로 만료되지 않아 보안 위험이 높아 권장되지 않습니다.
# ~/.aws/credentials (avoid if possible)
[management-admin]
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Important: 프로파일 접두사가 없는 기본 프로파일은 별도의 프로파일을 지정하지 않을 때 사용됩니다. 안전을 위해 기본 프로파일은 설정하지 않는 것이 좋습니다.
Verifying Profile Configuration
SSO Profiles
aws sso login --profile management-admin # Opens browser for authentication
aws sts get-caller-identity --profile management-admin
Access‑Key Profiles
aws sts get-caller-identity --profile management-admin
성공적인 호출은 다음과 같은 JSON을 반환합니다:
{
"UserId": "AROA...:user@example.com",
"Account": "123456789012",
"Arn": "arn:aws:sts::123456789012:assumed-role/AdministratorAccess/user@example.com"
}
Additional Checks
# List S3 buckets
aws s3 ls --profile management-admin
# List EC2 instances in a specific region
aws ec2 describe-instances --region us-east-1 --profile management-admin
UnauthorizedOperation 또는 AccessDenied 오류가 발생하면, 해당 프로파일에 연결된 IAM 사용자 또는 역할에 필요한 권한이 있는지 확인하십시오.
Working Without SSO
SSO가 아직 활성화되지 않은 경우, Terraform/Terragrunt 워크플로에 필요한 최소 권한을 가진 전용 IAM 사용자를 생성할 수 있습니다. 해당 사용자의 액세스 키를 이름이 지정된 프로파일(예: acme-root)에 저장하고 위의 검증 절차를 그대로 사용합니다.
Summary
~/.aws/credentials와~/.aws/config에 이름이 지정된 프로파일을 정의합니다.- 보안성과 임시성을 위해 AWS SSO를 우선 사용합니다.
- Terraform이나 기타 CLI 명령을 실행하기 전에
aws sso login --profile <profile>을 실행합니다. - 각 프로파일을
aws sts get-caller-identity와 기본 리소스 목록 명령으로 검증합니다.
적절히 구성된 이름이 지정된 프로파일을 사용하면 여러 AWS 계정을 안전하게 관리하고 Terraform 및 Terragrunt를 사용해 인프라를 배포할 수 있습니다.