DEV환경 계정 사용자가 있다고 치자,
DEV환경에서는 Admin, TEST, LIVE 에서는 RO 권한을 주고싶다.
가장 간단한 방법은 3개의 계정을 생성하여 운영하는 것이다.
1. DEV admin 계정
2. Production ReadOnly(이하 RO) 계정
좀 복잡해보인다.
DEV 계정 <-> PROD RO Role 을 오갈 수 없을까?
어차피 권한의 문제인데?
DEV 계정 1개 로그인해서 TEST, LIVE RO Role 로 Switch 할 수 있도록 하기 위한 방법으로
Switch Role 이 있다.
타 계정 (aws account alias, account ID) 의 특정 Role 을 사용할 수 있게한다.
이를 Switch Role 이라 한다.
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:user/dev_m_falcon"
]
},
"Action": "sts:AssumeRole"
}
]
}
```
서로 다른 계정임에도 dev_m_faclon 유저는 Switch Role 이 가능해졌다.
즉, DEV 계정에 로그인하고 '역할 전환' 탭을 통해 production 계정의 Resource 에 ReadOnlyAccess 권한으로 읽기가 가능해졌다.
더 이상 여러 계정을 로그인/로그아웃 하면서 계정 전환을 할 필요가 없다.
Switch Role 등록 화면 입력시 '역할 전환' 메뉴가 활성화 된다.
DEV 계정 로그인 후 역할 전환으로 DEV <-> PROD Role 전환이 가능하다.
AWS 는 Profile 설정을 총 2가지 파일로 지원한다.
%USER_HOME%/.aws/ 경로에 config
그리고 credentials
파일이다.
본 예제에서는 credentials 파일에 DEV 계정을 설정하고,
config
파일에 Switch Role 을 명시함으로써 DEV <-> PROD Role 을 모두 사용하는 예시를 보이겠다.
[dev-mfalcon]
aws_access_key_id = [your-acess-key]
aws_secret_access_key = [your-secret-access-key]
$ export AWS_PROFILE=dev-mfalcon
[profile prod]
role_arn = arn:aws:iam::111122223333:user/PROD-ReadOnly-Role
source_profile = dev-mfalcon
dev-mfalcon
profile 로 DEV 환경 리소스를, prod
profile 로 Production 환경 리소스에 접근이 가능하다.
# production S3 버킷의 폴더 오브젝트 목록 출력
$ aws s3 ls s3://{bucket-name}/{path}/ --profile prod