Configurar o GKE Identity Service no nível da frota

Este documento é destinado a administradores de cluster ou operadores de aplicativos que configuram o GKE Identity Service nos clusters deles. Ele contém instruções sobre como configurar o serviço de identidade do GKE no nível da frota nos clusters com o provedor de identidade de sua preferência. As instruções neste documento presumem que o GKE Identity Service já tenha sido registrado com seu provedor de identidade como um aplicativo cliente. Para saber mais sobre o GKE Identity Service e outras opções de configuração, consulte as informações gerais. Para saber como acessar um cluster usando esse serviço como um desenvolvedor ou outro usuário do cluster, consulte Como acessar clusters com o GKE Identity Service.

Antes de começar

  • Verifique se o administrador da plataforma forneceu todas as informações necessárias de Como configurar provedores OIDC para o GKE Identity Service antes de iniciar a configuração. Isso inclui o ID do cliente e o secret do GKE Identity Service.
  • Verifique se os clusters que você quer configurar atendem aos pré-requisitos para a configuração no nível da frota. Para outros tipos de cluster e ambientes, consulte as Informações gerais do GKE Identity Service.
  • Verifique se você tem as seguintes ferramentas de linha de comando instaladas:
    • A versão mais recente da Google Cloud CLI, que inclui gcloud, a ferramenta de linha de comando para interagir com o Google Cloud. Se você precisar instalar a Google Cloud CLI, consulte o guia de instalação.
    • kubectl para executar comandos em clusters do Kubernetes. Se precisar instalar kubectl, consulte o guia de instalação. Se você estiver usando o Cloud Shell como ambiente shell para interagir com o Google Cloud, essas ferramentas estarão instaladas.
  • Verifique se você inicializou a CLI gcloud para uso com o projeto em que os clusters estão registrados.
  • Se você não for o proprietário do projeto, precisará do papel Administrador do Hub GKE no projeto em que os clusters estão registrados para concluir as etapas de configuração.

Ative as APIs

Console

Verifique se o projeto em que os clusters estão registrados está selecionado.

  • Ative as APIs GKE Hub and Kubernetes Engine.

    Ative as APIs

gcloud

Execute o seguinte comando para ativar as APIs necessárias para configuração:

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

Configurar clusters

Para configurar os clusters para usar o provedor escolhido, o GKE Identity Service precisa especificar detalhes sobre o provedor de identidade, as informações nos tokens JWT fornecidos para identificação do usuário e outras informações fornecidas ao registrar o GKE Identity Service como um aplicativo cliente. Por exemplo, se seu provedor criar tokens de identidade com os seguintes campos (entre outros), em que iss é o URI do provedor de identidade, sub identifica o usuário e groupList lista os grupos de segurança a que o usuário pertence:

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

...a configuração terá os seguintes campos correspondentes:

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

O administrador da plataforma ou quem gerencia a identidade na sua organização, deve fornecer a você a maior parte das informações necessárias para criar a configuração. Veja exemplos de configurações de alguns provedores de identidade usados com frequência em Configurações específicas do provedor.

O GKE Identity Service permite criar ou atualizar e aplicar essa configuração no Console do Google Cloud ou usando a Google Cloud CLI.

Console

Ativar o GKE Identity Service

  1. No console do Google Cloud, acesse a página Recursos do GKE Enterprise.

    Acesse os recursos do GKE Enterprise

  2. Na tabela Recursos, clique em Ativar na linha Identity Service e em Ativar novamente no painel que é exibido. Isso cria uma nova instância do controlador do GKE Identity Service para gerenciar o ciclo de vida do GKE Identity Service nos clusters da frota.

Selecionar clusters

  1. Na tabela Recursos, clique em Detalhes na linha Identity Service para abrir o painel de detalhes do serviço. Isso exibe os clusters do projeto e o status do GKE Identity Service no nível da frota.
  2. Clique em Atualizar serviço de identidade para abrir o painel de configuração.
  3. Selecione os clusters que você quer configurar. Somente tipos de cluster compatíveis podem ser selecionados. É possível escolher clusters individuais ou especificar que todos os clusters sejam configurados com a mesma configuração de identidade. Se você tiver configurado padrões em nível de frota, a configuração será reconciliada de volta para o padrão. Para mais informações, consulte Configurar padrões no nível da frota.
  4. Na lista suspensa Provedor de identidade, escolha como você quer configurar os clusters. Se o cluster tiver uma configuração existente do GKE Identity Service, você poderá optar por atualizá-la. Se um cluster registrado atual tiver uma configuração do GKE Identity Service que você queira usar, é possível copiar essa configuração para os clusters selecionados. Para criar uma configuração completamente nova, siga as instruções para o provedor escolhido, conforme descrito na próxima seção.

