Fleet 수준에서 GKE Identity Service 구성

이 문서는 클러스터에 GKE Identity Service를 설정하는 클러스터 관리자 또는 애플리케이션 운영자를 대상으로 합니다. 선호하는 ID 공급업체를 사용하여 클러스터의 Fleet 수준에서 GKE Identity Service를 설정하는 방법에 대한 안내가 포함되어 있습니다. 이 문서의 안내에서는 GKE Identity Service가 이미 클라이언트 애플리케이션으로 ID 공급업체에 등록되어 있다고 가정합니다. GKE Identity Service 및 기타 설정 옵션에 대한 자세한 내용은 개요를 참조하세요. 개발자 또는 다른 클러스터 사용자로서 이 서비스를 사용하여 클러스터에 액세스하는 방법은 GKE Identity Service로 클러스터에 액세스를 참조하세요.

시작하기 전에

  • 설정을 시작하기 전에 플랫폼 관리자가 GKE Identity Service의 OIDC 제공업체를 구성하는 데 필요한 모든 정보(GKE Identity Service의 클라이언트 ID 및 보안 비밀 포함)를 제공했는지 확인합니다.
  • 구성하려는 클러스터가 Fleet 수준 설정의 기본 요건을 충족하는지 확인합니다. 기타 클러스터 유형과 환경은 GKE Identity Service 개요를 참조하세요.
  • 다음 명령줄 도구가 설치되었는지 확인합니다.
    • 최신 버전의 Google Cloud CLI(Google Cloud와의 상호작용을 위한 명령줄 도구인 gcloud 포함). Google Cloud CLI를 설치해야 하는 경우 설치 가이드를 참조하세요.
    • Kubernetes 클러스터에 명령어를 실행하기 위한 kubectl. kubectl을 설치해야 하는 경우 설치 가이드를 참조하세요. Google Cloud와의 상호작용을 위해 Cloud Shell을 셸 환경으로 사용하는 경우 이러한 도구가 자동으로 설치됩니다.
  • 클러스터가 등록된 프로젝트에서 사용할 수 있도록 gcloud CLI를 초기화했는지 확인합니다.
  • 프로젝트 소유자가 아닌 경우 구성 단계를 완료하려면 클러스터가 등록된 프로젝트에서 GKE 허브 관리자 역할이 필요합니다.

API 사용 설정

콘솔

클러스터가 등록된 프로젝트가 선택되었는지 확인합니다.

  • API GKE Hub and Kubernetes Engine 사용 설정

    API 사용 설정

gcloud

다음 명령어를 실행하여 설정에 필요한 API를 사용 설정합니다.

gcloud services enable 
gkehub.googleapis.com
container.googleapis.com

클러스터 구성

선택한 제공업체를 사용하도록 클러스터를 구성하려면 GKE Identity Service에 ID 공급업체에 대한 세부정보, 사용자 ID를 위해 제공하는 JWT 토큰의 정보, 클라이언트 애플리케이션으로 GKE Identity Service를 등록할 때 제공하는 기타 정보를 지정해야 합니다. 예를 들어 제공업체가 다른 필드로 ID 토큰을 만드는 경우, iss는 ID 공급업체 URI이고 sub는 사용자를 식별하며 groupList는 사용자가 속한 그룹을 나열합니다.

{
  'iss': 'https://server.example.com'
  'sub': 'u98523-4509823'
  'groupList': ['developers@example.corp', 'us-east1-cluster-admins@example.corp']
  ...
}

구성에는 다음과 같은 해당 필드가 있습니다.

issueruri: 'https://server.example.com'
username: 'sub'
group: 'groupList'
...

플랫폼 관리자나 조직에서 ID를 관리하는 사람이 구성을 만드는 데 필요한 대부분의 정보를 제공해야 합니다. 일반적으로 사용되는 ID 공급업체에 대한 구성 예시는 공급업체별 구성을 참조하세요.

GKE Identity Service를 사용하면 Google Cloud 콘솔에서 또는 Google Cloud CLI를 사용하여 이 구성을 만들거나 업데이트 및 적용할 수 있습니다.

콘솔

GKE Identity Service 사용 설정

  1. Google Cloud 콘솔에서 GKE Enterprise 기능 페이지로 이동합니다.

    GKE Enterprise 기능으로 이동

  2. 기능 표의 Identity Service 행에서 사용 설정을 클릭한 후 표시된 창에서 사용 설정을 다시 클릭합니다. 이렇게 하면 Fleet의 클러스터에서 GKE Identity Service의 수명 주기를 관리하는 새로운 GKE Identity Service 컨트롤러 인스턴스가 생성됩니다.

