1. IAM Role 생성하기
실습을 위해 3개의 역할을 만듭니다.
k8sAdmin 역할은 EKS 클러스터에서 admin 권한을 가집니다.
k8sDev 역할은 EKS 클러스터에서 developers 네임스페이스에 접근할 권한을 가집니다.
k8sInteg 역할은 EKS 클러스터에서 integration 네임스페이스에 접근할 권한을 가집니다.
역할을 생성합니다:
Copy 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'
이 예제 에서는 assume-role-policy는 루트 계정이 역할을 맡을 수 있도록 합니다. 우리는 특정 그룹이 그 역할을 맡을 수 있도록 할 것 입니다. 자세한 정보는 공식 문서 를 확인하십시오.
위 역할은 EKS 클러스터 내에서 인증 하는 것으로만 사용 되므로 AWS 권한이 필요하지 않습니다. 우리는 일부 IAM 그룹이 EKS 클러스터에 액세스 할 수 있는 역할을 지정 할 것입니다.
2. IAM Group 생성하기
특정 IAM 그룹에 추가 될 IAM 사용자는 쿠버네티스 클러스터에서 다른 권한을 가지게 합니다.
실습을 위해 3개의 그룹을 정의 합니다.
k8sAdmin - 이 그룹의 사용자는 쿠버네티스 클러스터에 대한 관리자 권한을 갖습니다.
k8sDev - 이 그룹의 사용자는 클러스터의 개발 네임스페이스 에서만 전체 액세스 권한을 갖습니다.
k8sInteg - 이 그룹의 사용자는 통합 네임스페이스에 액세스 할 수 있습니다.
실제로 k8sDev 및 k8sInteg 그룹의 사용자는 연결된 쿠버네티스 역할에 대한 쿠버네티스 RBAC 액세스를 정의한 네임스페이스에만 액세스 할 수 있습니다. 먼저 그룹을 생성 해 보겠습니다.
먼저 k8sAdmin IAM Group을 생성합니다.
Copy aws iam create-group --group-name k8sAdmin
이 그룹의 사용자가 k8sAdmin 역할을 맡을 수 있도록 그룹에 정책을 추가 해 봅시다.
Copy 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을 생성합니다.
Copy aws iam create-group --group-name k8sDev
이 그룹의 사용자가 k8sDev 역할을 맡을 수 있도록 그룹에 정책을 추가 해 봅시다.
Copy 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을 생성합니다.
Copy aws iam create-group --group-name k8sInteg
이 그룹의 사용자가 k8sInteg 역할을 맡도록 허용하는 정책을 그룹에 추가 하겠습니다.
Copy 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이 있어야 합니다.
3. IAM User 생성하기
시나리오를 테스트하기 위해 생성한 각 그룹별로 한 명씩 총 3명의 사용자를 생성 합니다.
Copy aws iam create-user --user-name PaulAdmin
aws iam create-user --user-name JeanDev
aws iam create-user --user-name PierreInteg
사용자를 연결된 그룹에 추가 합니다.
Copy 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
사용자가 그룹에 올바르게 추가 되었는지 확인 합니다.
Copy aws iam get-group --group-name k8sAdmin
aws iam get-group --group-name k8sDev
aws iam get-group --group-name k8sInteg
간단히 시험하기 위해 이 장에서는 사용자 간에 쉽게 전환 할 수 있도록 자격 증명을 파일에 저장 합니다. Production 혹은 특권 접근을 가진 자격 증명으로 이 작업을 수행하지 마십시오. 파일 시스템에 자격 증명을 저장하는 것은 보안 모범 사례가 아닙니다.
가짜 사용자를 위한 액세스 키를 검색 합니다:
Copy 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 9 months ago