Definir informações do provedor

Os detalhes do provedor que você precisa adicionar dependem do tipo de provedor de identidade que você quer usar para a configuração.

OIDC

  1. Selecione New Open ID Connect para criar uma configuração do OIDC.
  2. Especifique o nome que você quer usar para identificar essa configuração no campo Nome do provedor, geralmente o nome do provedor de identidade. O nome precisa começar com uma letra seguida por até 39 letras minúsculas, números ou hifens, mas não pode terminar com um hífen. Depois de criar uma configuração, não será possível editar o nome.
  3. Especifique o ID do cliente retornado ao registrar o GKE Identity Service com seu provedor no campo ID do cliente.
  4. Especifique a chave secreta do cliente que precisa ser compartilhada entre o aplicativo cliente e o provedor de identidade no campo Chave secreta do cliente.
  5. Especifique o URI em que as solicitações de autorização são feitas para seu provedor de identidade no campo Emissor URL.
  6. Clique em Próxima para definir os atributos do OIDC.

Azure AD

  1. Selecione Novo Azure Active Directory para criar uma nova configuração do Azure AD.
  2. Especifique o nome que você quer usar para identificar essa configuração no campo Nome do provedor, geralmente o nome do provedor de identidade. O nome precisa começar com uma letra seguida por até 39 letras minúsculas, números ou hifens, mas não pode terminar com um hífen. Depois de criar uma configuração, não será possível editar o nome.
  3. Especifique o ID do cliente retornado ao registrar o GKE Identity Service com seu provedor no campo ID do cliente.
  4. Especifique a chave secreta do cliente que precisa ser compartilhada entre o aplicativo cliente e o provedor de identidade no campo Chave secreta do cliente.
  5. Especifique o locatário que será a conta do Azure AD a ser autenticada no Locatário.
  6. Clique em Próxima para definir os atributos do Azure AD.

LDAP

  1. Selecione LDAP para criar uma configuração LDAP.
  2. Especifique o nome que você quer usar para identificar essa configuração no campo Nome do provedor, geralmente o nome do provedor de identidade. O nome precisa começar com uma letra seguida por até 39 letras minúsculas, números ou hifens, mas não pode terminar com um hífen. Depois de criar uma configuração, não será possível editar o nome.
  3. Clique em Próxima.
  4. Especifique o nome do host (obrigatório), o tipo de conexão LDAP e o certificado de CA codificado em base64 do servidor LDAP.
  5. Clique em Próxima para configurar o servidor.
  6. Especifique o nome distinto, o filtro, os atributos de login e o identificador do usuário.
  7. Clique em Avançar para definir os detalhes do usuário.
  8. Se você optar por usar grupos, especifique o nome distinto, o filtro e o atributo do identificador do grupo.
  9. Clique em Próxima para definir os detalhes do grupo.
  10. Especifique o nome de usuário e a senha da conta de serviço.
  11. Clique em Concluído para definir o nome da conta de serviço.

Definir atributos

Os atributos que você precisa adicionar dependem do provedor de identidade e das opções de configuração escolhidas pelo administrador da plataforma ao configurar o provedor para o GKE Identity Service.