클러스터 선택

  1. 기능 테이블로 돌아가 Identity Service 행에서 세부정보를 클릭하여 서비스의 세부정보 창을 엽니다. 그러면 프로젝트의 클러스터와 Fleet 수준 GKE Identity Service 상태가 표시됩니다.
  2. Identity Service 업데이트를 클릭하여 설정 창을 엽니다.
  3. 구성할 클러스터를 선택합니다. 지원되는 클러스터 유형만 선택할 수 있습니다. 개별 클러스터를 선택하거나 모든 클러스터를 동일한 ID 구성으로 구성하도록 지정할 수 있습니다. Fleet 수준 기본값을 구성한 경우 구성이 기본값으로 다시 조정됩니다. 자세한 내용은 Fleet 수준 기본값 구성을 참조하세요.
  4. ID 공급업체 드롭다운에서 클러스터 구성 방법을 선택합니다. 클러스터에 기존 GKE Identity Service 구성이 있으면 업데이트할 수 있습니다. 등록된 기존 클러스터에 사용하려는 GKE Identity Service 구성이 있으면 이 구성을 선택한 클러스터에 복사할 수 있습니다. 완전히 새로운 구성을 만들려면 다음 섹션에 설명된 대로 선택한 공급업체에 대한 안내를 따르세요.

공급업체 세부정보 설정

추가해야 하는 공급업체 세부정보는 해당 구성에 사용하려는 ID 공급업체 유형에 따라 달라집니다.

OIDC

  1. 새 OIDC 구성을 만들려면 새 Open ID Connect를 선택합니다.
  2. 제공업체 이름 필드에서 이 구성을 식별하는 데 사용할 이름(일반적으로 ID 공급업체 이름)을 지정합니다. 이름은 문자로 시작해야 합니다. 이어서 최대 39자(영문 기준)의 소문자, 숫자 또는 하이픈이 와야 하며 하이픈으로 끝나서는 안 됩니다 구성을 만든 후에는 이 이름을 수정할 수 없습니다.
  3. 클라이언트 ID 필드에서 제공업체에 GKE Identity Service를 등록할 때 반환되는 클라이언트 ID를 지정합니다.
  4. 클라이언트 보안 비밀번호 필드에 클라이언트 애플리케이션과 ID 공급업체 간에 공유해야 하는 클라이언트 보안 비밀번호를 지정합니다.
  5. 발급기관 URL 필드에 ID 공급업체에 승인 요청이 수행된 URI를 지정합니다.
  6. 다음을 클릭하여 OIDC 속성을 설정합니다.

Azure AD

  1. 새 Azure Active Directory를 선택하여 새 Azure AD 구성을 만듭니다.
  2. 제공업체 이름 필드에서 이 구성을 식별하는 데 사용할 이름(일반적으로 ID 공급업체 이름)을 지정합니다. 이름은 문자로 시작해야 합니다. 이어서 최대 39자(영문 기준)의 소문자, 숫자 또는 하이픈이 와야 하며 하이픈으로 끝나서는 안 됩니다 구성을 만든 후에는 이 이름을 수정할 수 없습니다.
  3. 클라이언트 ID 필드에서 제공업체에 GKE Identity Service를 등록할 때 반환되는 클라이언트 ID를 지정합니다.
  4. 클라이언트 보안 비밀번호 필드에 클라이언트 애플리케이션과 ID 공급업체 간에 공유해야 하는 클라이언트 보안 비밀번호를 지정합니다.
  5. 테넌트에서 인증할 Azure AD 계정인 테넌트를 지정합니다.
  6. 다음을 클릭하여 Azure AD 속성을 설정합니다.

LDAP

  1. 새 LDAP 구성을 만들려면 LDAP를 선택합니다.
  2. 제공업체 이름 필드에서 이 구성을 식별하는 데 사용할 이름(일반적으로 ID 공급업체 이름)을 지정합니다. 이름은 문자로 시작해야 합니다. 이어서 최대 39자(영문 기준)의 소문자, 숫자 또는 하이픈이 와야 하며 하이픈으로 끝나서는 안 됩니다 구성을 만든 후에는 이 이름을 수정할 수 없습니다.
  3. 다음을 클릭합니다.
  4. LDAP 서버의 호스트 이름(필수), LDAP 연결 유형, base64로 인코딩된 CA 인증서를 지정합니다.
  5. 다음을 클릭하여 서버를 구성합니다.
  6. 사용자의 고유 이름, 필터, 로그인 속성, 식별자 속성을 지정합니다.
  7. 다음을 클릭하여 사용자 세부정보를 설정합니다.
  8. 그룹을 사용하려면 그룹의 고유 이름, 필터, 식별자 속성을 지정합니다.
  9. 다음을 클릭하여 그룹 세부정보를 설정합니다.
  10. 서비스 계정의 사용자 이름 및 비밀번호를 지정합니다.
  11. 완료를 클릭하여 서비스 계정 이름을 설정합니다.

