회사에서 여러 AWS Account를 사용 중이다.
다른 Account EC2를 관리해보자.
구성
111 Account EC2 --------------------222 Account EC2
이론
111 EC2에서 222 EC2 확인하기
111에서 222를 관리하기 위해 키가 필요하다.
111에서 키를 요청한다.
111에서 CLI 권한이 필요하다. Role을 만들고 EC2, ssm 정책을 만든다. EC2에 부여한다.(admin이라면 무관)
222에서는 111에서 키 요청을 하면 허락해줘야 한다.
작업
<1> 222에 role을 만들고 트러스트 릴레이션 쉽에서 1111 account와 릴레이션 쉽을 맺는다.
<2> 111에서 222에 STS와 임시키를 요청한다. 릴레이션 쉽이 맺어져 있어 가능하다.
<3> 111 EC2에서 222 EC2 확인해본다.
<4> 다른 실습
<1> 222에 role을 만들고 트러스트 릴레이션 쉽에서 1111 account와 릴레이션 쉽을 맺는다.
1
222 accoud id 에서 작업
크로스 어카운트 롤
IAM > Roles > Create role > Another account (111 acccoud id입력)
권한을 준다 - seo-remote-role
2
보안을 위해 트러스트에 제약 설정하기
seo-remote-role > 신뢰관계 탭 > 수정 (제약하는 것이라 반드시 해야 하는 것은 아니다.)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:sts::PARTNER_ACCOUNT_NUMBER:assumed-role/CLIAssumeRole/PARTNER_INSTANCE_ID",
"arn:aws:iam::PARTNER_ACCOUNT_NUMBER:root"
]
},
"Action": "sts:AssumeRole"
}
]
}
<2> 111에서 222에 STS와 임시키를 요청한다. 릴레이션 쉽이 맺어져 있어 가능하다.
1
111에서 권한이 있어야 한다.
sts assume 권한
ec2 권한
111에서 access-key 하나 만든다.
111이 admin이라면 상관없다.
2
111에서 권한
policy
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::*:role/Rxxxxxxxxx"
},
{
"Effect": "Allow",
"Action": [ "ec2:describe*"
],
"Resource": "*"
}
]
}
policy name
Mxxxxxxxxxx
role
Cxxxxxxxx
ec2에 롤 부여
Cxxxxxxxxxxx
<3> 111 EC2에서 222 EC2 확인해본다.
1
1111 ec2 접속
2
aws configure
111에 대한 access key 필요. 권한도 있어야 한다.
3
자기 자신 ec2나 s3 확인하기
aws ec2 describe-instances --output table --query 'Reservations[].Instances[].[Tags[?Key==`Name`] | [0].Value,InstanceId,InstanceType]'
aws s3 ls
4
222 계정 접속을 위해 임시 자격증명 생성
PARTNER_ACCOUNT_NUMBER 확인 3 xxxxxxxxxx
role 확인
aws sts assume-role --role-arn arn:aws:iam::3xxxxxxxxxx:role/seo-remote-role --role-session-name seo-remote-role
값들이 나온다.
5
나온 값들을
222 계정의 임시키를 입력
export AWS_ACCESS_KEY_ID=ACCESS_KEY_ID
export AWS_SECRET_ACCESS_KEY=SECRET_ACCESS_KEY
export AWS_SESSION_TOKEN=SESSION_TOKEN
export AWS_ACCESS_KEY_ID=ASIAxxxxxxxxxxxxx
export AWS_SECRET_ACCESS_KEY=4PlTxxxxxxxxxxxxxxxx
export AWS_SESSION_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
6
222에 있는 s3와 인스턴스 정보 확인
aws s3 ls
aws ec2 describe-instances --output table --query 'Reservations[].Instances[].[Tags[?Key==`Name`] | [0].Value,InstanceId,InstanceType]'
<4> 다른 실습
https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/id_roles_use_switch-role-cli.html
감사합니다.