OIDC

  • Preencha os atributos de configuração:

    • URI de redirecionamento kubectl: o URL de redirecionamento e a porta usados pela gcloud CLI e especificados pelo administrador da plataforma no registro, geralmente no formato http://localhost:PORT/callback.
    • Autoridade certificadora (opcional): se fornecida pelo administrador da plataforma, uma string de certificado codificada em PEM para o provedor de identidade.
    • Reivindicação de grupo (opcional): a declaração do JWT (nome do campo) que o provedor usa para retornar os grupos de segurança de uma conta.
    • Prefixo do grupo (opcional): é o prefixo que você quer anexar aos nomes dos grupos de segurança para evitar conflitos com os nomes atuais nas regras de controle de acesso caso tenha configurações para vários provedores de identidade (geralmente o nome do provedor).
    • Proxy (opcional): endereço do servidor proxy a ser usado para se conectar ao provedor de identidade, se aplicável. Talvez seja necessário defini-lo se, por exemplo, o cluster estiver em uma rede particular e precisar se conectar a um provedor de identidade público. Por exemplo, http://user:password@10.10.10.10:8888.
    • Escopos (opcional): quaisquer escopos adicionais exigidos pelo seu provedor de identidade. O Microsoft Azure e o Okta exigem o escopo offline_access. Clique em Adicionar escopo para adicionar mais escopos, se necessário.
    • Declaração de usuário (opcional): a declaração do JWT (nome do campo) que seu provedor usa para identificar uma conta. Se você não especificar um valor aqui, o GKE Identity Service usará "sub", que é a declaração do User ID usada por muitos provedores. Você pode escolher outras declarações, como "e-mail" ou "nome", dependendo do provedor OpenID. Declarações que não sejam "email" são prefixadas com o URL do emissor para evitar conflitos de nomenclatura.
    • Prefixo do usuário (opcional): é o prefixo que você quer adicionar ao prefixo do usuário para evitar conflitos com nomes atuais caso não queira usar o prefixo padrão.
    • Parâmetros adicionais (opcional): quaisquer parâmetros extras necessários para a configuração, especificados como Chave e Valor. Clique em Adicionar parâmetro para adicionar mais parâmetros, se necessário.
    • Ativar token de acesso (opcional): se ativado, ele permite o suporte de grupos para provedores OIDC, como Okta.
    • Implantar o proxy do Console do Google Cloud (opcional): se ativado, um proxy será implantado para permitir que o Console do Google Cloud se conecte a um provedor de identidade local que não seja acessível publicamente pela Internet.

Azure AD

  • Preencha os atributos de configuração:

    • URI de redirecionamento kubectl: o URL de redirecionamento e a porta usados pela gcloud CLI e especificados pelo administrador da plataforma no registro, geralmente no formato http://localhost:PORT/callback.
    • Declaração de usuário (opcional): a declaração do JWT (nome do campo) que seu provedor usa para identificar uma conta. Se você não especificar um valor aqui, o serviço de identidade do GKE usará um valor na ordem "email", "preferred_username" ou "sub" para buscar os detalhes do usuário.
    • Proxy (opcional): endereço do servidor proxy a ser usado para se conectar ao provedor de identidade, se aplicável. Talvez seja necessário defini-lo se, por exemplo, o cluster estiver em uma rede particular e precisar se conectar a um provedor de identidade público. Por exemplo, http://user:password@10.10.10.10:8888.

Adicionar provedor de identidade

  • Se você tiver outros provedores de identidade para configurar, terá a opção de adicioná-los aqui. Siga as etapas para especificar outros provedores de identidade.

Atualizar a configuração

  • Clique em Atualizar configuração. Isso instala o GKE Identity Service, se necessário (somente clusters do EKS, os clusters do GKE já têm o GKE Identity Service instalado por padrão) e aplica a configuração do cliente nos clusters selecionados.

gcloud

Crie o arquivo de configuração

O GKE Identity Service usa um tipo de recurso personalizado (CRD, na sigla em inglês) do Kubernetes chamado ClientConfig para configuração de cluster, com campos para todas as informações de que o GKE Identity Service precisa para interagir com o provedor de identidade. As seções a seguir fornecem as configurações do OIDC e LDAP onde você cria um arquivo chamado auth-config.yaml com sua configuração.

OIDC

O arquivo a seguir mostra uma configuração oidc e uma configuração azuread. Para mais informações sobre quando usar oidc ou azuread, consulte Configurações específicas do provedor.

  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

Se você configurou mais de um provedor de identidade, é possível listar várias configurações de autenticação no arquivo auth-config.yaml na âncora authentication no mesmo formato da configuração anterior. A tabela a seguir descreve os campos do objeto oidc e azuread do ClientConfig. A maioria dos campos é opcional. Os campos que você precisa adicionar dependem do provedor de identidade e das opções de configuração escolhidas pelo administrador da plataforma ao configurar o provedor para o serviço de identidade do GKE.

