Este guia é destinado a administradores de plataformas que precisam configurar o gateway do Connect em um projeto com usuários que não têm identidades do Google e não pertencem ao Google Workspace. Neste guia, essas identidades são chamadas de "identidades de terceiros". Antes de ler este guia, você precisa se familiarizar com os conceitos na visão geral do gateway do Connect. Para autorizar contas individuais do Google, consulte Como configurar o gateway do Connect. Para receber suporte aos Grupos do Google, consulte Como configurar o gateway do Connect com os Grupos do Google.
Com a configuração neste guia, os usuários podem fazer login nos clusters da frota usando a Google Cloud CLI, o gateway do Connect e o console do Google Cloud .
Tipos de cluster compatíveis
É possível configurar o controle de acesso com identidades de terceiros pelo gateway do Connect para os seguintes tipos de cluster:
- GKE no Google Cloud: todas as versões disponíveis. Para configurar o gateway de conexão, configure os Grupos do Google para RBAC e, em seguida, conceda papéis do IAM aos Grupos do Google.
- Google Distributed Cloud (somente software) no VMware e bare metal: todas as versões disponíveis.
- Google Distributed Cloud conectado: todas as versões disponíveis.
- Clusters anexados ao GKE: versão 1.28.0-gke.2 e mais recentes.
GKE na AWS e GKE no Azure: todas as versões disponíveis.
Para usar esse recurso com ambientes que não estão na lista anterior, entre em contato com o Cloud Customer Care ou a equipe de gateway do Connect.
Como funciona
Conforme descrito na visão geral, talvez os usuários estejam usando provedores de identidade que não são o Google Workspace nem o Cloud Identity. Com a federação de identidade de colaboradores, os usuários podem usar provedores de identidade de terceiros, como o Okta ou o Azure Active Directory, para ter acesso aos clusters pelo gateway do Connect. Ao contrário das Contas do Google, os usuários terceirizados são representados por um principal do Identity and Access Management (IAM) que segue o formato:
principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE
O
WORKFORCE_POOL_IDé o nome do pool da força de trabalho que contém o provedor de identidade de terceiros relevante.O
SUBJECT_VALUEé o mapeamento da identidade de terceiros para um assunto do Google.
Para grupos de terceiros, o principal do IAM segue o formato:
principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_VALUE
O diagrama a seguir mostra um fluxo típico de um usuário de terceiros que faz a autenticação e executa comandos em um cluster com esse serviço ativado. Para que esse fluxo funcione, uma política de controle de acesso baseado em função (RBAC) precisa ser aplicada ao cluster para o usuário ou um grupo.
Para usuários individuais, uma política de RBAC que usa o nome completo do principal do IAM do usuário precisa existir no cluster.
Se você estiver usando a funcionalidade de grupo, uma política de RBAC que use o nome completo do principal do IAM precisa existir no cluster para um grupo que:
Contém o usuário
alice@example.comcomo membro.Está incluído no mapeamento de um provedor de identidade em um pool de força de trabalho que está na organização Google Cloud de Alice.
- O usuário
alice@example.comfaz login na CLI gcloud com a identidade de terceiros usando o login baseado em navegador de terceiros. Para usar o cluster na linha de comando, o usuário recebe o gatewaykubeconfigdo cluster, conforme descrito em Como usar o gateway do Connect. - O usuário envia uma solicitação executando um comando
kubectlou abrindo as páginas Cargas de trabalho ou Navegador de objetos do Google Kubernetes Engine no console do Google Cloud . - A solicitação é recebida pelo gateway do Connect, que processa a autenticação de terceiros usando a federação de identidade de colaboradores.
- O gateway do Connect realiza uma verificação de autorização com o IAM.
- O serviço do Connect encaminha a solicitação ao agente do Connect em execução no cluster. A solicitação é acompanhada com as informações de credencial do usuário para uso na autenticação e autorização no cluster.
- O agente do Connect encaminha a solicitação para o servidor da API Kubernetes.
- O servidor da API Kubernetes encaminha a solicitação para o componente de serviço de identidade no cluster, que valida a solicitação.
- O componente do serviço de identidade retorna as informações de grupo e usuário de terceiros para o servidor da API Kubernetes. O servidor da API Kubernetes pode usar essas informações para autorizar a solicitação com base nas políticas de RBAC configuradas do cluster.
Antes de começar
- Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Verifique se você tem as permissões necessárias para concluir este guia.
Ative as APIs Connect Gateway, GKE Connect, GKE Hub, Anthos Identity Service e Cloud Resource Manager:
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.gcloud services enable connectgateway.googleapis.com
gkeconnect.googleapis.com gkehub.googleapis.com anthosidentityservice.googleapis.com cloudresourcemanager.googleapis.com -
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init -
Verifique se você tem as permissões necessárias para concluir este guia.
Ative as APIs Connect Gateway, GKE Connect, GKE Hub, Anthos Identity Service e Cloud Resource Manager:
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.gcloud services enable connectgateway.googleapis.com
gkeconnect.googleapis.com gkehub.googleapis.com anthosidentityservice.googleapis.com cloudresourcemanager.googleapis.com - Para clusters fora do Google Cloud, os componentes de autenticação no seu cluster precisam chamar a API Cloud Identity. Verifique se há políticas de rede que exigem que o tráfego de saída do cluster passe por um proxy.
Funções exigidas
Para receber as permissões necessárias
para configurar o gateway de conexão e seus clusters,
peça ao administrador para conceder a você o
papel do IAM de Editor (roles/editor) no projeto.
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.
Configurar mapeamentos de atributos de identidade de terceiros usando a federação de identidade de colaboradores
Verifique se há um pool de força de trabalho e um provedor de identidade configurados para sua organização do Google Cloud seguindo as instruções correspondentes ao provedor de identidade:
.Configurar o suporte para grupos
O gateway do Connect usa componentes de autenticação no seu cluster para recuperar informações de associação a grupos. Para ativar os componentes necessários, consulte um dos seguintes documentos, dependendo do tipo de cluster:
- GKE no Google Cloud: configure os Grupos do Google para RBAC, e pule para a seção Conceder papéis do IAM a grupos.
- Clusters anexados do GKE:
Google Distributed Cloud: atualize o recurso personalizado ClientConfig no cluster para ativar o suporte a grupos. O Distributed Cloud cria automaticamente um ClientConfig chamado
defaultno namespacekube-publicem todos os clusters. Para verificar se esse recurso personalizado existe, execute o seguinte comando:kubectl --kubeconfig CLUSTER_KUBECONFIG get ClientConfig default -n kube-publicSubstitua
CLUSTER_KUBECONFIGpelo caminho para o kubeconfig do cluster.
Se o cluster ou a frota já estiver configurado para a compatibilidade com Grupos do Google, não haverá outras etapas. Você poderá pular para Conceder papéis do IAM a usuários e grupos de terceiros.
As seções a seguir mostram como atualizar o recurso personalizado ClientConfig para ativar a compatibilidade com grupos. Estas seções se aplicam apenas aos clusters do Google Distributed Cloud. Para outros tipos de clusters, como GKE em Google Cloud, GKE na AWS e GKE no Azure, pule para a seção Conceder papéis do IAM a grupos.
No Distributed Cloud, é possível configurar o suporte a grupos para clusters individuais ou para uma frota. O tipo de cluster usado determina como você configura o suporte a grupos, da seguinte maneira:
- Distributed Cloud conectado: somente clusters individuais. A configuração no nível da frota não é compatível.
- Google Distributed Cloud (somente software) no VMware e em bare metal: clusters ou frotas individuais.
Configurar o suporte a grupos usando a API Fleet do GKE
Para o Google Distributed Cloud (somente software) no VMware e bare metal, é possível configurar o suporte a grupos no nível da frota. Se você já tiver configurado a autenticação no nível da frota, como para um provedor de identidade diferente, a autenticação de grupo já estará ativada. No entanto, se a política de rede exigir que o tráfego de saída passe por um proxy, atualize a configuração atual com informações sobre esse proxy.
Para configurar o suporte a grupos no nível da frota, selecione uma das seguintes opções:
Console
No console do Google Cloud , acesse a página Serviço de Identidade do GKE.
Clique em Ativar o serviço de identidade.
Selecione os clusters do Google Distributed Cloud (somente software) no VMware e bare metal que você quer configurar.
Clique em Atualizar configuração. O painel Editar configuração de clusters do serviço de identidade é aberto.
Na seção Configurar provedores de identidade, você pode escolher reter, adicionar, atualizar ou remover um provedor de identidade.
Clique em Continuar para ir para a próxima etapa de configuração. Se você tiver selecionado pelo menos um cluster qualificado para essa configuração, a seção Autenticação do Google será exibida.
Selecione Ativar para habilitar a autenticação do Google para os clusters selecionados. Se você precisar acessar o provedor de identidade do Google usando um proxy, digite os detalhes do Proxy.
Clique em Atualizar configuração. Isso aplica a configuração de identidade nos clusters selecionados.
gcloud
- Ative o recurso de serviço de identidade no nível da frota e configure os clusters, conforme descrito em Configurar o gerenciamento de autenticação no nível da frota.
No arquivo
auth-config.yamlque contém sua especificação ClientConfig, adicione o seguinte campo:spec: authentication: - name: google-authentication-method google: disable: falseO valor de
falseno campogoogle.disableativa o suporte a grupos. Para desativar o suporte a grupos, modifique esse valor paratrue.Opcional: se você precisar acessar o provedor de identidade do Google usando um proxy, adicione o campo
proxyà configuração anterior:spec: authentication: - name: google-authentication-method google: disable: false proxy: PROXY_URLSubstitua
PROXY_URLpelo endereço do servidor proxy para se conectar à identidade do Google. Por exemplo:http://user:password@10.10.10.10:8888Aplique a configuração a um cluster na sua frota:
gcloud container fleet identity-service apply \ --membership=CLUSTER_NAME \ --config=/path/to/auth-config.yaml
Substitua
CLUSTER_NAMEpelo nome de assinatura exclusivo do cluster na frota.
Depois de configurar o suporte a grupos no nível da frota, o controlador da frota gerencia a configuração. A configuração no nível da frota substitui todas as mudanças locais feitas na configuração de um cluster específico.
Configurar o suporte a grupos para clusters individuais
Para todos os clusters do Distributed Cloud, incluindo o Distributed Cloud Connected, ative o suporte a grupos atualizando o ClientConfig default em cada cluster:
Receba os detalhes da associação do cluster:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get memberships membership -o yamlSubstitua
USER_CLUSTER_KUBECONFIGpelo caminho do arquivo kubeconfig do cluster. Se houver vários contextos no kubeconfig o contexto atual será usado. Talvez seja necessário redefinir o contexto atual para o cluster correto antes de executar o comando.Na resposta, consulte o campo
spec.owner.idpara recuperar os detalhes da associação do cluster. O identificador de assinatura tem o formato//gkehub.googleapis.com/projects/PROJECT_NUMBER/locations/global/memberships/MEMBERSHIP.O resultado será o seguinte:
id: //gkehub.googleapis.com/projects/123456789/locations/global/memberships/xy-ab12cd34efAbra o
defaultClientConfig no cluster para edição:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-public edit clientconfig defaultPara ativar o suporte a grupos, adicione o campo
googleao campospec.authentication:spec: internalServer: https://kubernetes.default.svc authentication: - google: audiences: - "CLUSTER_IDENTIFIER" name: google-authentication-methodSubstitua
CLUSTER_IDENTIFIERpelos detalhes da assinatura do cluster.Verifique se o campo
internalServertem o valorhttps://kubernetes.default.svc.Opcional: se você precisar acessar o provedor de identidade do Google usando um proxy, adicione o campo
proxyà configuração anterior:spec: internalServer: https://kubernetes.default.svc authentication: - google: audiences: - "CLUSTER_IDENTIFIER" name: google-authentication-method proxy: PROXY_URLSubstitua
PROXY_URLpelo endereço do servidor proxy para se conectar à identidade do Google. Por exemplo:http://user:password@10.10.10.10:8888
Conceder papéis do IAM a usuários e grupos de terceiros
As identidades de terceiros precisam dos seguintes papéis adicionais do Google Cloud para interagir com clusters conectados pelo gateway:
roles/gkehub.gatewayAdmin: esse papel permite que os usuários acessem a API do gateway do Connect.- Se os usuários só precisarem de acesso somente leitura aos clusters conectados, use
roles/gkehub.gatewayReader. - Se os usuários precisarem de acesso de leitura/gravação aos clusters conectados, poderá usar
roles/gkehub.gatewayEditor.
- Se os usuários só precisarem de acesso somente leitura aos clusters conectados, use
roles/gkehub.viewer: esse papel permite que os usuários acessem as assinaturas registradas a clusters.
Confira a seguir como adicionar os papéis necessários a identidades individuais e grupos mapeados:
Identidades únicas
Para conceder os papéis necessários a uma única identidade
para o projeto
PROJECT_ID, execute o seguinte comando:
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=GATEWAY_ROLE \
--member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/gkehub.viewer \
--member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
onde
PROJECT_IDé o ID do projeto.GATEWAY_ROLEé um dos camposroles/gkehub.gatewayAdmin,roles/gkehub.gatewayReaderougkehub.gatewayEditor.WORKFORCE_POOL_IDé o ID do pool de identidade da força de trabalho.SUBJECT_VALUEé a identidade do usuário.
Grupos
Para conceder os papéis necessários a todas as identidades em
um grupo específico para o projeto PROJECT_ID,
execute o seguinte comando:
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=GATEWAY_ROLE \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
gcloud projects add-iam-policy-binding PROJECT_ID \
--role=roles/gkehub.viewer \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
onde
PROJECT_IDé o ID do projeto.GATEWAY_ROLEé um dos camposroles/gkehub.gatewayAdmin,roles/gkehub.gatewayReaderougkehub.gatewayEditor.WORKFORCE_POOL_ID: é o ID do pool da força de trabalho.GROUP_ID: é um grupo na declaraçãogoogle.groupsmapeada.
Consulte a configuração do seu provedor de identidade listada em Configurar mapeamentos de terceiros com a identidade da força de trabalho para mais personalizações, como especificar atributos do departamento, ao aplicar a política de RBAC.
Saiba mais sobre como conceder permissões e papéis do IAM em Como conceder, alterar e revogar acesso a recursos.
Configurar políticas de controle de acesso baseado em papéis (RBAC, na sigla em inglês)
Por fim, o servidor da API Kubernetes de cada cluster precisa autorizar comandos kubectl que passam pelo gateway do usuário e dos grupos de terceiros especificados. Para cada cluster, você precisa adicionar uma política de permissões do RBAC que especifica quais permissões o assunto tem no cluster.
Os assuntos nas políticas do RBAC precisam usar o mesmo formato das vinculações do IAM, com usuários de terceiros começando com principal://iam.googleapis.com/ e grupos de terceiros começando com principalSet://iam.googleapis.com/. Se o cluster não tiver a autenticação de identidades externas de terceiros configurada, você precisará de políticas de representação, além de papéis/papéis de cluster para um usuário de terceiros. Nesse caso, siga estas etapas de configuração do RBAC, adicionando o principal de terceiros que começa com principal://iam.googleapis.com/ como usuário.
No exemplo a seguir, mostramos como conceder permissões cluster-admin aos membros de um grupo de terceiros em um cluster em que a autenticação de identidades externas de terceiros está configurada. Em seguida, salve o arquivo de política como /tmp/admin-permission.yaml e aplique-o ao cluster associado ao contexto atual.
cat <<EOF > /tmp/admin-permission.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: gateway-cluster-admin-group
subjects:
- kind: Group
name: "principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP"
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
EOF
# Apply permission policy to the cluster.
kubectl apply --kubeconfig=KUBECONFIG_PATH -f /tmp/admin-permission.yaml
Saiba mais sobre como especificar permissões de RBAC em Como usar a autorização RBAC.
A seguir
- Saiba como usar o gateway do Connect para se conectar a clusters a partir da linha de comando.
- Veja um exemplo de como usar o gateway do Connect como parte da sua automação de DevOps no tutorial Como integrar com o Cloud Build.