Configure clusters com o GKE Identity Service ao nível da frota

Este documento destina-se a administradores de clusters ou operadores de aplicações que querem configurar o GKE Identity Service nos respetivos clusters. Tem instruções sobre como configurar o serviço de identidade do GKE ao nível da frota nos seus clusters com o seu fornecedor de identidade preferencial.

Ativar APIs

Para começar, tem de ativar as APIs relevantes.

Consola

Certifique-se de que o projeto onde os clusters estão registados está selecionado.

  • Enable the GKE Hub and Kubernetes Engine APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

gcloud

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

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

Configure clusters

Para configurar os seus clusters de modo a usar o fornecedor escolhido, o GKE Identity Service precisa que especifique detalhes sobre o fornecedor de identidade, as informações nos tokens JWT que fornece para identificação do utilizador e outras informações facultadas quando regista o GKE Identity Service como uma aplicação cliente. Por exemplo, se o seu fornecedor criar tokens de identidade com os seguintes campos (entre outros), em que iss é o URI do fornecedor de identidade, sub identifica o utilizador e groupList lista os grupos de segurança aos quais o utilizador pertence:

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

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

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

O administrador da plataforma ou quem gere a identidade na sua organização deve fornecer-lhe a maioria das informações de que precisa para criar a configuração. Para ver configurações de exemplo de alguns fornecedores de identidade usados com frequência, consulte Configurações específicas do fornecedor.

O GKE Identity Service permite-lhe criar ou atualizar e aplicar esta configuração a partir da Google Cloud consola ou através da CLI do Google Cloud.

Consola

Ative o serviço de identidade do GKE

  1. Na Google Cloud consola, aceda à página Gestor de funcionalidades.

    Aceda ao Gestor de funcionalidades

  2. Clique em Ativar no painel Serviço de identidade e, de seguida, clique novamente em Ativar no painel apresentado. Isto cria uma nova instância do controlador do GKE Identity Service para gerir o ciclo de vida do GKE Identity Service nos clusters da sua frota.

Selecione clusters

  1. Na página Gestor de funcionalidades, clique em Detalhes no painel Serviço de identidade para abrir o painel de detalhes do serviço. Apresenta os clusters do seu projeto e o respetivo estado do serviço de identidade do GKE ao nível da frota.
  2. Clique em Atualizar serviço de identidade para abrir o painel de configuração.
  3. Selecione os clusters que quer configurar. Só é possível selecionar tipos de clusters suportados. Pode escolher clusters individuais ou especificar que quer que todos os clusters sejam configurados com a mesma configuração de identidade. Se tiver configurado predefinições ao nível da frota, a configuração é reconciliada com a predefinição. Para mais informações, consulte o artigo Configure as predefinições ao nível da frota.
  4. No menu pendente Fornecedor de identidade, escolha como quer configurar o cluster. Se o cluster tiver uma configuração do GKE Identity Service existente, pode optar por atualizá-la. Se um cluster registado existente tiver uma configuração do GKE Identity Service que quer usar, pode optar por copiar essa configuração para os clusters selecionados. Para criar uma configuração completamente nova, siga as instruções do fornecedor escolhido, conforme descrito na secção seguinte.

Defina os detalhes do fornecedor

Os detalhes do fornecedor que tem de adicionar dependem do tipo de fornecedor de identidade que quer usar para a sua configuração.

OIDC

  1. Selecione Novo Open ID Connect para criar uma nova configuração do OIDC.
  2. Especifique o nome que quer usar para identificar esta configuração no campo Nome do fornecedor, normalmente o nome do fornecedor de identidade. Este nome tem de começar por uma letra, seguida de até 39 letras minúsculas, números ou hífenes, e não pode terminar com um hífen. Não pode editar este nome depois de criar uma configuração.
  3. Especifique o ID de cliente devolvido quando registar o serviço de identidade do GKE junto do seu fornecedor no campo ID de cliente.
  4. Especifique o segredo do cliente que tem de ser partilhado entre a aplicação cliente e o fornecedor de identidade no campo Segredo do cliente.
  5. Especifique o URI onde os pedidos de autorização são feitos ao seu fornecedor de identidade no campo URL do emissor.
  6. Clique em Seguinte para definir os atributos OIDC.