Campo Obrigatório Descrição Formato
Nome sim O nome que você quer usar para identificar essa configuração, normalmente o nome do provedor de identidade. O nome de configuração precisa começar com uma letra seguida por até 39 letras minúsculas, números ou hifens, mas não pode terminar com um hífen. String
certificateAuthorityData No Se fornecida pelo administrador da plataforma, uma string de certificado codificada em PEM para o provedor de identidade. Inclua a string resultante em certificateAuthorityData como uma única linha. String
clientID Sim O identificador do cliente retornado ao registrar o GKE Identity Service no seu provedor. String
clientSecret Sim A chave secreta do cliente retornada ao registrar o GKE Identity Service com seu provedor. String
deployCloudConsoleProxy No Especifica se um proxy é implantado que permite que o console do Cloud se conecte a um provedor de identidade local que não seja acessível publicamente pela Internet. Por padrão, essa opção é definida como false. Booleano
parâmetros extras No Parâmetros de chave=valor adicionais a serem enviados ao provedor de identidade, especificados como uma lista separada por vírgulas, por exemplo, "prompt=consent,access_type=offline". Lista delimitada por vírgulas
enableAccessToken No Se ativado, o GKE Identity Service poderá usar o endpoint userinfo do provedor de identidade para receber informações de grupos quando um usuário fizer login a partir da linha de comando. Isso permite que você use grupos de segurança para autorização se tiver um provedor (como o Okta) que forneça declarações de grupo a partir desse endpoint. Se não for definido, será considerado false. Booleano
groupsClaim No A declaração do JWT (nome do campo) que seu provedor usa para retornar os grupos de segurança de uma conta. String
groupPrefix No O prefixo que você quer adicionar aos nomes dos grupos de segurança para evitar conflitos com nomes existentes nas suas regras de controle de acesso se você tiver configurações para vários provedores de identidade (normalmente o nome do provedor). String
issuerURI Sim O URI em que as solicitações de autorização são feitas para seu provedor de identidade. O URI precisa usar HTTPS. String do URL
kubectlRedirectURI Sim O URL de redirecionamento e a porta usados pela gcloud CLI e especificados pelo administrador da plataforma no registro, geralmente no formato "http://localhost:PORT/callback". String do URL
scopes Sim Outros escopos a serem enviados ao provedor OpenID. Por exemplo, o Microsoft Azure e o Okta exigem o escopo offline_access. Lista delimitada por vírgulas
userClaim No A declaração do JWT (nome do campo) que o provedor usa para identificar uma conta de usuário. Se você não especificar um valor aqui, o GKE Identity Service usará "sub", que é a declaração do User ID usada por muitos provedores. Você pode escolher outras declarações, como "e-mail" ou "nome", dependendo do provedor OpenID. Declarações que não sejam "email" são prefixadas com o URL do emissor para evitar conflitos de nomenclatura. String
userPrefix No Se você não quiser usar o prefixo padrão, o prefixo que você quer adicionar ao nome do usuário evita conflitos com nomes existentes. String
locatário Sim O tipo de conta do Azure AD a ser autenticada. Os valores aceitos são o ID ou o nome do locatário das contas que pertencem a um locatário específico. O nome do locatário também é conhecido como domínio principal. Veja detalhes sobre como encontrar esses valores em Encontrar o ID do locatário e o nome de domínio principal do Microsoft Azure AD. String
proxy No Endereço do servidor proxy a ser usado para se conectar ao provedor de identidade, se aplicável. Talvez seja necessário defini-lo se, por exemplo, o cluster estiver em uma rede particular e precisar se conectar a um provedor de identidade público. Por exemplo, http://user:password@10.10.10.10:8888. String

SAML

O arquivo a seguir mostra uma configuração 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: <>

A tabela a seguir descreve os campos do objeto saml do ClientConfig. Os campos que você precisa adicionar dependem do provedor de identidade e das opções de configuração escolhidas pelo administrador da plataforma ao configurar o provedor para o serviço de identidade do GKE.

