이 문서에서는 클러스터 관리자 또는 애플리케이션 운영자가 서드 파티 보안 보장 마크업 언어 (SAML) 제공업체의 인증을 지원하도록 Kubernetes 클러스터를 구성하는 방법을 설명합니다. 자세한 내용은 서드 파티 ID를 사용한 인증 정보를 참고하세요.
제한사항
SAML을 지원하는 클러스터 유형을 사용해야 합니다.
시작하기 전에
-
Google Cloud CLI를 설치합니다.
-
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
-
gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.
gcloud init -
gcloud CLI를 초기화한 후 업데이트하고 필요한 구성요소를 설치합니다.
gcloud components update gcloud components install kubectl
- 플랫폼 관리자가 필요한 모든 공급자 정보를 제공했는지 확인합니다. 자세한 내용은 제공업체 세부정보 공유를 참고하세요.
클러스터 구성
SAML을 사용한 인증을 위해 클러스터를 구성하려면 ID 공급업체에 대한 정보와 공급업체가 사용자 정보를 반환하는 데 필요한 매개변수를 사용하여 ClientConfig라는 Kubernetes 커스텀 리소스를 구성합니다.
default ClientConfig를 수정하려면 kubectl을 통해 클러스터에 연결할 수 있는지 확인한 후 다음 명령어를 실행합니다.
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-public edit clientconfig default
KUBECONFIG_PATH를 클러스터의 kubeconfig 파일 경로로 바꿉니다(예: $HOME/.kube/config).
텍스트 편집기가 클러스터의 ClientConfig 리소스를 로드합니다. 다음 샘플에 표시된 대로 spec.authentication.saml 객체를 추가합니다. 이미 작성된 기본 데이터를 수정하지 마세요.
apiVersion: authentication.gke.io/v2alpha1
kind: ClientConfig
metadata:
name: default
namespace: kube-public
spec:
authentication:
- name: NAME
saml:
attributeMapping:
ATTRIBUTE_KEY_1: ATTRIBUTE_CEL_EXPRESSION_1
ATTRIBUTE_KEY_2: ATTRIBUTE_CEL_EXPRESSION_2
groupsAttribute: GROUPS_ATTRIBUTE
groupPrefix: GROUP_PREFIX
idpEntityID: ENTITY_ID
idpSingleSignOnURI: SIGN_ON_URI
idpCertificateDataList: IDP_CA_CERT
userAttribute: USER_ATTRIBUTE
userPrefix: USER_PREFIX
certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA
preferredAuthentication: PREFERRED_AUTHENTICATION
server: <>
# Rest of the resource is managed by Google. DO NOT MODIFY.
...
동일한 ClientConfig에 여러 OIDC, LDAP, SAML ID 공급업체 구성을 추가할 수 있습니다. 클러스터는 정의된 순서대로 각 구성으로 인증을 시도하고 첫 번째 인증에 성공하면 중지됩니다. 다음 예시 ClientConfig는 특정 순서로 여러 ID 공급자를 정의합니다.
apiVersion: authentication.gke.io/v2alpha1
kind: ClientConfig
metadata:
name: default
namespace: kube-public
spec:
authentication:
- aws:
region: us-west-2
name: AWS Login
- ldap:
# Multiple lines are omitted here.
- saml:
# Multiple lines are omitted here.
- azureAD:
# Multiple lines are omitted here.
- oidc:
name: Okta OIDC
# Multiple lines are omitted here.
- oidc:
name: Google OIDC
# Multiple lines are omitted here.
ClientConfig SAML 필드
다음 표는 ClientConfig saml 객체의 필드를 설명합니다. 추가해야 하는 필드는 ID 공급업체 토큰과 플랫폼 관리자가 공급업체를 구성한 방식에 따라 다릅니다.
| 필드 | 필수 | 설명 | 형식 |
|---|---|---|---|
| 이름 | 예 | 이 구성을 식별하는 데 사용할 이름입니다(일반적으로 ID 프로바이더 이름). 구성 이름은 문자로 시작해야 합니다. 이어서 최대 39자(영문 기준)의 소문자, 숫자 또는 하이픈이 와야 하며 하이픈으로 끝나면 안 됩니다 | 문자열 |
| idpEntityID | 예 | URI 형식으로 지정된 SAML 프로바이더의 SAML 엔티티 ID입니다. 예를 들면 https://www.idp.com/saml입니다. |
URL 문자열 |
| idpSingleSignOnURI | 예 | URI 형식으로 지정된 SAML 프로바이더 SSO 엔드포인트입니다. 예를 들면 https://www.idp.com/saml/sso입니다. |
URL 문자열 |
| idpCertificateDataList | 예 | SAML 응답을 확인하는 데 사용되는 ID 프로바이더 인증서에 해당합니다. 이러한 인증서는 표준 base64 인코딩 및 PEM 형식이어야 합니다. ID 프로바이더 인증서 순환을 촉진하기 위해 최대 2개의 인증서만 지원됩니다. | 문자열 |
| userAttribute | 아니요 | 사용자 이름이 있는 SAML 응답의 속성 이름입니다. | 문자열 |
| groupsAttribute | 아니요 | 사용자의 그룹 정보가 있는 SAML 응답의 속성 이름입니다. | 문자열 |
| userPrefix | 아니요 | 기본 프리픽스를 사용하지 않으려는 경우 기존 이름과 충돌을 방지하기 위해 사용자 클레임에 추가하려는 프리픽스입니다. | 문자열 |
| groupPrefix | 아니요 | 여러 ID 프로바이더(일반적으로 프로바이더 이름)에 대한 구성이 있는 경우 액세스 제어 규칙의 기존 이름과 충돌하지 않도록 보안 그룹 이름 앞에 추가하려는 프리픽스입니다. | 문자열 |
| attributeMapping | 아니요 | 추가 사용자 속성의 매핑입니다. | 문자열 |
| certificateAuthorityData | 아니요 | 플랫폼 관리자가 제공한 경우 ID 프로바이더의 PEM 인코딩 인증서 문자열입니다. certificateAuthorityData에 결과 문자열을 단일 줄로 포함합니다. |
문자열 |
| preferredAuthentication | 아니요 | 클러스터에 구성된 선호 인증 방법의 이름입니다. | 문자열 |
ClientConfig를 완료한 후 파일을 저장합니다. 그러면 클러스터의 ClientConfig가 업데이트됩니다. 문법 오류가 발생하면 구성을 다시 수정하여 해결하라는 메시지가 표시됩니다.
다음 단계
구성이 적용된 후 클러스터에 대한 사용자 액세스 설정하기