Azure AD

  1. Selecione Novo Azure Active Directory para criar uma nova configuração do Azure AD.
  2. Especifique o nome que quer usar para identificar esta configuração no campo Nome do fornecedor, normalmente o nome do fornecedor de identidade. Este nome tem de começar por uma letra, seguida de até 39 letras minúsculas, números ou hífenes, e não pode terminar com um hífen. Não pode editar este nome depois de criar uma configuração.
  3. Especifique o ID de cliente devolvido quando registar o serviço de identidade do GKE junto do seu fornecedor no campo ID de cliente.
  4. Especifique o segredo do cliente que tem de ser partilhado entre a aplicação cliente e o fornecedor de identidade no campo Segredo do cliente.
  5. Especifique o inquilino que é a conta do Azure AD a ser autenticada no Inquilino.
  6. Clique em Seguinte para definir os atributos do Azure AD.

LDAP

  1. Selecione LDAP para criar uma nova configuração LDAP.
  2. Especifique o nome que quer usar para identificar esta configuração no campo Nome do fornecedor, normalmente o nome do fornecedor de identidade. Este nome tem de começar por uma letra, seguida de até 39 letras minúsculas, números ou hífenes, e não pode terminar com um hífen. Não pode editar este nome depois de criar uma configuração.
  3. Clicar em Seguinte.
  4. Especifique o nome do anfitrião (obrigatório), o tipo de ligação LDAP e o certificado da AC codificado em base64 do servidor LDAP.
  5. Clique em Seguinte para configurar o servidor.
  6. Especifique o nome distinto, o filtro, o atributo de início de sessão e o atributo de identificador do utilizador.
  7. Clique em Seguinte para definir os detalhes do utilizador.
  8. Se optar por usar grupos, especifique o nome distinto, o filtro e o atributo identificador do grupo.
  9. Clique em Seguinte para definir os detalhes do grupo.
  10. Especifique o nome de utilizador e a palavra-passe da conta de serviço.
  11. Clique em Concluído para definir o nome da conta de serviço.

Defina atributos

Os atributos que tem de adicionar dependem do seu fornecedor de identidade e das opções de configuração escolhidas pelo administrador da plataforma quando configura o fornecedor para o serviço de identidade do GKE.

OIDC

  • Preencha os atributos de configuração:

    • kubectl URI de redirecionamento: o URL e a porta de redirecionamento usados pela CLI gcloud e especificados pelo administrador da plataforma no registo, normalmente no formato http://localhost:PORT/callback.
    • Autoridade de certificação (opcional): se fornecido pelo administrador da plataforma, uma string de certificado codificada em PEM para o fornecedor de identidade.
    • Group Claim (afirmação de grupo) (opcional): a afirmação JWT (nome do campo) que o seu fornecedor usa para devolver os grupos de segurança de uma conta.
    • Prefixo do grupo (opcional): o prefixo que quer antepor aos nomes dos grupos de segurança para evitar conflitos com os nomes existentes nas suas regras de controlo de acesso se tiver configurações para vários fornecedores de identidade (normalmente, o nome do fornecedor).
    • Proxy (opcional): endereço do servidor proxy a usar para estabelecer ligação ao fornecedor de identidade, se aplicável. Pode ter de definir esta opção se, por exemplo, o seu cluster estiver numa rede privada e precisar de se ligar a um fornecedor de identidade público. Por exemplo: http://user:password@10.10.10.10:8888.
    • Âmbitos (opcional): âmbitos adicionais exigidos pelo seu fornecedor de identidade. O Microsoft Azure e o Okta requerem o âmbito offline_access. Clique em Adicionar âmbito para adicionar mais âmbitos, se necessário.
    • Reivindicação do utilizador (opcional): a reivindicação JWT (nome do campo) que o seu fornecedor usa para identificar uma conta. Se não especificar um valor aqui, o serviço de identidade do GKE usa "sub", que é a reivindicação de ID do utilizador usada por muitos fornecedores. Pode escolher outras reivindicações, como "email" ou "nome", consoante o fornecedor OpenID. As reivindicações que não sejam "email" têm o prefixo do URL do emissor para evitar conflitos de nomenclatura.
    • Prefixo do utilizador (opcional): o prefixo que quer anteposto às reivindicações do utilizador para evitar conflitos com nomes existentes, se não quiser usar o prefixo predefinido.
    • Parâmetros adicionais (opcional): quaisquer parâmetros adicionais necessários para a sua configuração, especificados como a chave e o valor do parâmetro. Clique em Adicionar parâmetro para adicionar mais parâmetros, se necessário.
    • Ativar token de acesso (opcional): se ativado, permite o suporte de grupos para fornecedores de OIDC, como o Okta.
    • Implemente Google Cloud o proxy da consola (opcional): se estiver ativado, é implementado um proxy que permite que a Google Cloud consola se ligue a um fornecedor de identidade no local que não seja acessível publicamente através da Internet.