Campo Obrigatório Descrição Formato
Nome sim O nome que você quer usar para identificar essa configuração, normalmente o nome do provedor de identidade. O nome de configuração precisa começar com uma letra seguida por até 39 letras minúsculas, números ou hifens, mas não pode terminar com um hífen. String
idpEntityID Sim O ID da entidade SAML do provedor de SAML, especificado em um formato de URI. Por exemplo, https://www.idp.com/saml. String do URL
idpSingleSignOnURI Sim O endpoint de SSO do provedor de SAML, especificado em formato de URI. Por exemplo, https://www.idp.com/saml/sso. String do URL
idpCertificateDataList Sim Corresponde aos certificados do provedor de identidade usados para verificar a resposta SAML. Esses certificados precisam ser codificados em base64 padrão e formatados no formato PEM. Apenas dois certificados são aceitos para facilitar a rotação de certificados do provedor de identidade. String
userAttribute No O nome do atributo na resposta SAML que contém o nome de usuário. String
groupsAttribute No Nome do atributo na resposta SAML que contém as informações sobre o grupo do usuário. String
userPrefix No Se você não quiser usar o prefixo padrão, o prefixo que você quer adicionar ao nome do usuário evita conflitos com nomes existentes. String
groupPrefix No O prefixo que você quer adicionar aos nomes dos grupos de segurança para evitar conflitos com nomes existentes nas suas regras de controle de acesso se você tiver configurações para vários provedores de identidade (normalmente o nome do provedor). String
attributeMapping No O mapeamento de atributos adicionais do usuário. String
certificateAuthorityData No Se fornecida pelo administrador da plataforma, uma string de certificado codificada em PEM para o provedor de identidade. Inclua a string resultante em certificateAuthorityData como uma única linha. String
preferredAuthentication No Nome do método de autenticação preferido configurado no cluster. String

LDAP

O arquivo a seguir mostra uma configuração 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

A tabela a seguir descreve os campos do objeto ldap do ClientConfig. Os campos que você precisa adicionar dependem do provedor de identidade e das opções de configuração escolhidas pelo administrador da plataforma ao configurar o provedor para o serviço de identidade do GKE.

Campo Obrigatório Descrição Formato
Nome sim Um nome para identificar essa configuração LDAP String
servidor
host sim Nome do host ou endereço IP do servidor LDAP. A porta é opcional e o padrão será 389, se não for especificada. Por exemplo, ldap.server.example.com ou 10.10.10.10:389. String
connectionType sim Tipo de conexão LDAP a ser usada na conexão com o servidor LDAP. Se starttls ou ldaps for especificado, o campo certificationAuthorityData não poderá ficar em branco. String
certificateAuthorityData Obrigatório para determinados tipos de conexão LDAP Contém um certificado de autoridade de certificação no formato PEM codificado em Base64 para o servidor LDAP. Isso precisa ser fornecido apenas para conexões ldaps e startTLS. String
usuário
baseDN sim O local da subárvore no diretório LDAP para pesquisar entradas de usuário. String no formato DN.
loginAttribute não O nome do atributo que corresponde ao nome de usuário de entrada. Isso é usado para encontrar o usuário no banco de dados LDAP, por exemplo, (<LoginAttribute>=<username>) e é combinado com o campo de filtro opcional. O padrão é userPrincipleName. String
filtro não Filtro opcional a ser aplicado ao pesquisar o usuário. Isso pode ser usado para restringir ainda mais as contas de usuário que têm permissão para fazer login. Se não for especificado, (objectClass=User) assumirá como padrão. String
Atributo do identificador não Determina qual atributo usar como identidade do usuário depois de ser autenticado. Isso é diferente do campo loginAttribute para permitir que os usuários façam login com um nome de usuário, mas tenham o identificador real como um endereço de e-mail ou nome distinto (DN) completo. Por exemplo, definir loginAttribute como sAMAccountName e identifierAttribute como userPrincipleName permitiria que um usuário fizesse login como bsmith, mas as políticas reais do RBAC para o usuário seriam gravadas como bsmith@example.com. É recomendável usar userPrincipleName, pois ele será exclusivo para cada usuário. Se não for especificado, o padrão será userPrincipleName. String
grupo (campo opcional)
baseDN sim O local da subárvore no diretório LDAP para pesquisar as entradas do grupo. String
filtro não Filtro opcional a ser usado ao pesquisar grupos a que um usuário pertence. Isso pode ser usado para corresponder explicitamente apenas a determinados grupos de modo a reduzir a quantidade de grupos retornados para cada usuário. O padrão é (objectClass=Group). String
Atributo do identificador não O nome de identificação de cada grupo a que um usuário pertence. Por exemplo, se isso for definido como distinguishedName, os RBACs e outras expectativas do grupo serão gravados como DNs completos. Se não for especificado, o padrão será distinguishedName. String
serviceAccount/simpleBindCredentials
dn sim O nome distinto do usuário da conta de serviço. String
senha sim A senha do usuário da conta de serviço. String

