Este guia destina-se aos administradores da plataforma que precisam de configurar o gateway Connect num projeto que contenha utilizadores que não tenham identidades Google e não pertençam ao Google Workspace. Neste guia, estas identidades são denominadas "identidades de terceiros". Antes de ler este guia, deve conhecer os conceitos descritos na vista geral do gateway Connect. Para autorizar contas Google individuais, consulte o artigo Configurar o gateway Connect. Para obter apoio técnico do Google Groups, consulte o artigo Configurar o gateway Connect com o Google Groups.
A configuração neste guia permite que os utilizadores iniciem sessão em clusters da frota através da CLI Google Cloud, da gateway Connect e da consola Google Cloud .
Tipos de clusters suportados
Pode configurar o controlo de acesso com identidades de terceiros através do gateway Connect para os seguintes tipos de clusters registados:
- Clusters do GKE (todas as versões suportadas).
- Google Distributed Cloud no VMware e bare metal (versão 1.13 e posterior).
- GKE no AWS e GKE no Azure (versão 1.25 e posteriores).
- Clusters anexados (versão 1.16 e posteriores).
Se precisar de atualizar clusters no local para usar esta funcionalidade, consulte os artigos Atualize um cluster para o VMWare e Atualize clusters em hardware simples.
Se tiver um exemplo de utilização para ambientes de clusters do GKE que não os indicados acima, contacte o apoio técnico ao cliente do Google Cloud ou a equipa do gateway Connect.
Como funciona
Conforme descrito na vista geral, os utilizadores podem estar a usar fornecedores de identidade que não são o Google Workspace nem o Cloud ID. Ao usar a Workforce Identity Federation, os utilizadores podem usar os respetivos fornecedores de identidade externos, como o Okta ou o Azure Active Directory, para acederem aos respetivos clusters através do Connect Gateway. Ao contrário das Contas Google, os utilizadores externos são representados por um principal da gestão de identidade e acesso (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 Workforce Pool que contém o fornecedor de identidade de terceiros relevante.O
SUBJECT_VALUE
é o mapeamento da identidade de terceiros para um assunto da 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 seguinte mostra um fluxo típico de um utilizador de terceiros que se autentica e executa comandos num cluster com este serviço ativado. Para que este fluxo seja bem-sucedido, tem de ser aplicada uma política de controlo de acesso baseado em funções (RBAC) no cluster para o utilizador ou um grupo.
Para utilizadores individuais, tem de existir no cluster uma política de RBAC que use o nome principal de IAM completo do utilizador.
Se usar a funcionalidade de grupo, tem de existir uma política de CABF que use o nome principal completo do IAM no cluster para um grupo que:
Contém o utilizador
alice@example.com
como membro.Está incluído num mapeamento para um fornecedor de identidade num grupo do Workforce que se encontra na organização do Google Cloud de Alice.
- O utilizador
alice@example.com
inicia sessão no gcloud com a respetiva identidade de terceiros, através do início de sessão de terceiros baseado no navegador. Para usar o cluster a partir da linha de comandos, o utilizador obtém o gateway do clusterkubeconfig
, conforme descrito em Usar o gateway do Connect. - O utilizador envia um pedido executando um comando
kubectl
ou abrindo as páginas Workloads ou Object Browser do Google Kubernetes Engine na consola Google Cloud . - O pedido é recebido pela gateway do Connect, que processa a autenticação de terceiros através da federação de identidades da força de trabalho.
- O gateway Connect executa uma verificação de autorização com o IAM.
- O serviço Connect encaminha o pedido para o agente Connect em execução no cluster. O pedido é acompanhado das informações de credenciais do utilizador para utilização na autenticação e autorização no cluster.
- O agente Connect encaminha o pedido para o servidor da API Kubernetes.
- O servidor da API Kubernetes encaminha o pedido para o serviço de identidade do GKE, que valida o pedido.
- O GKE Identity Service devolve as informações de utilizadores e grupos de terceiros ao servidor da API Kubernetes. O servidor da API Kubernetes pode, então, usar estas informações para autorizar o pedido com base nas políticas RBAC configuradas do cluster.
Antes de começar
Certifique-se de que tem as seguintes ferramentas de linha de comandos instaladas:
- A versão mais recente da CLI do Google Cloud, a ferramenta de linha de comandos para interagir com o Google Cloud.
- A ferramenta de linha de comandos do Kubernetes,
kubectl
, para interagir com os seus clusters.
Se estiver a usar o Cloud Shell como ambiente de shell para interagir com o Google Cloud, estas ferramentas são instaladas automaticamente.
Certifique-se de que inicializou a CLI gcloud para utilização com o seu projeto.
Este guia pressupõe que tem
roles/owner
no seu projeto. Se não for proprietário do projeto, pode precisar de autorizações adicionais para executar alguns dos passos de configuração.Para clusters fora Google Cloud, o GKE Identity Service tem de chamar as APIs Google a partir do seu cluster para concluir a autenticação. Verifique se a sua política de rede exige que o tráfego de saída passe por um proxy.
Configure mapeamentos de atributos de identidade de terceiros através da identidade da força de trabalho
Certifique-se de que existe um Workforce Pool e um fornecedor de identidade configurados para a sua Google Cloud organização seguindo as instruções correspondentes ao seu fornecedor de identidade:
Ativar APIs
Para adicionar a gateway ao seu projeto, ative a API Connect gateway e as respetivas APIs de dependência necessárias. Se os seus utilizadores só quiserem autenticar-se em clusters através da Google Cloud consola, não precisa de ativar a connectgateway.googleapis.com
, mas tem de ativar as APIs restantes.
gcloud services enable --project=PROJECT_ID \
connectgateway.googleapis.com \
gkeconnect.googleapis.com \
gkehub.googleapis.com \
cloudresourcemanager.googleapis.com
Configure o serviço de identidade do GKE
A funcionalidade de compatibilidade com identidades de terceiros do gateway usa o serviço de identidade do GKE para obter informações de associação a grupos da Google. Pode saber mais sobre o GKE Identity Service no artigo Apresentamos o GKE Identity Service.
Se estiver a usar clusters do GKE com o gateway, não precisa de configurar o serviço de identidade do GKE para usar o suporte de identidade de terceiros. Em alternativa, siga as instruções em Configure os Grupos Google para o CABF e continue para Conceda funções do IAM para conceder acesso a clusters através do gateway.
Se estiver a usar clusters anexados do GKE com a gateway, o GKE Identity Service não é necessário para o suporte de identidades de terceiros. Siga as instruções para o tipo de cluster escolhido para configurar o suporte de identidade de terceiros:
- Estabeleça ligação ao cluster anexado do EKS
- Estabeleça ligação ao cluster anexado do AKS
- Estabeleça ligação aos seus outros tipos de clusters
Certifique-se de que o serviço de identidade do GKE está instalado
O GKE Identity Service está instalado por predefinição em clusters do GKE a partir da versão 1.7 (embora o suporte de identidade de terceiros exija a versão 1.13 ou superior). Pode confirmar se está instalado corretamente no cluster executando o seguinte comando:
kubectl --kubeconfig CLUSTER_KUBECONFIG get all -n anthos-identity-service
Substitua CLUSTER_KUBECONFIG
pelo caminho para o kubeconfig do cluster.
Configure o apoio técnico de identidades de terceiros para grupos
Se o seu cluster ou frota já estiver configurado para suporte do Google Groups, não existem passos adicionais e pode avançar para Conceda funções do IAM a utilizadores e grupos externos.
Se estiver a usar o Google Distributed Cloud no VMware ou no bare metal, a forma como configura o GKE Identity Service determina como tem de configurar a funcionalidade de grupos de terceiros.
Se estiver a usar o GKE Identity Service pela primeira vez, pode optar por configurar o suporte de grupos de terceiros através das APIs Fleet (recomendado) ou através do kubectl.
Se não for a primeira vez que usa o GKE Identity Service, tenha em atenção uma das seguintes situações:
- Se já configurou o serviço de identidade do GKE para outro fornecedor de identidade ao nível da frota, a funcionalidade de grupos de terceiros é ativada por predefinição. Consulte a secção Frota abaixo para ver mais detalhes e qualquer configuração adicional de que possa precisar.
Se já configurou o serviço de identidade do GKE para outro fornecedor de identidade por cluster, consulte a secção Kubectl abaixo para ver instruções sobre como atualizar a configuração para a funcionalidade de grupos de terceiros.
Fleet
Pode usar a Google Cloud consola ou a linha de comandos para configurar o acesso a grupos de terceiros através das APIs Fleet Feature.
Consola
Se ainda não configurou o GKE Identity Service para uma frota, siga as instruções em Configure clusters for GKE Identity Service.
Selecione clusters e atualize a configuração
Na Google Cloud consola, aceda à página Gestor de funcionalidades.
Clique em Detalhes no painel Serviço de identidade. São apresentados os detalhes do cluster do seu projeto.
Clique em Atualizar serviço de identidade para abrir o painel de configuração.
Selecione 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.
Na secção Configurar fornecedores de identidade, pode optar por manter, adicionar, atualizar ou remover um fornecedor de identidade.
Clique em Continuar para avançar para o passo de configuração seguinte. Se tiver selecionado, pelo menos, um cluster elegível para esta configuração, é apresentada a secção Autenticação Google.
Selecione Ativar para ativar a autenticação Google para os clusters selecionados. Se precisar de aceder ao fornecedor de identidade da Google através de um proxy, introduza os detalhes do proxy.
Clique em Atualizar configuração. Isto aplica a configuração de identidade nos clusters selecionados.
gcloud
Se ainda não tiver configurado o GKE Identity Service para uma frota,
siga as instruções em Configure clusters for GKE Identity Service.
Especifique apenas a seguinte configuração no ficheiro auth-config.yaml
:
spec:
authentication:
- name: google-authentication-method
google:
disable: false
Configurar o acesso de grupos de terceiros através de um proxy
Se precisar de aceder ao fornecedor de identidade através de um proxy, use um campo proxy
no seu ficheiro auth-config.yaml
. Pode ter de definir esta opção se, por exemplo, o seu cluster estiver numa rede privada e precisar de se ligar a um fornecedor de identidade público.
Tem de adicionar esta configuração, mesmo que já tenha configurado o GKE Identity Service para outro fornecedor.
Para configurar o proxy
, veja como pode atualizar a secção authentication
do ficheiro de configuração existente auth-config.yaml
.
spec:
authentication:
- name: authentication-method
google:
disable: false
proxy: PROXY_URL
onde
disable
(opcional) indica se quer ativar ou desativar a funcionalidade de grupos de terceiros para clusters. Este valor está predefinido como false. Se quiser recusar esta funcionalidade, pode defini-la como verdadeira.PROXY_URL
(opcional) é o endereço do servidor proxy para estabelecer ligação à identidade Google. Por exemplo:http://user:password@10.10.10.10:8888
Aplique a configuração
Para aplicar a configuração a um cluster, execute o seguinte comando:
gcloud container fleet identity-service apply \ --membership=CLUSTER_NAME \ --config=/path/to/auth-config.yaml
onde
CLUSTER_NAME
é o nome de subscrição exclusivo do cluster na frota.
Depois de aplicada, esta configuração é gerida pelo controlador do GKE Identity Service. Todas as alterações locais feitas à configuração do cliente do GKE Identity Service são reconciliadas pelo controlador com a configuração especificada nesta configuração.
Kubectl
Para configurar o cluster para usar o GKE Identity Service com a funcionalidade de grupos de terceiros,
tem de atualizar o GKE Identity Service do cluster ClientConfig
.
Este é um tipo de recurso personalizado (CRD) do Kubernetes usado para a configuração do cluster.
Cada cluster tem um recurso ClientConfig
denominado default
no espaço de nomes kube-public
que atualiza com os detalhes da configuração.
Para editar a configuração, use o seguinte comando.
kubectl --kubeconfig CLUSTER_KUBECONFIG -n kube-public edit clientconfig default
Se existirem vários contextos no kubeconfig, é usado o contexto atual. Pode ter de repor o contexto atual para o cluster correto antes de executar o comando.
Segue-se um exemplo de como pode atualizar o ClientConfig
com um novo método de autenticação com uma configuração do tipo google
para ativar a funcionalidade de grupos de terceiros.
Se o campo internalServer
estiver vazio, certifique-se de que está definido como https://kubernetes.default.svc
, conforme mostrado abaixo.
spec:
authentication:
- google:
audiences:
- "CLUSTER_IDENTIFIER"
name: google-authentication-method
proxy: PROXY_URL
internalServer: https://kubernetes.default.svc
onde
CLUSTER_IDENTIFIER
(obrigatório) indica os detalhes da subscrição do seu cluster.
Pode aceder aos detalhes da associação do cluster através do comando:
kubectl --kubeconfig CLUSTER_KUBECONFIG get memberships membership -o yaml
onde
CLUSTER_KUBECONFIG
é o caminho para o ficheiro kubeconfig do cluster.
Na resposta, consulte o campo spec.owner.id
para obter os detalhes de associação do cluster.
Segue-se um exemplo de resposta que mostra os detalhes de associação de um cluster:
id: //gkehub.googleapis.com/projects/123456789/locations/global/memberships/xy-ab12cd34ef
que corresponde ao seguinte formato:
//gkehub.googleapis.com/projects/PROJECT_NUMBER/locations/global/memberships/MEMBERSHIP
Conceda funções IAM a utilizadores e grupos de terceiros
As identidades de terceiros precisam das seguintes Google Cloud funções adicionais para interagir com clusters ligados através do gateway:
roles/gkehub.gatewayAdmin
. Esta função permite que os utilizadores acedam à API do gateway Connect.- Se os utilizadores apenas precisarem de acesso só de leitura a clusters ligados, pode usar o
roles/gkehub.gatewayReader
. - Se os utilizadores precisarem de acesso de leitura/escrita a clusters associados, podem usar o
roles/gkehub.gatewayEditor
.
- Se os utilizadores apenas precisarem de acesso só de leitura a clusters ligados, pode usar o
roles/gkehub.viewer
. Esta função permite que os utilizadores vejam as associações de clusters registadas.
As instruções seguintes mostram como adicionar as funções necessárias a identidades individuais e grupos mapeados:
Identidades únicas
Para conceder as funções necessárias 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 deroles/gkehub.gatewayAdmin
,roles/gkehub.gatewayReader
ougkehub.gatewayEditor
.WORKFORCE_POOL_ID
: é o ID do Workload Identity Pool.SUBJECT_VALUE
: é a identidade do utilizador.
Grupos
Para conceder as funções necessárias a todas as identidades num 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 deroles/gkehub.gatewayAdmin
,roles/gkehub.gatewayReader
ougkehub.gatewayEditor
.WORKFORCE_POOL_ID
: é o ID do Workforce Pool.GROUP_ID
: é um grupo na reivindicaçãogoogle.groups
mapeada.
Consulte a configuração do seu Fornecedor de identidade listado em Configure mapeamentos de terceiros com a identidade da força de trabalho para mais personalizações, como especificar atributos de departamento, ao aplicar a política de RBAC.
Pode saber mais sobre a concessão de autorizações e funções do IAM em Conceder, alterar e revogar o acesso a recursos.
Configure políticas de controlo de acesso baseado em funções (CABF)
Por último, o servidor da API Kubernetes de cada cluster tem de poder autorizar comandos kubectl
que chegam através do gateway do utilizador e dos grupos de terceiros especificados. Para cada cluster, tem de adicionar uma política de autorizações RBAC que especifique as autorizações que o sujeito tem no cluster.
Os sujeitos nas políticas de RBAC têm de usar o mesmo formato que as associações de IAM, com utilizadores de terceiros a começar por principal://iam.googleapis.com/
e grupos de terceiros a começar por principalSet://iam.googleapis.com/
. Se o serviço de identidade do GKE não estiver configurado para o cluster, precisa de políticas de roubo de identidade, além de funções/funções de cluster para um utilizador de terceiros. Nesse caso, siga estes passos de configuração do RBAC, adicionando o principal de terceiros que começa por principal://iam.googleapis.com/
como utilizador.
O exemplo seguinte mostra como conceder cluster-admin
autorizações aos membros de um grupo de terceiros num cluster onde o serviço de identidade do GKE está configurado. Em seguida, pode guardar o ficheiro de política como /tmp/admin-permission.yaml e aplicá-lo 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
Pode saber mais sobre a especificação de autorizações RBAC em Usar a autorização RBAC.
O que se segue?
- Saiba como usar a gateway Connect para estabelecer ligação a clusters a partir da linha de comandos.
- Veja um exemplo de como usar o gateway Connect como parte da sua automatização de DevOps no nosso tutorial Integração com o Cloud Build.