Azure AD

  • Preencha os atributos de configuração:

    • kubectl URI de redirecionamento: o URL e a porta de redirecionamento usados pela CLI gcloud e especificados pelo administrador da plataforma no registo, normalmente no formato http://localhost:PORT/callback.
    • Reivindicação do utilizador (opcional): a reivindicação JWT (nome do campo) que o seu fornecedor usa para identificar uma conta. Se não especificar um valor aqui, o GKE Identity Service usa um valor na ordem de "email", "preferred_username" ou "sub" para obter os detalhes do utilizador.
    • Proxy (opcional): endereço do servidor proxy a usar para estabelecer ligação ao fornecedor de identidade, se aplicável. Pode ter de definir esta opção se, por exemplo, o seu cluster estiver numa rede privada e precisar de se ligar a um fornecedor de identidade público. Por exemplo: http://user:password@10.10.10.10:8888.

Adicionar Fornecedor de identidade

  • Se tiver fornecedores de identidade adicionais que queira configurar para a sua frota, tem a opção de os adicionar aqui. Siga os passos para especificar fornecedores de identidade adicionais.

Atualize a configuração

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

gcloud

Crie o ficheiro de configuração

O GKE Identity Service usa um tipo de recurso personalizado (CRD) do Kubernetes denominado ClientConfig para a configuração do cluster, com campos para todas as informações de que o GKE Identity Service precisa para interagir com o fornecedor de identidade. As secções seguintes fornecem as configurações para OIDC e LDAP, onde cria um ficheiro denominado auth-config.yaml com a sua configuração.

OIDC

O ficheiro seguinte mostra uma configuração oidc e uma configuração azuread. Para mais informações sobre quando usar oidc ou azuread, consulte o artigo Configurações específicas do fornecedor.

  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 tiver configurado mais do que um fornecedor de identidade, pode listar várias configurações de autenticação no ficheiro auth-config.yaml sob a âncora authentication no mesmo formato que na configuração anterior. A tabela seguinte descreve os campos do objeto ClientConfig oidc e azuread. A maioria dos campos é opcional. Os campos que tem de adicionar dependem do seu fornecedor de identidade e das opções de configuração escolhidas pelo administrador da plataforma quando configura o fornecedor para o serviço de identidade do GKE.

