Configure a gestão da autenticação ao nível da frota

Este documento mostra aos administradores de clusters como configurar vários clusters para autenticação de fornecedores de identidade de terceiros através de frotas.O Google Cloud gestor de frotas gerencia a configuração de clusters numa frota, o que resulta num processo de configuração mais rápido e menos complexo do que a configuração de clusters individuais. Para mais informações acerca do processo de autenticação do fornecedor externo, consulte Acerca da autenticação através de identidades de terceiros.

Antes de começar

  1. Instale e configure a CLI Google Cloud:

    1. Install the Google Cloud CLI.

    2. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

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

      gcloud init
    4. Depois de inicializar a CLI gcloud, atualize-a e instale os componentes necessários:

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

  2. Ative as APIs necessárias:

    1. Na Google Cloud consola, aceda à página do seletor de projetos:

      Aceder ao seletor de projetos

    2. Selecione o projeto de anfitrião 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. Certifique-se de que o administrador da plataforma lhe forneceu todas as informações do fornecedor necessárias para o protocolo selecionado. Para mais informações, consulte os seguintes documentos:

Funções necessárias

Para receber as autorizações de que precisa para configurar clusters ao nível da frota, peça ao seu administrador que lhe conceda a função de administrador da frota (roles/gkehub/admin) do IAM no projeto anfitrião da frota. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Ative a funcionalidade de serviço de identidade ao nível da frota

A funcionalidade de serviço de identidade ao nível da frota usa um controlador para gerir a configuração em cada um dos clusters na frota. Tem de ativar a funcionalidade ao nível da frota apenas no projeto anfitrião da frota.

Para ativar a funcionalidade ao nível da frota, selecione uma das seguintes opções:

Consola

  1. Na Google Cloud consola, aceda à página GKE Identity Service.

    Aceda ao Gestor de funcionalidades

  2. Clique em Ativar serviço de identidade.

gcloud

Ative a funcionalidade do serviço de identidade ao nível da frota:

gcloud container fleet identity-service enable

Configure clusters

Para configurar os seus clusters, tem de especificar as seguintes informações:

  • Informações sobre o seu fornecedor de identidade, como um ID de cliente e um segredo.
  • Informações sobre os tokens da Web JSON (JWTs) que o seu fornecedor de identidade usa para autenticação.
  • Quaisquer âmbitos ou parâmetros adicionais exclusivos do seu fornecedor de identidade.

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

Se tiver configurações ao nível do cluster para fornecedores de OIDC, a aplicação de uma configuração ao nível da frota ao cluster substitui todas as especificações de autenticação existentes. Além disso, se tiver configurações ao nível do cluster existentes para fornecedores que não são suportados para 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.

Para configurar os clusters, siga estes passos:

Consola

  1. Selecione os clusters a configurar:

    1. Na Google Cloud consola, aceda à página GKE Identity Service.

      Aceda ao Gestor de funcionalidades

    2. Selecione uma ou mais caixas de verificação para os clusters que quer configurar. 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.

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

    4. Na secção Fornecedores de identidade, escolha como quer configurar os clusters. Pode atualizar uma configuração existente, copiar uma configuração de um cluster diferente ou criar uma nova configuração. Para criar uma nova configuração, clique em Adicionar um fornecedor de identidade. É apresentada a secção Novo fornecedor de identidade.

  2. Na secção Novo fornecedor de identidade, defina os detalhes do fornecedor:

    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 do fornecedor de identidade 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 do fornecedor de identidade 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 do servidor LDAP codificado em base64.
    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 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 do 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.
  3. Clicar em Seguinte. É aberta a secção Definir atributos.

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

    OIDC

    • kubectl URI de redirecionamento: o URL de redirecionamento e a porta usados pela CLI gcloud e especificados pelo administrador da sua 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 com codificação 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 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 estabelecer ligação 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 cluster usa "sub", que é a reivindicação de ID do utilizador usada por muitos fornecedores. Pode escolher outras reivindicações, como "email" ou "name", consoante o fornecedor do OpenID. As reivindicações que não sejam "email" têm o prefixo do URL do emissor para evitar conflitos de nomes.
    • 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 estiver ativado, permite o apoio técnico 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

    • kubectl URI de redirecionamento: o URL de redirecionamento e a porta usados pela CLI gcloud e especificados pelo administrador da sua 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 cluster 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 estabelecer ligação a um fornecedor de identidade público. Por exemplo: http://user:password@10.10.10.10:8888.
  5. Clique em Concluído.

  6. Opcional: para adicionar mais fornecedores à configuração, clique em Adicionar um fornecedor de identidade e repita os passos anteriores.

  7. Clique em Atualizar configuração.

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