속성 설정

추가해야 하는 속성은 ID 공급업체와 GKE Identity Service 제공업체를 구성할 때 플랫폼 관리자가 선택한 설정 옵션에 따라 다릅니다.

OIDC

  • 구성 속성을 입력합니다.

    • kubectl 리디렉션 URI: gcloud CLI에서 사용하고 플랫폼 관리자가 등록할 때 지정하는 리디렉션 URL 및 포트로, 일반적으로 http://localhost:PORT/callback 형식입니다.
    • 인증 기관(선택사항): 플랫폼 관리자가 제공한 경우 ID 공급업체의 PEM 인코딩 인증서 문자열입니다.
    • 그룹 클레임 (선택사항): 제공업체가 계정의 보안 그룹을 반환하는 데 사용하는 JWT 클레임(필드 이름)입니다.
    • 그룹 프리픽스 (선택사항): 여러 ID 공급업체(일반적으로 제공업체 이름)에 대한 구성이 있는 경우 액세스 제어 규칙의 기존 이름과 충돌하지 않도록 보안 그룹 이름 앞에 추가하려는 프리픽스입니다.
    • 프록시(선택사항): 해당되는 경우 ID 공급업체에 연결하는 데 사용할 프록시 서버 주소입니다. 예를 들어 클러스터가 비공개 네트워크에 있고 공개 ID 공급업체에 연결해야 하는 경우 이를 설정해야 할 수 있습니다. 예를 들면 http://user:password@10.10.10.10:8888입니다.
    • 범위(선택사항): ID 공급업체에서 요구하는 추가 범위입니다. Microsoft Azure 및 Okta에는 offline_access 범위가 필요합니다. 필요한 경우 범위 추가를 클릭하여 범위를 추가합니다.
    • 사용자 클레임(선택사항): 제공업체가 계정을 식별하는 데 사용하는 JWT 클레임(필드 이름)입니다. 여기에서 값을 지정하지 않으면 GKE Identity Service는 다수의 공급업체에서 사용하는 사용자 ID 클레임인 '하위'를 사용합니다. OpenID 제공업체에 따라 '이메일' 또는 '이름'과 같은 다른 클레임을 선택할 수 있습니다. 'email' 이외의 클레임은 이름 충돌을 방지하기 위해 발급기관 URL이 프리픽스로 추가됩니다.
    • 사용자 프리픽스 (선택사항): 기본 프리픽스를 사용하지 않으려는 경우 기존 이름과 충돌을 방지하기 위해 사용자 클레임 앞에 추가되는 프리픽스입니다.
    • 추가 매개변수(선택사항): 매개변수 으로 지정된 구성에 필요한 추가 매개변수입니다. 필요한 경우 매개변수 추가를 클릭하여 매개변수를 추가합니다.
    • 액세스 토큰 사용 설정(선택사항): 사용 설정하면 Okta와 같은 OIDC 제공업체에 대해 그룹 지원이 허용됩니다.
    • Google Cloud 콘솔 프록시 배포(선택사항): 사용 설정하면 Google Cloud 콘솔에서 인터넷을 통해 공개적으로 액세스할 수 없는 온프레미스 ID 공급업체에 연결할 수 있도록 프록시가 배포됩니다.

Azure AD

  • 구성 속성을 입력합니다.

    • kubectl 리디렉션 URI: gcloud CLI에서 사용하고 플랫폼 관리자가 등록할 때 지정하는 리디렉션 URL 및 포트로, 일반적으로 http://localhost:PORT/callback 형식입니다.
    • 사용자 클레임(선택사항): 제공업체가 계정을 식별하는 데 사용하는 JWT 클레임(필드 이름)입니다. 여기에 값을 지정하지 않으면 GKE Identity Service가 'email', 'preferred_username' 또는 'sub' 순으로 값을 사용해 사용자 세부정보를 가져옵니다.
    • 프록시(선택사항): 해당되는 경우 ID 공급업체에 연결하는 데 사용할 프록시 서버 주소입니다. 예를 들어 클러스터가 비공개 네트워크에 있고 공개 ID 공급업체에 연결해야 하는 경우 이를 설정해야 할 수 있습니다. 예를 들면 http://user:password@10.10.10.10:8888입니다.