Campo Obrigatória Descrição Formato
nome sim O nome que quer usar para identificar esta configuração, normalmente o nome do fornecedor de identidade. Um nome de configuração tem de começar por uma letra, seguida de até 39 letras minúsculas, números ou hífenes, e não pode terminar com um hífen. String
certificateAuthorityData Não Se fornecido pelo administrador da plataforma, uma string de certificado com codificação PEM para o fornecedor de identidade. Inclua a string resultante em certificateAuthorityData como uma única linha. String
clientID Sim O identificador do cliente devolvido quando registar o serviço de identidade do GKE junto do seu fornecedor. String
clientSecret Sim O segredo do cliente devolvido quando regista o serviço de identidade do GKE junto do seu fornecedor. String
deployCloudConsoleProxy Não Especifica se é implementado um proxy que permite que a Google Cloud consola se ligue a um fornecedor de identidade no local que não seja acessível publicamente através da Internet. Por predefinição, esta opção está definida como false. Booleano
extraParams Não Parâmetros adicionais de chave=valor a enviar para o fornecedor de identidade, especificados como uma lista separada por vírgulas; por exemplo, `prompt=consent,access_type=offline`. Lista delimitada por vírgulas
enableAccessToken Não Se estiver ativado, o GKE Identity Service pode usar o ponto final userinfo do fornecedor de identidade para obter informações de grupos quando um utilizador inicia sessão a partir da linha de comandos. Isto permite-lhe usar grupos de segurança para autorização se tiver um fornecedor (como o Okta) que forneça reivindicações de grupos a partir deste ponto final. Se não estiver definido, considera-se que é false. Booleano
groupsClaim Não A reivindicação JWT (nome do campo) que o seu fornecedor usa para devolver os grupos de segurança de uma conta. String
groupPrefix Não O prefixo que quer antepor aos nomes dos grupos de segurança para evitar conflitos com os nomes existentes nas suas regras de controlo de acesso se tiver configurações para vários fornecedores de identidade (normalmente, o nome do fornecedor). String
issuerURI Sim O URI onde os pedidos de autorização são feitos ao seu fornecedor de identidade. O URI tem de usar HTTPS. String de URL
kubectlRedirectURI Sim O URL de redirecionamento e a porta usados pela CLI gcloud e especificados pelo administrador da plataforma no registo, normalmente no formato http://localhost:PORT/callback. String de URL
âmbitos Sim Âmbitos adicionais a enviar para o fornecedor OpenID. Por exemplo, o Microsoft Azure e o Okta requerem o âmbito offline_access. Lista delimitada por vírgulas
userClaim Não A reivindicação JWT (nome do campo) que o seu fornecedor usa para identificar uma conta de utilizador. Se não especificar um valor aqui, o serviço de identidade do GKE usa "sub", que é a reivindicação de ID do utilizador usada por muitos fornecedores. Pode escolher outras reivindicações, como "email" ou "nome", consoante o fornecedor OpenID. As reivindicações que não sejam "email" têm o prefixo do URL do emissor para evitar conflitos de nomenclatura. String
userPrefix Não O prefixo que quer anteposto às reivindicações do utilizador para evitar conflitos com nomes existentes, se não quiser usar o prefixo predefinido. String
inquilino Sim O tipo de conta do Azure AD a autenticar. Os valores suportados são o ID do inquilino ou o nome do inquilino para contas pertencentes a um inquilino específico. O nome do inquilino também é conhecido como o domínio principal. Para ver detalhes sobre como encontrar estes valores, consulte o artigo Encontre o ID do inquilino e o nome do domínio principal do Microsoft Azure AD. String
proxy Não Endereço do servidor proxy a usar para estabelecer ligação ao fornecedor de identidade, se aplicável. Pode ter de definir esta opção se, por exemplo, o seu cluster estiver numa rede privada e precisar de se ligar a um fornecedor de identidade público. Por exemplo: http://user:password@10.10.10.10:8888. String

SAML

O ficheiro seguinte 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 seguinte descreve os campos do objeto ClientConfig saml. Os campos que tem de adicionar dependem do seu fornecedor de identidade e das opções de configuração escolhidas pelo administrador da plataforma quando configura o fornecedor para o serviço de identidade do GKE.

