IAM Role, Group & User 생성하기
1. IAM Role 생성하기
실습을 위해 3개의 역할을 만듭니다.
k8sAdmin 역할은 EKS 클러스터에서 admin 권한을 가집니다.
k8sDev 역할은 EKS 클러스터에서 developers 네임스페이스에 접근할 권한을 가집니다.
k8sInteg 역할은 EKS 클러스터에서 integration 네임스페이스에 접근할 권한을 가집니다.
역할을 생성합니다:
POLICY=$(echo -n '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::'; echo -n "$ACCOUNT_ID"; echo -n ':root"},"Action":"sts:AssumeRole","Condition":{}}]}')
echo ACCOUNT_ID=$ACCOUNT_ID
echo POLICY=$POLICY
aws iam create-role \
--role-name k8sAdmin \
--description "Kubernetes administrator role (for AWS IAM Authenticator for Kubernetes)." \
--assume-role-policy-document "$POLICY" \
--output text \
--query 'Role.Arn'
aws iam create-role \
--role-name k8sDev \
--description "Kubernetes developer role (for AWS IAM Authenticator for Kubernetes)." \
--assume-role-policy-document "$POLICY" \
--output text \
--query 'Role.Arn'
aws iam create-role \
--role-name k8sInteg \
--description "Kubernetes role for integration namespace in quick cluster." \
--assume-role-policy-document "$POLICY" \
--output text \
--query 'Role.Arn'
위 역할은 EKS 클러스터 내에서 인증 하는 것으로만 사용 되므로 AWS 권한이 필요하지 않습니다. 우리는 일부 IAM 그룹이 EKS 클러스터에 액세스 할 수 있는 역할을 지정 할 것입니다.
2. IAM Group 생성하기
특정 IAM 그룹에 추가 될 IAM 사용자는 쿠버네티스 클러스터에서 다른 권한을 가지게 합니다.
실습을 위해 3개의 그룹을 정의 합니다.
k8sAdmin - 이 그룹의 사용자는 쿠버네티스 클러스터에 대한 관리자 권한을 갖습니다.
k8sDev - 이 그룹의 사용자는 클러스터의 개발 네임스페이스 에서만 전체 액세스 권한을 갖습니다.
k8sInteg - 이 그룹의 사용자는 통합 네임스페이스에 액세스 할 수 있습니다.
먼저 k8sAdmin IAM Group을 생성합니다.
aws iam create-group --group-name k8sAdmin
이 그룹의 사용자가 k8sAdmin 역할을 맡을 수 있도록 그룹에 정책을 추가 해 봅시다.
ADMIN_GROUP_POLICY=$(echo -n '{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAssumeOrganizationAccountRole",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::'; echo -n "$ACCOUNT_ID"; echo -n ':role/k8sAdmin"
}
]
}')
echo ADMIN_GROUP_POLICY=$ADMIN_GROUP_POLICY
aws iam put-group-policy \
--group-name k8sAdmin \
--policy-name k8sAdmin-policy \
--policy-document "$ADMIN_GROUP_POLICY"
먼저 k8sDev IAM Group을 생성합니다.
aws iam create-group --group-name k8sDev
이 그룹의 사용자가 k8sDev 역할을 맡을 수 있도록 그룹에 정책을 추가 해 봅시다.
DEV_GROUP_POLICY=$(echo -n '{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAssumeOrganizationAccountRole",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::'; echo -n "$ACCOUNT_ID"; echo -n ':role/k8sDev"
}
]
}')
echo DEV_GROUP_POLICY=$DEV_GROUP_POLICY
aws iam put-group-policy \
--group-name k8sDev \
--policy-name k8sDev-policy \
--policy-document "$DEV_GROUP_POLICY"
먼저 k8sInteg IAM Group을 생성합니다.
aws iam create-group --group-name k8sInteg
이 그룹의 사용자가 k8sInteg 역할을 맡도록 허용하는 정책을 그룹에 추가 하겠습니다.
INTEG_GROUP_POLICY=$(echo -n '{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAssumeOrganizationAccountRole",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::'; echo -n "$ACCOUNT_ID"; echo -n ':role/k8sInteg"
}
]
}')
echo INTEG_GROUP_POLICY=$INTEG_GROUP_POLICY
aws iam put-group-policy \
--group-name k8sInteg \
--policy-name k8sInteg-policy \
--policy-document "$INTEG_GROUP_POLICY"
이제 3개의 IAM Group이 있어야 합니다.
aws iam list-groups

3. IAM User 생성하기
시나리오를 테스트하기 위해 생성한 각 그룹별로 한 명씩 총 3명의 사용자를 생성 합니다.
aws iam create-user --user-name PaulAdmin
aws iam create-user --user-name JeanDev
aws iam create-user --user-name PierreInteg
사용자를 연결된 그룹에 추가 합니다.
aws iam add-user-to-group --group-name k8sAdmin --user-name PaulAdmin
aws iam add-user-to-group --group-name k8sDev --user-name JeanDev
aws iam add-user-to-group --group-name k8sInteg --user-name PierreInteg
사용자가 그룹에 올바르게 추가 되었는지 확인 합니다.
aws iam get-group --group-name k8sAdmin
aws iam get-group --group-name k8sDev
aws iam get-group --group-name k8sInteg
가짜 사용자를 위한 액세스 키를 검색 합니다:
aws iam create-access-key --user-name PaulAdmin | tee /tmp/PaulAdmin.json
aws iam create-access-key --user-name JeanDev | tee /tmp/JeanDev.json
aws iam create-access-key --user-name PierreInteg | tee /tmp/PierreInteg.json
다시 정리해 보면:
Pauladmin은 k8sadmin 그룹에 있으며 k8sadmin 역할을 맡습니다.
Jeandev는 k8sdev 그룹에 있으며 IAM 역할 k8sdev를 맡습니다.
Pierreinteg는 k8sinteg 그룹에 있으며 IAM 역할 k8sinteg를 맡습니다.
Last updated
Was this helpful?