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
Instale e configure a CLI Google Cloud:
-
Install the Google Cloud CLI.
-
Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Depois de inicializar a CLI gcloud, atualize-a e instale os componentes necessários:
gcloud components update gcloud components install kubectl
- Na CLI gcloud, selecione o projeto anfitrião da frota:
Substituagcloud config set project FLEET_HOST_PROJECT_ID
FLEET_HOST_PROJECT_IDpelo ID do projeto do seu projeto anfitrião da frota.
-
Ative as APIs necessárias:
Na Google Cloud consola, aceda à página do seletor de projetos:
Selecione o projeto de anfitrião 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.
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
Na Google Cloud consola, aceda à página GKE Identity Service.
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:
- Configure fornecedores OIDC para autenticação em clusters
- Configure fornecedores SAML para autenticar em clusters
- Configure fornecedores LDAP para autenticação em clusters
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
Selecione os clusters a configurar:
Na Google Cloud consola, aceda à página GKE Identity Service.
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.
Clique em Atualizar configuração. É aberto o painel Editar configuração dos clusters do serviço de identidade.
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.
Na secção Novo fornecedor de identidade, defina os detalhes do fornecedor:
OIDC
- Selecione Novo Open ID Connect para criar uma nova configuração do OIDC.
- 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.
- Especifique o ID de cliente do fornecedor de identidade no campo ID de cliente.
- 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.
- Especifique o URI onde os pedidos de autorização são feitos ao seu fornecedor de identidade no campo URL do emissor.
- Clique em Seguinte para definir os atributos OIDC.
Azure AD
- Selecione Novo Azure Active Directory para criar uma nova configuração do Azure AD.
- 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.
- Especifique o ID de cliente do fornecedor de identidade no campo ID de cliente.
- 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.
- Especifique o inquilino que é a conta do Azure AD a ser autenticada no Inquilino.
- Clique em Seguinte para definir os atributos do Azure AD.
LDAP
- Selecione LDAP para criar uma nova configuração LDAP.
- 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.
- Clicar em Seguinte.
- 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.
- Clique em Seguinte para configurar o servidor.
- Especifique o nome distinto, o filtro, o atributo de início de sessão e o atributo identificador do utilizador.
- Clique em Seguinte para definir os detalhes do utilizador.
- Se optar por usar grupos, especifique o nome distinto, o filtro e o atributo do identificador do grupo.
- Clique em Seguinte para definir os detalhes do grupo.
- Especifique o nome de utilizador e a palavra-passe da conta de serviço.
- Clique em Concluído para definir o nome da conta de serviço.
Clicar em Seguinte. É aberta a secção Definir atributos.
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
kubectlURI de redirecionamento: o URL de redirecionamento e a porta usados pela CLI gcloud e especificados pelo administrador da sua plataforma no registo, normalmente no formatohttp://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
kubectlURI de redirecionamento: o URL de redirecionamento e a porta usados pela CLI gcloud e especificados pelo administrador da sua plataforma no registo, normalmente no formatohttp://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.
Clique em Concluído.
Opcional: para adicionar mais fornecedores à configuração, clique em Adicionar um fornecedor de identidade e repita os passos anteriores.
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:
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
oidce uma configuraçãoazuread. Para mais informações sobre quando usaroidcouazuread, 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_CLAIMPara 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: PASSWORDPara 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.
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 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:
- 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). 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.
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
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.
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.