gcloud

Para usar a CLI gcloud para configurar a frota, cria um recurso personalizado do Kubernetes denominado ClientConfig com campos para todas as informações de que o cluster precisa para interagir com o fornecedor de identidade. Para criar e usar um ClientConfig, siga estes passos:

  1. Crie uma especificação ClientConfig num ficheiro denominado auth-config.yaml. Para ver exemplos de configurações para OIDC, SAML ou LDAP, selecione uma das seguintes opções. Para outras configurações do fornecedor de identidade, consulte as Configurações específicas do fornecedor.

    OIDC

    O exemplo ClientConfig seguinte mostra uma configuração oidc e uma configuração azuread. Para mais informações sobre quando usar oidc ou azuread, consulte as 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: 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 os campos OIDC ClientConfig.

    SAML

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

    Para mais informações sobre estes campos, consulte o artigo Campos SAML ClientConfig.

    LDAP

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

    Para mais informações sobre estes campos, consulte o artigo Campos LDAP ClientConfig.

    Pode adicionar várias configurações de fornecedor de identidade ao mesmo ClientConfig. O cluster tenta autenticar-se com cada configuração pela 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 todos os componentes necessários e usa o ClientConfig que criou. O controlador ao nível da frota gere a configuração do cluster. Todas as alterações locais à configuração do cluster são reconciliadas pelo controlador com a configuração ao nível da frota.

Para algumas versões do cluster, a aplicação da configuração ao nível da frota também adiciona, por predefinição, uma configuração authentication adicional aos seus clusters. Isto permite que o cluster obtenha informações do Google Groups 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). Para mais informações sobre a funcionalidade Grupos Google, consulte o artigo Configure a gateway de ligação com os Grupos Google.

Se já não quiser que o controlador ao nível da frota 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 de identidades ao nível da frota.

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 a autenticação com o Azure AD. A utilização desta configuração permite que o cluster obtenha informações de utilizadores e grupos do Azure AD, e permite 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 cluster 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 as Informações de configuração do fornecedor de identidade.

Se precisar de obter menos de 200 grupos por utilizador, recomendamos que use a configuração predefinida com um elemento 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 cluster 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 especificar uma configuração predefinida ao nível da frota para a autenticação. Com esta configuração, todos os novos clusters que registar na frota usam automaticamente a configuração de autenticação que especificar.

Os clusters de membros da frota existentes não são atualizados automaticamente quando especifica uma configuração predefinida ao nível da frota. Opcionalmente, pode aplicar a configuração predefinida a esses clusters. 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.

Depois de definir uma predefinição ao nível da frota, as alterações locais à configuração de autenticação dos clusters individuais são substituídas quando o controlador da frota reconcilia o cluster com a configuração predefinida.

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

  1. Crie um ClientConfig num ficheiro denominado fleet-default.yaml. Para mais informações sobre como criar o ficheiro, consulte os passos da CLI gcloud na secção Configure clusters (Configure clusters).
  2. Para aplicar a configuração predefinida ao nível da frota, execute um dos seguintes comandos:

    • Se a funcionalidade de serviço de identidade ao nível da frota não estiver ativada, ative a funcionalidade e especifique a configuração predefinida ao nível da frota:

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

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

    Os novos clusters que registar na frota usam esta configuração por predefinição. Os clusters de membros da frota existentes não herdam automaticamente a nova configuração predefinida.

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

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

Remova a configuração predefinida ao nível da frota

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

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

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

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

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.