ID 공급업체 추가

  • Fleet에 구성할 추가 ID 공급업체가 있으면 여기서 공급업체를 추가할 수 있습니다. 단계에 따라 추가 ID 공급업체를 지정합니다.

구성 업데이트

  • 구성 업데이트를 클릭합니다. 이렇게 하면 필요한 경우 GKE Identity Service가 설치되고(EKS 클러스터만 해당, 기본적으로 GKE 클러스터에 GKE Identity Service가 이미 설치되어 있음) 선택한 클러스터에 클라이언트 구성이 적용됩니다.

gcloud

구성 파일 만들기

GKE Identity Service는 클러스터 구성에 ClientConfig라는 Kubernetes 커스텀 리소스 유형(CRD)을 사용합니다. 여기에는 GKE Identity Service가 ID 공급업체와 상호작용하는 데 필요한 모든 정보 필드가 있습니다. 다음 섹션에서는 해당 구성에서 auth-config.yaml이라는 파일을 만드는 OIDC 및 LDAP 구성에 대해 설명합니다.

OIDC

다음 파일은 oidc 구성 및 azuread 구성을 모두 보여줍니다. oidc 또는 azuread를 사용하는 경우에 대한 자세한 내용은 공급업체별 구성을 참조하세요.

  apiVersion: authentication.gke.io/v2alpha1
  kind: ClientConfig
  metadata:
    name: default
    namespace: kube-public
  spec:
    authentication:
    - name: NAME
      proxy: PROXY_URL
      oidc:
        certificateAuthorityData: CERTIFICATE_STRING
        clientID: CLIENT_ID
        clientSecret: CLIENT_SECRET
        deployCloudConsoleProxy: PROXY_BOOLEAN
        extraParams: EXTRA_PARAMS
        groupsClaim: GROUPS_CLAIM
        groupPrefix: GROUP_PREFIX
        issuerURI: ISSUER_URI
        kubectlRedirectURI: http://localhost:PORT/callback
        scopes: SCOPES
        userClaim: USER_CLAIM
        userPrefix: USER_PREFIX
    - name: NAME
      proxy: PROXY_URL
      azureAD:
        clientID: CLIENT_ID
        clientSecret: CLIENT_SECRET
        tenant: TENANT_UUID
        kubectlRedirectURI: http://localhost:PORT/callback

ID 공급업체를 두 개 이상 구성한 경우 이전 구성과 동일한 형식으로 auth-config.yaml 파일의 authentication 앵커 아래에 있는 인증 구성 여러 개를 나열할 수 있습니다. 다음 표는 ClientConfig oidcazuread 객체의 필드를 설명합니다. 대부분의 필드는 선택사항입니다. 추가해야 하는 필드는 ID 공급업체와 GKE Identity Service 공급업체를 구성할 때 플랫폼 관리자가 선택한 설정 옵션에 따라 다릅니다.

