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
Instale e configure a Google Cloud CLI:
-
Install the Google Cloud CLI.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Para inicializar a gcloud CLI, execute o seguinte comando:
gcloud init -
Depois que a gcloud CLI é inicializada, ela precisa ser atualizada e os componentes necessários instalados:
gcloud components update gcloud components install kubectl
- Na CLI gcloud, selecione o projeto host da frota:
Substituagcloud config set project FLEET_HOST_PROJECT_ID
FLEET_HOST_PROJECT_IDpelo ID do projeto host da frota.
-
Ative as APIs necessárias:
No console do Google Cloud , acesse a página do seletor de projetos:
Selecione o projeto host da frota.
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 theserviceusage.services.enablepermission. Learn how to grant roles.
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
No console do Google Cloud , acesse a página GKE Identity Service.
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:
- Configurar provedores OIDC para autenticação em clusters
- Configurar provedores SAML para autenticar em clusters
- Configurar provedores LDAP para autenticar em clusters
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
Selecione os clusters que você quer configurar:
No console do Google Cloud , acesse a página GKE Identity Service.
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.
Clique em Atualizar configuração. O painel Editar configuração de clusters do serviço de identidade é aberto.
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.
Na seção Novo provedor de identidade, defina os detalhes do provedor:
OIDC
- Selecione New Open ID Connect para criar uma configuração do OIDC.
- 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.
- Especifique o ID do cliente do provedor de identidade no campo ID do cliente.
- 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.
- Especifique o URI em que as solicitações de autorização são feitas para seu provedor de identidade no campo URL do emissor.
- Clique em Próxima para definir os atributos do OIDC.
Azure AD
- Selecione Novo Azure Active Directory para criar uma configuração do Azure AD.
- 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.
- Especifique o ID do cliente do provedor de identidade no campo ID do cliente.
- 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.
- Especifique o locatário que será a conta do Azure AD a ser autenticada no Locatário.
- Clique em Próxima para definir os atributos do Azure AD.
LDAP
- Selecione LDAP para criar uma configuração LDAP.
- 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.
- Clique em Próxima.
- Especifique o nome do host (obrigatório), o tipo de conexão LDAP e o certificado de CA codificado em base64 do servidor LDAP.
- Clique em Próxima para configurar o servidor.
- Especifique o nome distinto, o filtro, os atributos de login e o identificador do usuário.
- Clique em Avançar para definir os detalhes do usuário.
- Se você optar por usar grupos, especifique o nome distinto, o filtro e o atributo do identificador do grupo.
- Clique em Próxima para definir os detalhes do grupo.
- Especifique o nome de usuário e a senha da conta de serviço.
- Clique em Concluído para definir o nome da conta de serviço.
Clique em Próxima. A seção Definir atributos é aberta.
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 formatohttp://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 formatohttp://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.
- URI de redirecionamento
Clique em Concluído.
Opcional: para adicionar mais provedores à configuração, clique em Adicionar um provedor de identidade e repita as etapas anteriores.
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:
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
oidce uma configuraçãoazuread. Para mais informações sobre quando usaroidcouazuread, 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_CLAIMPara 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: PASSWORDPara 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.
Aplique o ClientConfig a um cluster:
gcloud container fleet identity-service apply \ --membership=CLUSTER_NAME \ --config=auth-config.yamlSubstitua
CLUSTER_NAMEpelo 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:
- 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. 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.
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
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.
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.