Ativar o GKE Identity Service

Também é possível ativar o serviço de identidade do GKE com uma configuração padrão no nível da frota. Com esse processo, a configuração especificada é aplicada automaticamente a cada novo cluster registrado na sua frota. Para mais informações sobre as configurações padrão no nível da frota, consulte Configurar padrões no nível da frota. Para ativar o serviço de identidade do GKE no seu projeto, execute o seguinte comando:

gcloud container fleet identity-service enable

Isso cria uma nova instância do controlador do GKE Identity Service para gerenciar o ciclo de vida do GKE Identity Service nos clusters da frota. Você só precisa executar esse comando uma vez por projeto para usar o GKE Identity Service com todos os clusters compatíveis registrados na frota do projeto.

Aplicar a configuração a um cluster

Para instalar o GKE Identity Service se necessário (somente clusters EKS, os clusters do GKE já têm o GKE Identity Service instalado por padrão) e aplicar a configuração a um cluster, execute o seguinte comando:

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

Substitua CLUSTER_NAME pelo nome exclusivo do cluster na frota. Ao executar esse comando, a configuração é gerenciada pelo controlador do serviço de identidade do GKE. Todas as alterações locais feitas na configuração do cliente do serviço de identidade do GKE serão reconciliadas de volta pelo controlador para a configuração especificada nesta configuração.

Isso permite que o GKE Identity Service recupere informações dos Grupos do Google para contas de usuário que fazem login com o ID do Google. Essa configuração é aplicável ao GKE no VMware e ao Google Distributed Cloud Virtual para Bare Metal da versão 1.13 em diante do GKE Enterprise. Veja mais informações sobre o recurso Grupos do Google em Configurar o gateway do Connect com o Grupos do Google.

Se você já tiver uma configuração no cluster para qualquer opção de autenticação, os seguintes itens se aplicam:

  • Se você já tiver configurações no nível do cluster para provedores OIDC, a aplicação de uma configuração do serviço de identidade do GKE no nível da frota vai substituir todas as especificações de autenticação atuais.
  • Se você já tiver configurações no nível do cluster para provedores que não são compatíveis com a configuração no nível da frota, essa configuração falhará. Remova a configuração do provedor atual para aplicar a configuração no nível da frota.

Se você não quiser mais que o controlador do GKE Identity Service gerencie a configuração, por exemplo, se quiser usar uma opção ou opções de autenticação diferentes, desative esse recurso seguindo as instruções em Como desativar o gerenciamento do GKE Identity Service.

Configurações específicas do provedor

Nesta seção, fornecemos orientações para a configuração de provedores OIDC (como Azure AD e Okta), incluindo um exemplo de configuração que pode ser copiada e editada com seus próprios detalhes.

Azure AD

Essa é a configuração padrão do GKE Identity Service com o Azure AD. O uso dessa configuração permite que o GKE Identity Service receba informações de usuários e grupos do Azure AD, além de permitir configurar o controle de acesso baseado em função (RBAC) do Kubernetes com base em grupos. No entanto, o uso dessa configuração limita a recuperação de aproximadamente 200 grupos por usuário.

Se você precisar recuperar mais de 200 grupos por usuário, consulte as instruções para o Azure AD (Avançado).

...
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 (Avançado)

Essa configuração opcional para o Azure AD permite que o GKE Identity Service recupere informações de usuários e grupos sem limite no número de grupos por usuário usando a API Microsoft Graph. Para saber mais sobre as plataformas compatíveis com essa configuração, consulte Configuração avançada para o Azure AD.

Se você precisar recuperar menos de 200 grupos por usuário, recomendamos que use a configuração padrão com uma âncora oidc no ClientConfig. Para mais informações, consulte as instruções do Azure AD.

Todos os campos da configuração de exemplo são obrigatórios.

...
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.
...

Substitua GROUP_FORMAT pelo formato em que você quer recuperar as informações do grupo. Esse campo pode ter valores correspondentes a ID ou NAME dos grupos de usuários. Essa configuração só está disponível para o GKE no VMware e o Google Distributed Cloud Virtual para clusters Bare Metal.

