OpenID Connect 자격 증명 공급자에서 클러스터에 대해 사용자 인증
Amazon EKS는 클러스터에서 사용자를 인증하는 방법으로 OpenID Connect(OIDC) ID 제공업체를 지원합니다. OIDC ID 제공업체는 AWS Identity and Access Management(IAM)와 함께 사용하거나 대안으로 사용할 수 있습니다. IAM 사용에 대한 자세한 내용은 클러스터에 대한 IAM 보안 주체 액세스 사용를 참조하십시오. 클러스터에 인증을 구성한 후, Kubernetes roles
및 clusterroles
를 생성하여 역할에 권한을 할당한 다음 Kubernetes rolebindings
및 clusterrolebindings
를 사용하여 역할을 ID에 바인딩할 수 있습니다. 자세한 내용은 Kubernetes 설명서의 RBAC 승인 사용
고려 사항
-
하나의 OIDC ID 제공업체를 클러스터에 연결할 수 있습니다.
-
Kubernetes에서는 OIDC ID 제공업체를 제공하지 않습니다. 기존 퍼블릭 OIDC ID 제공업체를 사용하거나 자체 ID 제공업체를 실행할 수 있습니다. 인증된 공급자 목록은 OpenID 사이트에서 OpenID 인증
을 참조하세요. -
Amazon EKS가 서명 키를 검색할 수 있도록 OIDC ID 제공업체의 발급자 URL에 공개적으로 액세스할 수 있어야 합니다. Amazon EKS는 자체 서명된 인증서를 사용하는 OIDC ID 제공업체를 지원하지 않습니다.
-
클러스터에 노드를 조인하는 데 여전히 필요하므로 클러스터에 IAM 인증을 비활성화할 수 없습니다.
-
하지만 여전히 OIDC ID 제공업체 사용자가 아니라 AWS IAM 보안 주체가 Amazon EKS 클러스터를 생성해야 합니다. 이는 클러스터 생성자가 Kubernetes API가 아닌 Amazon EKS API와 상호 작용하기 때문입니다.
-
컨트롤 플레인에 대해 CloudWatch Logs가 설정되어 있는 경우 OIDC ID 제공업체 인증 사용자는 클러스터의 감사 로그에 표시됩니다. 자세한 내용은 컨트롤 플레인 로그 활성화 및 비활성화 단원을 참조하십시오.
-
OIDC 공급자가 제공한 계정으로 AWS Management Console에 로그인할 수 없습니다. AWS Management Console에 AWS Identity and Access Management 계정으로 로그인한 경우에만 콘솔에서 Kubernetes 리소스 보기를 할 수 있습니다.
OIDC ID 제공업체 연결
OIDC ID 제공업체를 클러스터에 연결하려면 먼저 다음과 같은 제공업체 정보가 필요합니다.
- 발급자 URL
-
API 서버가 토큰을 확인하기 위한 퍼블릭 서명 키를 검색할 수 있도록 허용하는 OIDC ID 제공자의 URL입니다. URL은
https://
로 시작해야 하며 공급자의 OIDC ID 토큰에 있는iss
클레임에 해당해야 합니다. OIDC 표준에 따라 경로 구성 요소는 허용되지만 쿼리 파라미터는 허용되지 않습니다. 일반적으로 URL은https://server.example.org
또는https://example.com
같은 하나의 호스트 이름으로만 구성됩니다. 이 URL은.well-known/openid-configuration
아래 레벨을 가리켜야 하며 인터넷을 통해 공개적으로 액세스할 수 있어야 합니다. - 클라이언트 ID(대상이라고도 함)
-
OIDC ID 제공자에게 인증을 요청하는 클라이언트 애플리케이션의 ID입니다.
eksctl
또는 AWS Management Console을 사용하여 자격 증명 공급자를 연결할 수 있습니다.
클러스터에서 OIDC ID 제공업체 연결 해제
클러스터에서 OIDC ID 제공업체의 연결을 해제하면 공급자에 포함된 사용자가 더 이상 클러스터에 액세스할 수 없습니다. 하지만 IAM 보안 주체로 계속 클러스터에 액세스할 수 있습니다.
AWS Management Console을 사용하여 클러스터에서 OIDC ID 제공업체의 연결 해제하는 방법
-
https://console.aws.amazon.com/eks/home#/clusters
에서 Amazon EKS 콘솔을 엽니다. -
OIDC ID 제공업체 섹션에서 연결 해제를 선택하고 ID 제공업체 이름을 입력한 후
Disassociate
를 선택합니다.
IAM 정책 예제
OIDC ID 제공업체가 클러스터에 연결되지 않도록 하려면 다음 IAM 정책을 생성하여 Amazon EKS 관리자의 IAM 계정에 연결합니다. 자세한 내용은 IAM 사용 설명서의 IAM 정책 생성 및 IAM 자격 증명 권한 추가와 서비스 권한 부여 참조의 Amazon Elastic Kubernetes Service에 사용되는 작업, 리소스 및 조건 키를 참조하세요.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "denyOIDC", "Effect": "Deny", "Action": [ "eks:AssociateIdentityProviderConfig" ], "Resource": "arn:aws:eks:
us-west-2
.amazonaws.com:
111122223333
:cluster/*" }, { "Sid": "eksAdmin", "Effect": "Allow", "Action": [ "eks:*" ], "Resource": "*" } ] }
다음 예제 정책은 clientID
가 kubernetes
이고 issuerUrl
이 https://cognito-idp.us-west-2amazonaws.com/*
인 경우 OIDC ID 제공업체 연결을 허용합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCognitoOnly", "Effect": "Deny", "Action": "eks:AssociateIdentityProviderConfig", "Resource": "arn:aws:eks:
us-west-2
:111122223333
:cluster/my-instance
", "Condition": { "StringNotLikeIfExists": { "eks:issuerUrl": "https://cognito-idp.us-west-2
.amazonaws.com/*" } } }, { "Sid": "DenyOtherClients", "Effect": "Deny", "Action": "eks:AssociateIdentityProviderConfig", "Resource": "arn:aws:eks:us-west-2
:111122223333
:cluster/my-instance
", "Condition": { "StringNotEquals": { "eks:clientId": "kubernetes
" } } }, { "Sid": "AllowOthers", "Effect": "Allow", "Action": "eks:*", "Resource": "*" } ] }
파트너가 검증한OIDC 자격 증명 제공업체
Amazon EKS는 호환 가능한 OIDC 자격 증명 공급자에 대한 지원을 제공하는 파트너 네트워크와 관계를 유지합니다. 자격 증명 공급자와 Amazon EKS를 통합하는 자세한 방법은 다음 파트너 설명서를 참조하세요.
파트너 |
제품 |
설명서 |
---|---|---|
PingIdentity |
Amazon EKS는 모든 사용 사례를 포괄하는 다양한 옵션을 제공하는 것을 목표로 합니다. 여기에 나열되지 않은 상업적으로 지원되는 OIDC 호환 가능한 자격 증명 공급자를 개발하는 경우 자세한 내용은 파트너 팀(aws-container-partners@amazon.com