Campo Obrigatória Descrição Formato
nome sim O nome que quer usar para identificar esta configuração, normalmente o nome do fornecedor de identidade. Um nome de configuração tem de começar por uma letra, seguida de até 39 letras minúsculas, números ou hífenes, e não pode terminar com um hífen. String
idpEntityID Sim O ID da entidade SAML para o fornecedor SAML, especificado num formato URI. Por exemplo: https://www.idp.com/saml. String de URL
idpSingleSignOnURI Sim O ponto final de SSO do fornecedor de SAML, especificado num formato de URI. Por exemplo: https://www.idp.com/saml/sso. String de URL
idpCertificateDataList Sim Corresponde aos certificados do fornecedor de identidade usados para validar a resposta SAML. Estes certificados têm de estar codificados em Base64 padrão e no formato PEM. Só é suportado um máximo de dois certificados para facilitar a rotação de certificados do fornecedor de identidade. String
userAttribute Não Nome do atributo na resposta SAML que contém o nome de utilizador. String
groupsAttribute Não Nome do atributo na resposta SAML que contém as informações do grupo do utilizador. String
userPrefix Não O prefixo que quer anteposto às reivindicações do utilizador para evitar conflitos com nomes existentes, se não quiser usar o prefixo predefinido. String
groupPrefix Não O prefixo que quer antepor aos nomes dos grupos de segurança para evitar conflitos com os nomes existentes nas suas regras de controlo de acesso se tiver configurações para vários fornecedores de identidade (normalmente, o nome do fornecedor). String
attributeMapping Não O mapeamento de atributos de utilizador adicionais. String
certificateAuthorityData Não Se fornecido pelo administrador da plataforma, uma string de certificado com codificação PEM para o fornecedor de identidade. Inclua a string resultante em certificateAuthorityData como uma única linha. String
preferredAuthentication Não Nome do método de autenticação preferido configurado no cluster. String

LDAP

O ficheiro seguinte 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 seguinte descreve os campos no objeto ClientConfig ldap. Os campos que tem de adicionar dependem do seu fornecedor de identidade e das opções de configuração escolhidas pelo administrador da plataforma quando configura o fornecedor para o serviço de identidade do GKE:

Campo Obrigatória Descrição Formato
nome sim Um nome para identificar esta configuração LDAP String
servidor
anfitrião sim Nome do anfitrião ou endereço IP do servidor LDAP. A porta é opcional e a predefinição é 389, se não for especificada. Por exemplo, ldap.server.example.com ou 10.10.10.10:389. String
connectionType sim Tipo de ligação LDAP a usar quando se liga ao servidor LDAP. Se starttls ou ldaps for especificado, o campo certificateAuthorityData não deve estar vazio. String
certificateAuthorityData Obrigatório para determinados tipos de ligação LDAP Contém um certificado da autoridade de certificação em formato PEM codificado em Base64 para o servidor LDAP. Tem de ser fornecido apenas para ligações ldaps e startTLS. String
utilizador
baseDN sim A localização da subárvore no diretório LDAP para pesquisar entradas de utilizadores. String no formato DN.
loginAttribute não O nome do atributo que corresponde ao nome de utilizador introduzido. É usado para encontrar o utilizador na base de dados LDAP, por exemplo, (<LoginAttribute>=<username>), e é combinado com o campo de filtro opcional. A predefinição é userPrincipalName. String
filtrar não Filtro opcional a aplicar quando pesquisa o utilizador. Isto pode ser usado para restringir ainda mais as contas de utilizador autorizadas a iniciar sessão. Se não for especificado, o fuso horário predefinido é (objectClass=User). String
identifierAttribute não Determina que atributo usar como a identidade do utilizador após a autenticação. Isto é diferente do campo loginAttribute para permitir que os utilizadores iniciem sessão com um nome de utilizador, mas que o respetivo identificador real seja um endereço de email ou um nome distinto (DN) completo. Por exemplo, definir loginAttribute como sAMAccountName e identifierAttribute como userPrincipalName permitiria que um utilizador iniciasse sessão como bsmith, mas as políticas RBAC reais para o utilizador seriam escritas como bsmith@example.com. Recomendamos a utilização de userPrincipalName, uma vez que este valor é exclusivo para cada utilizador. Se não for especificado, a predefinição é userPrincipalName. String
group (Campo opcional)
baseDN sim A localização da subárvore no diretório LDAP para pesquisar entradas de grupos. String
filtrar não Filtro opcional a usar quando pesquisar grupos aos quais um utilizador pertence. Isto pode ser usado para fazer a correspondência explícita apenas de determinados grupos, de modo a reduzir a quantidade de grupos devolvidos para cada utilizador. A predefinição é (objectClass=Group). String
identifierAttribute não O nome de identificação de cada grupo ao qual um utilizador pertence. Por exemplo, se esta opção estiver definida como distinguishedName, os RBACs e outras expetativas de grupos devem ser escritos como DNs completos. Se não for especificado, a predefinição é distinguishedName. String
serviceAccount/simpleBindCredentials
dn sim O nome distinto do utilizador da conta de serviço. String
palavra-passe sim A palavra-passe do utilizador da conta de serviço. String