Okta

Veja a seguir como configurar a autenticação usando usuários e grupos com o Okta como seu provedor de identidade. Essa configuração permite que o GKE Identity Service recupere declarações de usuários e grupos usando um token de acesso e o endpoint userinfo do 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.
...

Configurar padrões no nível da frota

É possível ativar o serviço de identidade do GKE com uma configuração padrão no nível da frota. Usando essa configuração, todo novo cluster do GKE no Google Cloud registrado durante a criação do cluster ou cluster do GKE terá o serviço de identidade do GKE ativado no cluster com a configuração que você especificar. Para mais informações sobre como gerenciar a configuração no nível da frota, consulte Gerenciar recursos no nível da frota.

Para definir o serviço de identidade do GKE com uma configuração padrão no nível da frota, faça o seguinte:

  1. Crie um arquivo chamado fleet-default.yaml e o preencha conforme Criar o arquivo de configuração.
  2. Ative o serviço de identidade do GKE com uma configuração padrão no nível da frota:

    gcloud container fleet identity-service enable --fleet-default-member-config=fleet-default.yaml
    
  3. Para modificar a configuração padrão atual no nível da frota ou adicionar uma se o serviço de identidade do GKE já estiver ativado na sua frota sem uma configuração padrão, execute o seguinte comando:

    gcloud container fleet identity-service apply --fleet-default-member-config=default-config.yaml
    
  4. Os clusters registrados antes da definição da configuração padrão no nível da frota não herdam a configuração padrão automaticamente. Para aplicar a configuração padrão a um cluster que pertence a essa classe de clusters, execute o seguinte comando:

    gcloud container fleet identity-service apply --origin=fleet --membership=CLUSTER_NAME
    
  5. Para remover a configuração padrão no nível da frota, execute o seguinte comando:

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

Verificar a configuração do serviço de identidade

Depois de concluir a configuração no nível da frota, será possível verificar se os clusters na sua frota foram configurados com a configuração do serviço de identidade especificada.

Console

  1. No console do Google Cloud, acesse a página Recursos do GKE Enterprise.

    Acesse o gerenciamento de atributos do GKE Enterprise

    Todos os recursos ativados aparecem como Ativados na lista de recursos.

  2. Clique em DETALHES no recurso Serviço de identidade. Um painel de detalhes exibe o status dos clusters registrados.

gcloud

Execute este comando:

gcloud container fleet identity-service describe

Configurar o acesso do usuário

Depois de configurar os clusters, continue a configurar o acesso do usuário.

Desativar o gerenciamento do GKE Identity Service no nível da frota

Se você não quiser mais que o Google Cloud gerencie a configuração e o ciclo de vida do GKE Identity Service, desative esse recurso. Desativar o gerenciamento no nível da frota não removerá o GKE Identity Service ou a configuração de autenticação do cluster. Portanto, os usuários ainda poderão se autenticar no cluster usando o provedor de identidade de terceiros configurado. No entanto, se você fizer edições manuais locais no cluster na configuração ou nos recursos do serviço de identidade do GKE, essas alterações não serão mais reconciliadas com um estado que corresponda a uma única fonte de verdade.

Desativar o gerenciamento no nível da frota de um cluster

Para desativar o gerenciamento em nível de frota em um cluster, execute o seguinte comando:

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

...em que CLUSTER_NAME é o nome exclusivo do seu cluster na frota.

Desativar o gerenciamento no nível da frota para uma frota

Faça o seguinte para desativar o gerenciamento do GKE Identity Service no nível da frota para a sua frota.

Console

  1. No console do Google Cloud, acesse a página Recursos do GKE Enterprise.

    Acesse os recursos do GKE Enterprise

  2. Na tabela Recursos, clique em Detalhes na linha Serviço de identidade e depois em Desativar o GKE Identity Service no painel que é exibido.

gcloud

Execute este comando:

gcloud container fleet identity-service disable

Depois de desativar o recurso da sua frota, não será mais possível visualizar ou atualizar o estado do GKE Identity Service do cluster no console do Google Cloud ou usando gcloud.

Solução de problemas

Se você tiver problemas durante a configuração, consulte o guia de solução de problemas.