필드 필수 설명 형식
name 이 구성을 식별하는 데 사용할 이름입니다(일반적으로 ID 공급업체 이름). 구성 이름은 문자로 시작해야 합니다. 이어서 최대 39자(영문 기준)의 소문자, 숫자 또는 하이픈이 와야 하며 하이픈으로 끝나서는 안 됩니다 문자열
certificateAuthorityData 아니요 플랫폼 관리자가 제공한 경우 ID 공급업체의 PEM 인코딩 인증서 문자열입니다. certificateAuthorityData에 결과 문자열을 단일 줄로 포함합니다. 문자열
clientID 제공업체에 GKE Identity Service를 등록할 때 반환되는 클라이언트 식별자입니다. 문자열
clientSecret 제공업체에 GKE Identity Service를 등록할 때 반환되는 클라이언트 보안 비밀번호입니다. 문자열
deployCloudConsoleProxy 아니요 Google Cloud 콘솔이 인터넷을 통해 공개적으로 액세스할 수 없는 온프레미스 ID 공급업체에 연결할 수 있게 해주는 프록시가 배포되었는지 여부를 지정합니다. 기본적으로 false로 설정됩니다. 불리언
extraParams 아니요 쉼표로 구분된 목록으로 지정된 ID 공급업체에 전송할 추가 키=값 매개변수입니다(예: `prompt=consent,access_type=offline`). 쉼표로 구분된 목록
enableAccessToken 아니요 사용 설정된 경우 GKE Identity Service는 사용자가 명령줄에서 로그인할 때 ID 공급업체의 사용자 정보 엔드포인트를 사용하여 그룹 정보를 가져올 수 있습니다. 이렇게 하면 이 엔드포인트에서 그룹 클레임을 제공하는 제공업체(예: Okta)가 있을 때 승인을 위해 보안 그룹을 사용할 수 있습니다. 설정하지 않은 경우 false로 간주됩니다. 불리언
groupsClaim 아니요 제공업체가 계정의 보안 그룹을 반환하기 위해 사용하는 JWT 클레임(필드 이름)입니다. 문자열
groupPrefix 아니요 여러 ID 공급업체(일반적으로 제공업체 이름)에 대한 구성이 있는 경우 액세스 제어 규칙의 기존 이름과 충돌하지 않도록 보안 그룹 이름 앞에 추가하려는 프리픽스입니다. 문자열
issuerURI ID 공급업체에 승인 요청이 수행된 URI입니다. URI는 HTTPS를 사용해야 합니다. URL 문자열
kubectlRedirectURI gcloud CLI에서 사용하고 플랫폼 관리자가 등록할 때 지정하는 리디렉션 URL 및 포트로, 일반적으로 `http://localhost:PORT/callback` 형식입니다. URL 문자열
scopes OpenID 제공업체에 전송할 추가적인 범위입니다. 예를 들어 Microsoft Azure와 Okta에는 offline_access 범위가 필요합니다. 쉼표로 구분된 목록
userClaim 아니요 제공업체가 사용자 계정을 식별하는 데 사용하는 JWT 클레임(필드 이름)입니다. 여기에서 값을 지정하지 않으면 GKE Identity Service는 다수의 공급업체에서 사용하는 사용자 ID 클레임인 '하위'를 사용합니다. OpenID 제공업체에 따라 '이메일' 또는 '이름'과 같은 다른 클레임을 선택할 수 있습니다. 'email' 이외의 클레임은 이름 충돌을 방지하기 위해 발급기관 URL이 프리픽스로 추가됩니다. 문자열
userPrefix 아니요 기본 프리픽스를 사용하지 않으려는 경우 기존 이름과 충돌을 방지하기 위해 사용자 클레임 앞에 추가되는 프리픽스입니다. 문자열
테넌트 인증할 Azure AD 계정의 종류입니다. 지원되는 값은 테넌트 ID 또는 특정 테넌트에 속한 계정의 테넌트 이름입니다. 테넌트 이름은 기본 도메인이라고도 합니다. 이러한 값을 찾는 방법에 대한 자세한 내용은 Microsoft Azure AD 테넌트 ID 및 기본 도메인 이름 찾기를 참조하세요. 문자열
proxy 아니요 해당되는 경우 ID 공급업체에 연결하는 데 사용할 프록시 서버 주소입니다. 예를 들어 클러스터가 비공개 네트워크에 있고 공개 ID 공급업체에 연결해야 하는 경우 이를 설정해야 할 수 있습니다. 예를 들면 http://user:password@10.10.10.10:8888입니다. 문자열

SAML

다음 파일은 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: GROUPS_ATTRIBUTE
         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: <>

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