Ative o serviço de identidade do GKE

Para ativar o GKE Identity Service para o seu projeto, execute o seguinte comando:

gcloud container fleet identity-service enable

Isto cria uma nova instância do controlador do serviço de identidade do GKE para gerir o ciclo de vida do serviço de identidade do GKE nos clusters da sua frota. Só tem de executar este comando uma vez por projeto para usar o serviço de identidade do GKE com todos os clusters suportados registados na frota do seu projeto.

Opcionalmente, pode ativar o serviço de identidade do GKE com uma configuração predefinida ao nível da frota. Com esta configuração, a configuração do fornecedor do GKE Identity Service que especificar é aplicada automaticamente a todos os clusters do GKE registados na sua frota durante a criação do cluster. Google Cloud Pode saber mais sobre como o fazer em Configure as predefinições ao nível da frota.

Aplique a configuração a um cluster

Para instalar o GKE Identity Service, se necessário (apenas para clusters do EKS; todos os outros tipos de clusters suportados já têm o GKE Identity Service instalado por predefiniçã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. Após a execução deste comando, a configuração é gerida pelo controlador do GKE Identity Service. Quaisquer alterações locais feitas à configuração do cliente do serviço de identidade do GKE são reconciliadas pelo controlador com a configuração especificada nesta configuração.

Isto permite que o GKE Identity Service obtenha informações dos Grupos Google para contas de utilizadores que iniciam sessão com o respetivo ID Google. Esta configuração é aplicável a clusters no Google Distributed Cloud (VMware e bare metal) a partir da versão 1.13 do GKE Enterprise. Para saber mais sobre a funcionalidade Grupos do Google, consulte o artigo Configure o gateway de ligação com o Grupos do Google.

Tenha em atenção que, se tiver uma configuração existente no cluster para quaisquer opções de autenticação, aplicam-se as seguintes condições:

  • Se tiver configurações ao nível do cluster para fornecedores de OIDC, a aplicação de uma configuração do GKE Identity Service ao nível da frota ao cluster substitui todas as especificações de autenticação existentes.
  • Se tiver configurações ao nível do cluster existentes para fornecedores que não são suportados para a configuração ao nível da frota, esta configuração falha. Tem de remover a configuração do fornecedor existente para aplicar a configuração ao nível da frota.

Se já não quiser que o controlador do GKE Identity Service faça a gestão da sua configuração, por exemplo, se quiser usar uma opção ou opções de autenticação diferentes, pode desativar esta funcionalidade seguindo as instruções em Desativar a gestão do GKE Identity Service.

Configurações específicas do fornecedor

Esta secção fornece orientações de configuração para fornecedores de OIDC (como o Azure AD e o Okta), incluindo um exemplo de configuração que pode copiar e editar com os seus próprios detalhes.

Azure AD

Esta é a configuração predefinida para configurar o GKE Identity Service com o Azure AD. A utilização desta configuração permite que o GKE Identity Service obtenha informações de utilizadores e grupos do Azure AD, e permite-lhe configurar o controlo de acesso baseado em funções (RBAC) do Kubernetes com base em grupos. No entanto, a utilização desta configuração limita a obtenção de aproximadamente 200 grupos por utilizador.

Se precisar de obter mais de 200 grupos por utilizador, 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)

