Configurar o gerenciamento de autenticação no nível da frota

Este documento mostra aos administradores de clusters como configurar vários clusters para autenticação de provedores de identidade terceirizados usando frotas.O Google Cloud gerencia a configuração de clusters em uma frota, o que resulta em um processo de configuração mais rápido e menos complexo do que a configuração de clusters individuais. Para mais informações sobre o processo de autenticação de provedores terceirizados, consulte Sobre a autenticação usando identidades de terceiros.

Antes de começar

  1. Instale e configure a Google Cloud CLI:

    1. Install the Google Cloud CLI.

    2. Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

    3. Para inicializar a gcloud CLI, execute o seguinte comando:

      gcloud init
    4. Depois que a gcloud CLI é inicializada, ela precisa ser atualizada e os componentes necessários instalados:

      gcloud components update
      gcloud components install kubectl
    5. Na CLI gcloud, selecione o projeto host da frota:
      gcloud config set project FLEET_HOST_PROJECT_ID
      Substitua FLEET_HOST_PROJECT_ID pelo ID do projeto host da frota.

  2. Ative as APIs necessárias:

    1. No console do Google Cloud , acesse a página do seletor de projetos:

      Acessar o seletor de projetos

    2. Selecione o projeto host da frota.

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

  3. Verifique se o administrador da plataforma forneceu todas as informações do provedor necessárias para o protocolo selecionado. Para mais informações, consulte os seguintes documentos:

Funções exigidas

Para receber as permissões necessárias para configurar clusters no nível da frota, peça ao administrador para conceder a você o papel do IAM de Administrador da frota (roles/gkehub/admin) no projeto host da frota. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Ativar o recurso de serviço de identidade no nível da frota

O recurso de serviço de identidade no nível da frota usa um controlador para gerenciar a configuração em cada um dos clusters da frota. Você precisa ativar o recurso no nível da frota apenas no projeto host da frota.

Para ativar o recurso no nível da frota, selecione uma das seguintes opções:

Console

  1. No console do Google Cloud , acesse a página GKE Identity Service.

    Acessar o gerenciador de recursos

  2. Clique em Ativar o serviço de identidade.

gcloud

Ative o recurso de serviço de identidade no nível da frota:

gcloud container fleet identity-service enable

Configurar clusters

Para configurar os clusters, especifique as seguintes informações:

  • Informações sobre seu provedor de identidade, como um ID e uma chave secreta do cliente.
  • Informações sobre os JSON Web Tokens (JWTs) que seu provedor de identidade usa para autenticação.
  • Outros escopos ou parâmetros exclusivos do seu provedor de identidade.

Para mais informações sobre as informações necessárias do administrador da plataforma ou de quem gerencia a identidade na sua organização, consulte os seguintes documentos:

Se você tiver configurações no nível do cluster para provedores OIDC, aplicar uma configuração no nível da frota ao cluster vai substituir todas as especificações de autenticação atuais. Além disso, se você 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 vai falhar. Remova a configuração do provedor atual para aplicar a configuração no nível da frota.

Para configurar os clusters, siga estas etapas:

Console

  1. Selecione os clusters que você quer configurar:

    1. No console do Google Cloud , acesse a página GKE Identity Service.

      Acessar o gerenciador de recursos

    2. Marque uma ou mais caixas de seleção dos clusters que você quer configurar. É 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 no nível da frota, a configuração será reconciliada de volta para o padrão.

    3. Clique em Atualizar configuração. O painel Editar configuração de clusters do serviço de identidade é aberto.

    4. Na seção Provedores de identidade, escolha como você quer configurar os clusters. É possível atualizar uma configuração atual, copiar uma configuração de um cluster diferente ou criar uma nova configuração. Para criar uma configuração, clique em Adicionar um provedor de identidade. A seção Novo provedor de identidade vai aparecer.

  2. Na seção Novo provedor de identidade, defina os detalhes do provedor:

    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 do provedor de identidade 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 URL do emissor.
    6. Clique em Próxima para definir os atributos do OIDC.

    Azure AD

    1. Selecione Novo Azure Active Directory para criar uma 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 do provedor de identidade 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.
  3. Clique em Próxima. A seção Definir atributos é aberta.

  4. Defina os atributos do seu provedor de identidade. Para conferir os atributos do OIDC ou do Azure AD, selecione uma das seguintes opções:

    OIDC

    • URI de redirecionamento kubectl: o URL de redirecionamento e a porta usados pela CLI gcloud 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.
    • Declaraçã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 cluster usará "sub", que é a declaração do User ID usada por muitos provedores. É possível 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 extras (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 Google Cloud console (opcional): se ativado, um proxy será implantado para permitir que o Google Cloud console se conecte a um provedor de identidade local que não seja acessível publicamente pela Internet.

    Azure AD

    • URI de redirecionamento kubectl: o URL de redirecionamento e a porta usados pela CLI gcloud 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 cluster 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.
  5. Clique em Concluído.

  6. Opcional: para adicionar mais provedores à configuração, clique em Adicionar um provedor de identidade e repita as etapas anteriores.

  7. Clique em Atualizar configuração.

Isso instala os componentes necessários, se necessário, e aplica a configuração do cliente nos clusters selecionados.

gcloud

Para usar a CLI gcloud e configurar a frota, crie um recurso personalizado do Kubernetes chamado ClientConfig com campos para todas as informações de que o cluster precisa para interagir com o provedor de identidade. Para criar e usar um ClientConfig, siga estas etapas:

  1. Crie uma especificação ClientConfig em um arquivo chamado auth-config.yaml. Para conferir exemplos de configurações para OIDC, SAML ou LDAP, selecione uma das seguintes opções. Para outras configurações de provedor de identidade, consulte Configurações específicas do provedor.

    OIDC

    O exemplo de ClientConfig 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: azure
        azureAD:
          clientID: CLIENT_ID
          clientSecret: CLIENT_SECRET
          tenant: TENANT_UUID
          kubectlRedirectURI: http://localhost:PORT/callback
          groupFormat: GROUP_FORMAT
          userClaim: USER_CLAIM
    

    Para mais informações sobre os campos no objeto oidc, consulte Campos OIDC do ClientConfig.

    SAML

    O exemplo de ClientConfig 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: <>
    

    Para mais informações sobre esses campos, consulte Campos SAML do ClientConfig.

    LDAP

    O exemplo de ClientConfig 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
    

    Para mais informações sobre esses campos, consulte Campos LDAP do ClientConfig.

    É possível adicionar várias configurações de provedor de identidade ao mesmo ClientConfig. O cluster tenta autenticar com cada configuração na ordem em que são definidas e para após a primeira autenticação bem-sucedida.

  2. Aplique o ClientConfig a um cluster:

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

    Substitua CLUSTER_NAME pelo nome exclusivo do cluster na frota.

O cluster instala os componentes necessários e usa o ClientConfig que você criou. O controlador no nível da frota gerencia a configuração do cluster. Todas as mudanças locais na configuração do cluster são reconciliadas pelo controlador para a configuração no nível da frota.

Para algumas versões de cluster, aplicar a configuração no nível da frota também adiciona por padrão uma configuração authentication extra aos clusters. Isso permite que o cluster 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 a clusters no Google Distributed Cloud (VMware e bare metal). Para mais informações sobre o recurso Grupos do Google, consulte Configurar o gateway do Connect com os Grupos do Google.

Se você não quiser mais que o controlador no nível da frota gerencie sua 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 de identidade no nível da frota.

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 para configurar a autenticação com o Azure AD. O uso dessa configuração permite que o cluster 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 cluster 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 Informações de configuração do provedor de identidade.

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 clusters em implantações do Google Distributed Cloud (no local).

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 cluster 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 especificar uma configuração padrão no nível da frota para autenticação. Com essa configuração, todo novo cluster que você registrar na frota usará automaticamente a configuração de autenticação especificada.

Os clusters de membros da frota atuais não são atualizados automaticamente quando você especifica uma configuração padrão no nível da frota. Se quiser, aplique a configuração padrão a esses clusters. Para mais informações sobre como gerenciar a configuração no nível da frota, consulte Gerenciar recursos no nível da frota.

Depois de definir um padrão no nível da frota, todas as mudanças locais na configuração de autenticação de clusters individuais serão substituídas quando o controlador da frota reconciliar o cluster com a configuração padrão.

Para configurar uma configuração padrão no nível da frota, faça o seguinte:

  1. Crie um ClientConfig em um arquivo chamado fleet-default.yaml. Para mais informações sobre como criar o arquivo, consulte as etapas da CLI gcloud na seção Configurar clusters.
  2. Para aplicar a configuração padrão no nível da frota, execute um dos seguintes comandos:

    • Se o recurso de serviço de identidade no nível da frota não estiver ativado, ative-o e especifique a configuração padrão no nível da frota:

      gcloud container fleet identity-service enable --fleet-default-member-config=fleet-default.yaml
    • Se o recurso de serviço de identidade no nível da frota estiver ativado, aplique a nova configuração padrão no nível da frota:

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

    Os novos clusters registrados na frota usam essa configuração por padrão. Os clusters de membros da frota atuais não herdam automaticamente a nova configuração padrão.

  3. Para aplicar a configuração padrão a um cluster de membro da frota, execute o seguinte comando:

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

Remover a configuração padrão no nível da frota

Para remover a configuração padrão, execute o seguinte comando:

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

Os novos clusters registrados na frota não usam automaticamente uma configuração de autenticação.

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 Gerenciador de recursos.

    Acessar o gerenciador de recursos

    Todos os recursos ativados aparecem como Ativados no painel.

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

gcloud

Execute este comando:

gcloud container fleet identity-service describe

A seguir

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