AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
Amazon EKS 클러스터에 액세스할 수 있도록 SSO 사용자를 구성하려면 어떻게 해야합니까?
AWS IAM Identity Center(AWS Single Sign-On의 후속 서비스)를 사용하고 있습니다. 하지만 Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터에 액세스할 수 없습니다. SSO 사용자가 제 클러스터에 액세스할 수 있도록 구성하고 싶습니다.
해결 방법
다음 사전 조건을 충족하는지 확인합니다.
- IAM ID 센터를 켜고 구성했습니다.
- SSO 사용자는 Amazon EKS 클러스터가 있는 AWS 계정과 연결되어 있습니다.
참고: 다음 단계에서는 kubectl을 사용하여 클러스터에 액세스합니다. kubectl 액세스를 구성한 후, IAM Identity Center 사용자로 로그인하여 Amazon EKS 콘솔에서 클러스터 리소스를 볼 수 있습니다.
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하십시오.
SSO 사용자를 사용하도록 AWS CLI를 구성
AWS CLI 명령을 실행할 때 SSO 인증을 사용하는 AWS Command Line Interface(AWS CLI) 프로필을 생성합니다. 자세한 내용은 AWS IAM Identity Center(AWS Single Sign-On의 후속 서비스)를 사용하도록 AWS CLI 구성을 참조하십시오.
다음은 자동 절차를 사용한 AWS CLI SSO 구성의 예입니다.
aws configure sso SSO start URL [None]: https://my-sso-portal.awsapps.com/start SSO region [None]: us-east-1
AWS CLI는 사용자의 기본 브라우저를 열고 IAM Identity Center 계정에 대한 로그인 프로세스를 시작하려고 시도합니다.
Attempting to automatically open the SSO authorization page in your default browser.
AWS CLI에서 브라우저를 열 수 없는 경우 로그인 프로세스를 수동으로 시작하는 방법에 대한 지침이 포함된 다음 메시지가 나타납니다.
If the browser does not open or you wish to use a different device to authorize this request, open the following URL: https://device.sso.us-east-2.amazonaws.com/ Then enter the code: XXXX-XXXX The only AWS account available to you is: 123456789999 Using the account ID 123456789999 The only role available to you is: ViewOnlyAccess Using the role name "ViewOnlyAccess" CLI default client Region [us-east-2]: CLI default output format [json]: CLI profile name [ViewOnlyAccess-123456789999]: test-profile To use this profile, specify the profile name using --profile, as shown: aws s3 ls --profile test-profile
이제 이 새 프로필을 사용하여 AWS CLI 명령을 실행할 수 있습니다. 이 구성을 통해 SSO 사용자는 다음 작업을 수행할 수 있습니다.
- AWS로 인증합니다.
- IAM Identity Center에서 생성한 AWS Identity and Management(IAM) 역할을 가정합니다.
예:
$ aws sts get-caller-identity { "UserId": "AROAXMRV33N1234567890:test-user", "Account": "123456789999", "Arn": "arn:aws:sts::123456789999:assumed-role/AWSReservedSSO_ViewOnlyAccess_05a3861234567890/test-user" }
SSO용으로 생성한 AWS CLI 프로필을 사용하도록 kubectl 컨텍스트를 구성
kubectl은 AWS CLI 명령을 사용합니다. 따라서 kubectl의 현재 컨텍스트에서 새 AWS CLI 프로필을 지정해야 합니다. 새 프로필을 사용하도록 kubectl 컨텍스트를 업데이트하려면 다음 명령을 실행합니다.
aws eks update-kubeconfig --name $CLUSTER-NAME --profile test-profile
이 명령을 실행한 후 kubectl은 프로필 test-profile을 사용하여 클러스터 API 서버에 인증합니다.
해당 경로를 제외하여 ARN 버전을 구축
aws-auth ConfigMap에 매핑한 IAM 역할은 경로를 포함하지 않습니다. 기본적으로 SSO 사용자와 연결된 IAM 역할의 Amazon 리소스 이름(ARN)은 경로를 포함합니다.
예:
arn:aws:iam::123456789999:role/aws-reserved/sso.amazonaws.com/us-east-2/AWSReservedSSO_ViewOnlyAccess_05a3861234567890
aws-auth ConfigMap에 전체 ARN을 추가하면 SSO 사용자가 인증되지 않습니다. SSO 사용자를 사용해 클러스터에 액세스할 수 없습니다. 경로를 포함하지 않고 이 ARN 버전을 빌드해야 합니다. 이 버전은 다음 단계에서 사용해야 함
예:
arn:aws:iam::123456789000:role/AWSReservedSSO_ViewOnlyAccess_05a38657af2a0a01
다음 명령을 실행하여 경로 없이 IAM 역할을 가져올 수도 있습니다.
ssorole=$(aws sts get-caller-identity --query Arn --output text --profile test-profile | cut -d/ -f2) account=$(aws sts get-caller-identity --query Account --output text --profile test-profile) echo "arn:aws:iam::$account:role/$ssorole" arn:aws:iam::123456789000:role/AWSReservedSSO_ViewOnlyAccess_05a38657af2a0a01
aws-auth ConfigMap에 ARN을 추가
SSO 사용자가 Amazon EKS 클러스터에 액세스하려면 SSO 사용자와 연결된 IAM 역할을 Kubernetes RBAC 권한에 매핑해야 합니다. 이렇게 하려면 aws-auth ConfigMap에 경로 없이 IAM 역할 ARN을 포함시킵니다. 그런 다음 Kubernetes 사용자와 Kubernetes Role 및 RoleBinding(또는 ClusterRole 및 ClusterRoleBinding)에 연결된 그룹에 매핑합니다. 사용 사례에 따라 다음 섹션 중 하나의 지침을 사용합니다.
클러스터 전체 관리자 권한을 보유한 SSO 사용자
기본적으로 Kubernetes 그룹 system:masters는 클러스터 전체의 관리자 권한을 제공합니다. 이 그룹은 ClusterRole cluster-admin 및 ClusterRoleBinding cluster-admin에 연결됩니다. 따라서 새로운 ClusterRole 또는 ClusterBindingRole 객체를 생성할 필요가 없습니다. 경로 없이 IAM 역할만 system:masters 그룹에 매핑하면 됩니다.
이렇게 하려면 aws-auth ConfigMap을 수정합니다.
kubectl edit configmap aws-auth -n kube-system
그리고 다음 코드를 추가합니다.
- groups: - system:masters rolearn: arn:aws:iam::123456789000:role/AWSReservedSSO_ViewOnlyAccess_05a38657af2a0a01 username: cluster-admin
네임스페이스에 바인딩한 읽기 권한을 보유한 SSO 사용자
이 경우에는 특정 네임스페이스 내에서 읽기 권한을 보유한 Role 및 RoleBinding을 생성해야 합니다. 그런 다음 aws-auth ConfigMap의 사용자 지정 사용자 이름 또는 그룹 이름을 사용하여 이러한 객체를 IAM 역할에 연결합니다.
1. 원하는 네임스페이스에서 읽기 권한만 허용하는 Kubernetes Role 객체를 생성합니다.
cat << EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: $MY-NAMESPACE name: reader-role rules: - apiGroups: [""] # "" indicates the core API group resources: ["*"] verbs: ["get", "watch", "list"] EOF
참고:
- $MY-NAMESPACE를 네임스페이스 이름으로 변경합니다.
- reader-role을 사용자 지정 사용자 이름으로 변경합니다.
2. Kubernetes 역할 권한을 그룹 read-only-group에 연결하는 Kubernetes RoleBinding 객체를 생성합니다.
cat <<EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: reader-binding namespace: MY-NAMESPACE subjects: - kind: Group name: read-only-group apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: reader-role apiGroup: rbac.authorization.k8s.io EOF
3. 경로가 없는 IAM 역할 ARN을 aws-auth ConfigMap의 그룹 read-only-group으로 매핑합니다.
다음 명령을 실행하여 IAM 역할을 자동으로 매핑할 수 있습니다.
eksctl create iamidentitymapping \ --cluster $CLUSTER-NAME \ --region $REGION \ --arn arn:aws:iam::123456789000:role/AWSReservedSSO_ViewOnlyAccess_05a38657af2a0a01 \ --group read-only-group \ --no-duplicate-arns \ --username read-only-user1
참고: $CLUSTER-NAME 및 $REGION을 각각 클러스터 및 리전 이름으로 바꿉니다. 또는 IAM 역할을 수동으로 매핑할 수 있습니다. 이렇게 하려면 aws-auth ConfigMap을 수정합니다.
kubectl edit configmap aws-auth -n kube-system
그런 다음 mapRoles 섹션 아래에 다음을 추가합니다.
- groups: - read-only-group rolearn: arn:aws:iam::123456789000:role/AWSReservedSSO_ViewOnlyAccess_05a38657af2a0a01 username: read-only-user1
중요: IAM 역할은 aws-auth ConfigMap에 한 번만 나타나야 합니다. 따라서 한 섹션만이 IAM 역할을 포함하는지 확인합니다.
이제 SSO 사용자를 사용하여 클러스터에 액세스할 수 있습니다.
$ kubectl get pod NAME READY STATUS RESTARTS AGE web-0 1/1 Running 0 24h
관련 정보
- 언어
- 한국어
