실습 4탄 = 8/17
인증은 로그인이다.
인가는 권한이다.
로그인이 되었다고, 다 사용할 수 있는 건 아니다. 권한이 있어야 한다.
CLI로 IAM계정 생성과 정책을 적용해 보자
CLI로 IAM계정 생성
CLI로 IAM계정에 권한 부여(정책 적용)
역할 전환 , STS Assume 정책으로 전환 실습해보자
CLI로 웹 콘솔 계정과 Access-key를 만들어 보자
1
ec2 keypair 필요함
EC2 > Keypairs
masterseo-t6-2221
2
명령용 EC2 또는 Cloud9이 사용할 role 생성과 기존 VPC에 클러스터 생성의 Cloudformation으로 생성
Cloudformation
싱가포르 리전
서울 리전
3
https://brunch.co.kr/@topasvga/1814
스택 이름
eks-work-host
(나중에 조회 이름으로 사용함, 동일하게 스택 이름 사용 필요)
ClusterBaseName
eks-work
vpc와 ec2 생성됨.
4
admin role 생성,
EC2에 Admin-role을 부여 필요
seo-admin-role
참고
https://brunch.co.kr/@topasvga/1876
or
EC2를 수동으로 만들어도 된다
5
eks-work-host 서버에 로그인
ec2
putty
6
CLI로 IAM 계정 생성
현재 자격증명 확인
aws sts get-caller-identity
[root@eksctl-host ~]# aws sts get-caller-identity
{
"UserId": "AROAWSA5ESYZXxxxxxxxx",
"Account": "2684083",
"Arn": "arn:aws:sts::324083:assumed-role/seo-adrole/i-044d 035bb"
}
1
IAM 계정 생성 ?
aws iam create-user --user-name ssssss
dev-aws와 infra-aws 계정 2개 만든다.
for User in dev-aws infra-aws; do aws iam create-user --user-name $User ; done
2
iam 사용자 전체 보기 - 리스트
aws iam list-users
aws iam list-users --output table
|| Arn | CreateDate | Path | UserId | UserName ||
|| arn:aws:iam::26993:user/dev-aws | 2021-09-05T12:1400 | / | A | dev-aws ||
|| arn:aws:iam::26993:user/infra-aws | 2021-09-05T12:14:00:00 | / | AI | infra-aws
3
웹 콘솔 암호 설정
IamPassword=g1002
for User in dev-aws infra-aws; do aws iam create-login-profile --user-name $User --password $IamPassword --no-password-reset-required ;done
4
// Access-Key 생성 명령어
for User in dev-aws infra-aws; do aws iam create-access-key --user-name $User | tee $User.key; done
5
iam access-key 확인
User1='dev-aws'
echo "<<$User1>>"; jq -r .AccessKey.AccessKeyId $User1.key; jq -r .AccessKey.SecretAccessKey $User1.key;
User2='infra-aws'
echo "<<$User2>>"; jq -r .AccessKey.AccessKeyId $User2.key; jq -r .AccessKey.SecretAccessKey $User2.key;
그냥 수동으로 EC2 2대 생성 하자.
or
1
Cloudformation
스택이름
eks-work-host
도쿄
싱가포르
서울
t3로 배포
- ClusterBaseName** : 반드시 'EKS' 배포할때의 'ClusterBaseName' 이름과 동일하게 설정할것!
- MyIamUser1AccessKeyID, MyIamUser1SecretAccessKey : dev-aws 의 액세스키/시크릿키 입력
- MyIamUser2AccessKeyID, MyIamUser2SecretAccessKey : infra-aws 의 액세스키/시크릿키 입력
my-iampc.yaml
2
웹 콘솔 > ec2 에서 확인
3
eks-work-host 의 vpc, subnet, 공인IP 확인?
스택이름
eks-work-host
aws cloudformation describe-stacks --stack-name eks-work-host --query 'Stacks[*].Outputs[*]' --output text
RouteTable rtb-0b820e9c448f91e5a
VPC vpc-0ddf7e3cfecb2b79a
WorkerSubnets subnet-035eb98554cafec80,subnet-0e57e80cbcaa8da39,subnet-083174b1cc7cc5ce7
eksctlhost 18.139.111.168
4
user1-host , user2-host ec2에 각각 ssh 접속하여 자격증명 확인
aws sts get-caller-identity
export |grep AWS
grep AWS ~/.bashrc
aws s3 ls
1
command-host에서 정책 생성과 iam user에 적용
aws iam list-policies
(admin이라 권한이 다 나옴)
2
IAM user 2개에 정책 부여 한다.
dev-aws = s3 full 부여
infra-aws = s3 read , ec2 read 부여
aws iam attach-user-policy --user-name dev-aws --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
aws iam attach-user-policy --user-name infra-aws --policy-arn arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess
aws iam attach-user-policy --user-name infra-aws --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
3
권한 확인
for User in dev-aws infra-aws; do aws iam list-attached-user-policies --user-name $User ; done
4
dev-aws 권한 확인 = s3 full
user1-host ssh 접속
aws s3 ls
aws s3 mb s3:/seo-bk1
aws s3 rb s3:/seo-bk1
ec2 조회
aws ec2 describe-vpcs
권한 없음
5
infra-aws 권한 = s3 read , ec2 read
user2-host ssh 접속
aws s3 ls
aws s3 mb s3:/masterseo-bk2
-> s3 생성은 안된다.
ec2 조회
aws ec2 describe-vpcs
ec2는 됨
제어 당하는쪽에서 role을 만든다.
ec2 full 이나 admin
1단계
ec2 full 역할(role)을 만든다.
상대가 사용하도록 하려면 상대의 Another AWS Account id 를 입력한다.
arn 기록한다.
2단계
sts assume role을 만들고 (이때 ec2 full role arn을 적용한다)
개발자 계정에 assume role을 적용하여, ec2 full 권한을 사용할수 있도록 한다.
설명
1
IAM 역할은 임시 자격 증명이다.
임시적으로 일정 시간만 자격을 갖는것이다.
역할은 정책처럼 장기적으로 권한을 가지지 못한다.
2
개인 계정 ID확인
aws sts get-caller-identity --output text
3
AWS 웹 콘솔에서
역할 만들기
IAM > Roles > Create role > EC2 full 권한 주기 >
seo-ec2full-role
> 역할 ARN 확인 (기록 요망)
arn:aws:iam::032684083:role/seo-ec2full-role
만약 다른 계정에서 관리하고 싶다면
IAM > Roles > Create role > 다른 AWS 계정 > AWS Account ID입력
4
생성된 역할 확인
aws iam get-role --role-name seo-ec2full-role | jq -r ".Role.Arn"
5
AWS 웹 콘솔에서
위임을 위한 새로운 assume 정책 생성
IAM > 정책 > Create Policy > STS > 쓰기 AssumeRole > Specify > Add arn
Specify ARN for role 란에 위에서 만든 role ARN 입력
arn:aws:iam::22222:role/seo-ec2full-role
seo-ec2full-policy
6
dev-aws 사용자에게 위임 assume 정책 적용
account id 변수지정
ACCOUNT_ID=`aws sts get-caller-identity --query 'Account' --output text`
echo $ACCOUNT_ID
dev-aws 사용자에게 seo-ec2full-policy를 사용할수 있도록 위임 정책 적용
aws iam attach-user-policy --user-name dev-aws --policy-arn arn:aws:iam::$ACCOUNT_ID:policy/seo-ec2full-policy
7
정책 확인
aws iam list-attached-user-policies --user-name dev-aws
8
dev-aws 로 웹콘솔 로그인
계정 ID
사용자 이름 dev-aws
암호
s3 생성, 삭제 - 잘됨.
ec2 생성 , 삭제 - 안됨
9
웹 콘솔
오른쪽 위
dev-aws 에서 역할 전환 (switch)
역할전환
계정 : (Aws account id )
역할 : seo-ec2full-role
역할 전환
EC2 생성 , 삭제 해보자.
된다.
1
임시 자격 증명 확인
aws sts get-caller-identity
2
https://brunch.co.kr/@topasvga/1354
3
https://brunch.co.kr/@topasvga/547
4
https://brunch.co.kr/@topasvga/1353
5
교차 계정 실습
https://whchoi98.gitbook.io/aws-iam/iam-role#role-switch-1
6
https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html
1
cloudformation 삭제
2
웹 콘솔에서 정책, 역할 삭제
또는
CLI로 삭제 (선택)
ACCOUNT_ID=aws sts get-caller-identity --query 'Account' --output text
정책 삭제
role 이름 교체 필요 seo-ec2full-role
정책 교체 필요 seo-ec2full-policy
명령 예)
aws iam detach-user-policy --user-name dev-aws --policy-arn arn:aws:iam::$ACCOUNT_ID:policy/seo-ec2full-policy
aws iam delete-policy --policy-arn arn:aws:iam::$ACCOUNT_ID:policy/seo-ec2full-policy
역할 삭제
aws iam detach-role-policy --role-name seo-ec2full-role --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess
aws iam delete-role --role-name seo-ec2full-role
https://brunch.co.kr/@topasvga/1879
감사합니다.