Esta configuração opcional para o Azure AD permite que o serviço de identidade do GKE obtenha informações de utilizadores e grupos sem limite no número de grupos por utilizador, através da API Microsoft Graph. Para ver informações sobre as plataformas que suportam esta configuração, consulte o artigo Configuração avançada para o Azure AD.

Se precisar de obter menos de 200 grupos por utilizador, recomendamos que use a configuração predefinida com um ponto de ancoragem oidc no seu ClientConfig. Para mais informações, consulte as instruções para o Azure AD.

Todos os campos na 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 no qual quer obter informações do grupo. Este campo pode assumir valores correspondentes a ID ou NAME dos grupos de utilizadores. Esta definição só está disponível para clusters em implementações do Google Distributed Cloud (no local).

Okta

A imagem seguinte mostra como configurar a autenticação usando utilizadores e grupos com o Okta como fornecedor de identidade. Esta configuração permite que o serviço de identidade do GKE obtenha reivindicações de utilizadores e grupos através de um token de acesso e do ponto final 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.
...

Configure predefinições ao nível da frota

Pode ativar o GKE Identity Service com uma configuração predefinida ao nível da frota. Com esta configuração, todos os novos clusters do GKE no Google Cloud registados durante a criação do cluster ou cluster do GKE têm o serviço de identidade do GKE ativado automaticamente no cluster com a configuração que especificar. Se tiver clusters de membros da frota existentes quando ativa esta funcionalidade, estes não são atualizados automaticamente com as predefinições da frota, embora possa optar por aplicar-lhes a configuração predefinida. Para mais informações sobre a gestão da configuração ao nível da frota, consulte o artigo Faça a gestão das funcionalidades ao nível da frota.

Para configurar o GKE Identity Service com uma configuração predefinida ao nível da frota, faça o seguinte:

  1. Crie um ficheiro com o nome fleet-default.yaml e preencha-o de acordo com o artigo Crie o ficheiro de configuração.
  2. Ative o serviço de identidade do GKE com a configuração predefinida ao nível da frota:

    gcloud container fleet identity-service enable --fleet-default-member-config=fleet-default.yaml

    Para modificar a configuração predefinida ao nível da frota ou adicionar uma se o GKE Identity Service já estiver ativado na sua frota sem esta funcionalidade, execute o seguinte comando:

    gcloud container fleet identity-service apply --fleet-default-member-config=default-config.yaml

    Os clusters de membros da frota existentes que registou antes de configurar a configuração predefinida ao nível da frota não herdam automaticamente a configuração predefinida. Para aplicar a configuração predefinida a um cluster de membros da frota existente, execute o seguinte comando:

    gcloud container fleet identity-service apply --origin=fleet --membership=CLUSTER_NAME

    Para desativar as predefinições ao nível da frota para o serviço de identidade do GKE, execute o seguinte comando para remover a configuração predefinida:

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

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

Depois de concluir a configuração ao nível da frota, pode verificar se os clusters na sua frota foram configurados com êxito com a configuração do serviço de identidade que especificou.

Consola

  1. Na Google Cloud consola, aceda à página Gestor de funcionalidades.

    Aceda ao Gestor de funcionalidades

    Todas as funcionalidades ativadas são apresentadas como Ativadas no respetivo painel.

  2. Clique em DETALHES no painel Serviço de identidade. Um painel de detalhes apresenta o estado dos seus clusters registados.

gcloud

Execute o seguinte comando:

gcloud container fleet identity-service describe

O que se segue?

Depois de configurar os clusters, continue a configurar o acesso do utilizador.