SAML로 GKE Identity Service용 클러스터 설정

이 문서는 개발자와 기타 사용자가 보안 보장 마크업 언어(SAML) 공급업체의 기존 ID 세부정보를 사용하여 클러스터에 로그인할 수 있도록 개별 클러스터에 GKE Identity Service를 설정하려는 클러스터 관리자 또는 애플리케이션 운영자를 대상으로 합니다. 이 가이드는 사용자가 GKE Identity Service 개요를 읽었다고 가정하고 작성되었습니다. 이 문서의 안내에서는 GKE Identity Service가 이미 클라이언트 애플리케이션으로 ID 공급업체에 등록되어 있다고 가정합니다.

시작하기 전에

  • 설정을 시작하기 전에 플랫폼 관리자가 GKE Identity Service를 공급업체에 등록하는 데 필요한 모든 정보를 제공했는지 확인하세요.
  • 다음 명령줄 도구가 설치되었는지 확인합니다.

    • Google Cloud와 상호작용하는 명령줄 도구인 gcloud가 포함된 466.0.0 이상의 Google Cloud CLI 버전. Google Cloud CLI를 설치해야 하는 경우 설치 가이드를 참조하세요.
    • Kubernetes 클러스터에 명령어를 실행하기 위한 kubectl. kubectl을 설치해야 하는 경우 이 안내를 따르세요.

    Google Cloud와의 상호작용을 위해 Cloud Shell을 셸 환경으로 사용하는 경우 이러한 도구가 자동으로 설치됩니다.

  • 클러스터가 등록된 프로젝트에서 사용할 수 있도록 gcloud CLI를 초기화했는지 확인합니다.

클러스터 구성

GKE Identity Service는 특수 Kubernetes 커스텀 리소스 유형(CRD)을 사용하여, ID 공급업체에 대한 정보 필드, 사용자 정보를 반환하는 데 필요한 매개변수와 함께 ClientConfig라는 클러스터를 구성합니다.

kubectl

기본 ClientConfig를 수정하려면 kubectl을 통해 클러스터에 연결할 수 있는지 확인하고 다음 명령어를 실행합니다.

kubectl --kubeconfig=KUBECONFIG_PATH edit ClientConfigs default -n kube-public

KUBECONFIG_PATH를 클러스터의 kubeconfig 파일 경로로 바꿉니다(예: $HOME/.kube/config).

텍스트 편집기가 클러스터의 ClientConfig 리소스를 로드합니다. 스니펫에 표시된 대로 saml 객체를 추가합니다.

apiVersion: authentication.gke.io/v2alpha1
kind: ClientConfig
metadata:
 name: default
 namespace: kube-public
spec:
  authentication:
  - name: NAME
   saml:
     idpEntityID: ENTITY_ID
     idpSingleSignOnURI: SIGN_ON_URI
     idpCertificateDataList: IDP_CA_CERT
     userAttribute: USER_ATTRIBUTE
     groupsAttribute: {'<var name="user attribute">GROUPS_ATTRIBUTE</var>'}}
     userPrefix: USER_PREFIX
     groupPrefix: GROUP_PREFIX
     attributeMapping:
       ATTRIBUTE_KEY_1 : ATTRIBUTE_CEL_EXPRESSION_1
       ATTRIBUTE_KEY_2 : ATTRIBUTE_CEL_EXPRESSION_2
  certificateAuthorityData: CERTIFICATE_STRING
  preferredAuthentication: PREFERRED_AUTHENTICATION
  server: <>

# Rest of the resource is managed by Google. DO NOT MODIFY.
...

다음 표는 ClientConfig saml 객체의 필드를 설명합니다. 추가해야 하는 필드는 ID 공급업체와 GKE Identity Service 공급업체를 구성할 때 플랫폼 관리자가 선택한 설정 옵션에 따라 다릅니다.

필드 필수 설명 형식
이름 이 구성을 식별하는 데 사용할 이름입니다(일반적으로 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가 업데이트됩니다. 문법 오류가 발생하면 구성을 다시 수정하여 해결하라는 메시지가 표시됩니다.

다음 단계

구성이 적용된 후 클러스터에 대한 사용자 액세스 설정하기