필드 필수 설명 형식
name 이 구성을 식별하는 데 사용할 이름입니다(일반적으로 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 아니요 클러스터에 구성된 선호 인증 방법의 이름입니다. 문자열

LDAP

다음 파일은 ldap 구성을 보여줍니다.

  apiVersion: authentication.gke.io/v2alpha1
  kind: ClientConfig
  metadata:
    name: default
    namespace: kube-public
  spec:
    authentication:
    - name: ldap
      ldap:
        server:
          host: HOST_NAME
          connectionType: CONNECTION_TYPE
          certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA
        user:
          baseDn: BASE_DN
          loginAttribute: LOGIN_ATTRIBUTE
          filter: FILTER
          identifierAttribute: IDENTIFIER_ATTRIBUTE
        group:
          baseDn: BASE_DN
          filter: FILTER
          identifierAttribute: IDENTIFIER_ATTRIBUTE
        serviceAccount:
          simpleBindCredentials:
            dn: DISTINGUISHED_NAME
            password: PASSWORD

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

필드 필수 설명 형식
name 이 LDAP 구성을 식별하기 위한 이름 문자열
서버
호스트 LDAP 서버의 호스트 이름 또는 IP 주소입니다. 포트는 선택사항이며 지정하지 않으면 389로 기본 설정됩니다. 예를 들면 ldap.server.example.com 또는 10.10.10.10:389입니다. 문자열
connectionType LDAP 서버에 연결할 때 사용할 LDAP 연결 유형입니다. starttls 또는 ldaps가 지정된 경우 certificateAuthorityData 필드가 비어 있으면 안됩니다. 문자열
certificateAuthorityData 특정 LDAP 연결 유형에 필요 LDAP 서버에 대해 Base64로 인코딩된 PEM 형식의 인증 기관 인증서를 포함합니다. ldapsstartTLS 연결에만 제공되어야 합니다. 문자열
사용자
baseDN 사용자 항목을 검색하기 위한 LDAP 디렉터리의 하위 트리 위치입니다. DN 형식의 문자열입니다.
loginAttribute 없음 입력 사용자 이름과 일치하는 속성 이름입니다. (<LoginAttribute>=<username>)과 같이 LDAP 데이터베이스에서 사용자를 찾기 위해 사용되며, 선택적인 필터 필드와 결합됩니다. 기본값은 userPrincipleName입니다. 문자열
filter 없음 사용자를 검색할 때 적용할 선택적인 필터입니다. 이를 사용하여 로그인이 허용되는 사용자 계정을 추가적으로 제한할 수 있습니다. 지정하지 않으면 기본적으로 (objectClass=User)입니다. 문자열
identifierAttribute 없음 인증 후 사용자 ID로 사용할 속성을 결정합니다. 사용자가 사용자 이름으로 로그인을 허용하지만 실제 식별자가 이메일 주소 또는 전체 고유 이름(DN)이 되도록 하는 loginAttribute 필드와는 구분됩니다. 예를 들어 loginAttributesAMAccountName으로 설정하고 identifierAttribute를 userPrincipleName으로 설정하면 사용자가 bsmith로 로그인할 수 있지만 사용자의 실제 RBAC 정책은 bsmith@example.com으로 기록됩니다. 각 사용자에 대해 고유하기 때문에 userPrincipleName을 사용하는 것이 좋습니다. 지정하지 않으면 기본적으로 userPrincipleName입니다. 문자열
group(선택적 필드)
baseDN 그룹 항목을 검색하기 위한 LDAP 디렉터리의 하위 트리 위치입니다. 문자열
filter 없음 사용자가 속한 그룹을 검색할 때 사용할 선택적인 필터입니다. 각 사용자에게 반환되는 그룹 수를 줄이기 위해 특정 그룹과만 명시적으로 일치하도록 사용할 수 있습니다. 기본값은 (objectClass=Group)입니다. 문자열
identifierAttribute 없음 사용자가 속한 각 그룹의 식별 이름입니다. 예를 들어 distinguishedName으로 설정되었으면 RBAC 및 다른 그룹 예상값도 전체 DN으로 기록되어야 합니다. 지정하지 않으면 기본적으로 distinguishedName입니다. 문자열
serviceAccount/simpleBindCredentials
dn 서비스 계정 사용자의 고유 이름입니다. 문자열
비밀번호 서비스 계정 사용자의 비밀번호입니다. 문자열

GKE Identity Service 사용 설정

또한 Fleet 수준 기본 구성으로 GKE Identity Service를 사용 설정할 수 있습니다. 이 설정을 사용하면 지정한 구성이 Fleet에 등록된 모든 새 클러스터에 자동으로 적용됩니다. Fleet 수준 기본 구성에 대한 자세한 내용은 Fleet 수준 기본값 구성을 참조하세요. 프로젝트에 GKE Identity Service를 사용 설정하려면 다음 명령어를 실행합니다.

gcloud container fleet identity-service enable

이렇게 하면 Fleet의 클러스터에서 GKE Identity Service의 수명 주기를 관리하는 새로운 GKE Identity Service 컨트롤러 인스턴스가 생성됩니다. 프로젝트 Fleet에 등록된 모든 지원되는 클러스터에서 GKE Identity Service를 사용하려면 이 명령어를 프로젝트별로 한 번만 실행해야 합니다.

클러스터에 구성 적용

필요한 경우 GKE Identity Service를 설치하고(EKS 클러스터만 해당, GKE 클러스터에 기본적으로 GKE Identity Service가 이미 설치되어 있음) 클러스터에 구성을 적용하려면 다음 명령어를 실행합니다.

gcloud container fleet identity-service apply \
--membership=CLUSTER_NAME \
--config=/path/to/auth-config.yaml

CLUSTER_NAME을 Fleet 내에서 클러스터의 고유한 이름으로 바꿉니다. 이 명령어를 실행하면 GKE Identity Service 컨트롤러에서 구성을 관리합니다. GKE Identity Service 클라이언트 구성의 모든 로컬 변경사항은 컨트롤러에서 이 설정에 지정된 구성으로 다시 조정합니다.

이렇게 하면 GKE Identity Service가 Google ID로 로그인하는 사용자 계정에 대한 Google 그룹스 정보를 검색합니다. 이 구성은 GKE Enterprise 1.13 버전 이후의 VMware용 GKE베어메탈용 Google Distributed Cloud Virtual에 적용됩니다. Google 그룹스 기능에 대한 자세한 내용은 Google 그룹스를 사용하여 Connect 게이트웨이 설정을 참조하세요.

인증 옵션의 기존 구성이 클러스터에 있으면 다음이 적용됩니다.

  • OIDC 제공업체의 기존 클러스터 수준 구성이 있는 경우 Fleet 수준 GKE Identity Service 구성을 클러스터에 적용하면 모든 기존 인증 사양을 덮어씁니다.
  • Fleet 수준 구성을 지원하지 않는 제공업체의 기존 클러스터 수준 구성이 있으면 이 설정이 실패합니다. Fleet 수준 구성을 적용하려면 기존 제공업체 구성을 삭제해야 합니다.

GKE Identity Service 컨트롤러에서 더 이상 구성을 관리하지 않게 하려면(예: 다른 인증 옵션을 사용하려는 경우) GKE Identity Service 관리 중지의 안내를 따라 이 기능을 중지하면 됩니다.

제공업체별 구성

이 섹션에서는 자체 세부정보로 복사하고 수정할 수 있는 구성 예시를 포함하여 Azure AD 및 Okta와 같은 OIDC 제공업체에 대한 구성 안내를 제공합니다.

Azure AD

이는 Azure AD로 GKE Identity Service를 설정하는 기본 구성입니다. 이 구성을 사용하면 GKE Identity Service가 Azure AD에서 사용자 및 그룹 정보를 가져올 수 있고 그룹을 기준으로 Kubernetes 역할 기반 액세스 제어(RBAC)를 설정할 수 있습니다. 그러나 이 구성을 사용하면 사용자당 약 200개 그룹을 검색하도록 제한됩니다.

사용자당 그룹을 200개 넘게 검색해야 할 경우에는 Azure AD(고급) 안내를 참조하세요.

...
spec:
  authentication:
  - name: oidc-azuread
    oidc:
      clientID: CLIENT_ID
      clientSecret: CLIENT_SECRET
      cloudConsoleRedirectURI: https://console.cloud.google.com/kubernetes/oidc
      extraParams: prompt=consent, access_type=offline
      issuerURI: https://login.microsoftonline.com/TENANT_ID/v2.0
      kubectlRedirectURI: http://localhost:PORT/callback
      scopes: openid,email,offline_access
      userClaim: email

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

Azure AD(고급)

이 선택적인 Azure AD 구성을 사용하면 GKE Identity Service에서 Microsoft Graph API를 사용하여 사용자당 그룹 수에 대한 제한 없이 사용자 및 그룹 정보를 검색할 수 있습니다. 이 구성을 지원하는 플랫폼에 대한 자세한 내용은 Azure AD 고급 설정을 참조하세요.

사용자당 그룹을 200개 미만으로 검색해야 할 경우에는 ClientConfig에서 oidc 앵커를 사용하는 기본 구성을 사용하는 것이 좋습니다. 자세한 내용은 Azure AD 안내를 참조하세요.

구성 예시의 모든 필드가 필수입니다.

...
spec:
  authentication:
  - name: azure
    azureAD:
      clientID: CLIENT_ID
      clientSecret: CLIENT_SECRET
      tenant: TENANT_UUID
      kubectlRedirectURI: http://localhost:PORT/callback
      groupFormat: GROUP_FORMAT
      userClaim: USER_CLAIM

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

GROUP_FORMAT을 그룹 정보를 검색하려는 형식으로 바꿉니다. 이 필드에는 사용자 그룹의 ID 또는 NAME에 해당하는 값을 사용할 수 있습니다. 이 설정은 VMware용 GKE 및 베어메탈용 Google Distributed Cloud Virtual 클러스터에서 사용할 수 있습니다.

Okta

다음은 Okta를 ID 공급업체로 사용해서 사용자와 그룹을 모두 사용하여 인증을 설정하는 방법을 보여줍니다. 이 구성을 사용하면 GKE Identity Service가 액세스 토큰 및 Okta의 사용자 정보 엔드포인트를 사용하여 사용자 및 그룹 클레임을 검색할 수 있습니다.

...
spec:
  authentication:
  - name: okta
    oidc:
      clientID: CLIENT_ID
      clientSecret: CLIENT_SECRET
      cloudConsoleRedirectURI: https://console.cloud.google.com/kubernetes/oidc
      enableAccessToken: true
      extraParams: prompt=consent
      groupsClaim: groups
      issuerURI: https://OKTA_ISSUER_URI/
      kubectlRedirectURI: http://localhost:PORT/callback
      scopes: offline_access,email,profile,groups
      userClaim: email

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

Fleet 수준 기본값 구성

Fleet 수준 기본 구성으로 GKE Identity Service를 사용 설정할 수 있습니다. 이 설정을 사용하면 클러스터 생성 중에 등록된 모든 Google Cloud 기반 GKE 클러스터 또는 GKE 클러스터는 사용자가 지정한 구성으로 클러스터에서 GKE Identity Service를 사용 설정합니다. Fleet 수준 구성 관리에 대한 자세한 내용은 Fleet 수준 기능 관리를 참조하세요.

Fleet 수준 기본 구성으로 GKE Identity Service를 구성하려면 다음을 수행합니다.

  1. fleet-default.yaml이라는 파일을 만들고 구성 파일 만들기에 따라 파일을 채웁니다.
  2. Fleet 수준 기본 구성으로 GKE Identity Service를 사용 설정합니다.

    gcloud container fleet identity-service enable --fleet-default-member-config=fleet-default.yaml
    
  3. 기존 Fleet 수준 기본 구성을 수정하거나 Fleet 수준 기본 구성 없이 Fleet에서 GKE Identity Service가 이미 사용 설정된 경우 추가하려면 다음 명령어를 실행합니다.

    gcloud container fleet identity-service apply --fleet-default-member-config=default-config.yaml
    
  4. Fleet 수준 기본 구성이 구성되기 전에 등록된 클러스터는 기본 구성을 자동으로 상속하지 않습니다. 이 클러스터 클래스에 속하는 클러스터에 기본 구성을 적용하려면 다음 명령어를 실행합니다.

    gcloud container fleet identity-service apply --origin=fleet --membership=CLUSTER_NAME
    
  5. Fleet 수준의 기본 구성을 삭제하려면 다음 명령어를 실행합니다.

    gcloud container fleet identity-service delete --fleet-default-member-config
    

ID 서비스 구성 확인

Fleet 수준 설정을 완료한 후 Fleet의 클러스터가 지정한 ID 서비스 구성으로 성공적으로 구성되었는지 확인할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 GKE Enterprise 기능 페이지로 이동합니다.

    GKE Enterprise 기능 관리로 이동

    사용 설정된 모든 기능은 기능 목록에 사용 설정됨으로 표시되어 있습니다.

  2. ID 서비스 기능에서 세부정보를 클릭합니다. 세부정보 패널에 등록된 클러스터의 상태가 표시됩니다.

gcloud

다음 명령어를 실행합니다.

gcloud container fleet identity-service describe

사용자 액세스 설정

클러스터를 구성한 후 계속해서 사용자 액세스를 설정합니다.

Fleet 수준 GKE Identity Service 관리 중지

Google Cloud에서 더 이상 GKE Identity Service 구성과 수명 주기를 관리하지 않게 하려면 이 기능을 중지하면 됩니다. Fleet 수준 관리를 중지해도 클러스터에서 GKE Identity Service 또는 인증 구성이 삭제되지 않으므로 사용자는 구성된 서드 파티 ID 공급업체를 사용하여 클러스터에 계속 인증할 수 있습니다. 그러나 GKE Identity Service 구성이나 리소스를 클러스터에서 로컬로 수동 편집하면 이러한 변경사항이 더 이상 단일 정보 소스에 해당하는 상태로 조정되지 않습니다.

클러스터에 대한 Fleet 수준 관리 사용 중지

클러스터의 Fleet 수준 관리를 사용 중지하려면 다음 명령어를 실행합니다.

gcloud container fleet identity-service delete --membership=CLUSTER_NAME

여기서 CLUSTER_NAME은 전체 Fleet에서 클러스터의 고유한 이름입니다.

Fleet에 대한 Fleet 수준 관리 사용 중지

Fleet에 대한 Fleet 수준 GKE Identity Service 관리를 중지하려면 다음을 수행합니다.

콘솔

  1. Google Cloud 콘솔에서 GKE Enterprise 기능 페이지로 이동합니다.

    GKE Enterprise 기능으로 이동

  2. 기능 표의 Identity Service 행에서 세부정보를 클릭한 후 표시된 창에서 GKE Identity Service 중지를 클릭합니다.

gcloud

다음 명령어를 실행합니다.

gcloud container fleet identity-service disable

Fleet 기능을 중지한 후에는 더 이상 Google Cloud 콘솔에서 또는 gcloud를 사용하여 클러스터의 GKE Identity Service 상태를 보거나 업데이트할 수 없습니다.

문제 해결

이 설정 중에 문제가 발생하면 문제 해결 가이드를 확인하세요.