Configure o gateway Connect com os Grupos Google

Este guia destina-se aos administradores da plataforma que precisam de configurar a gateway do Connect para utilização pelas contas de utilizador do respetivo projeto, através dos Grupos Google para autorização. Antes de ler esta página, certifique-se de que conhece os conceitos na nossa vista geral. Para autorizar contas individuais, consulte a configuração predefinida.

Esta configuração permite que os utilizadores iniciem sessão em clusters da frota configurados através da CLI Google Cloud, da gateway Connect e da consola Google Cloud .

Esta funcionalidade usa o Google Groups associado ao Google Workspace ou a qualquer edição do Cloud ID.

Tipos de clusters suportados

Se estiver a usar clusters do GKE no Google Cloud com o Connect Gateway, não precisa de seguir toda esta configuração com o GKE Identity Service para usar os Grupos Google para autorização. Em alternativa, siga as instruções em Configure os Grupos Google para o RBAC, que também permite que os utilizadores iniciem sessão em clusters do GKE a partir da consola Google Cloud através dos Grupos Google para controlo de acesso. Depois de o fazer, siga as instruções abaixo em Conceda funções da IAM aos Grupos Google para permitir que os membros do grupo acedam aos clusters através do gateway do Connect.

Pode configurar o controlo de acesso com os Grupos Google através do gateway Connect para os seguintes tipos de clusters:

Para usar esta funcionalidade com ambientes que não sejam os indicados nesta secção, contacte o apoio técnico ao cliente do Google Cloud ou a equipa da gateway de ligação.

Como funciona

Conforme descrito na vista geral, é frequentemente útil poder conceder aos utilizadores acesso a clusters com base na respetiva associação aos Grupos Google, ou seja, grupos criados no Google Workspace. A autorização baseada na associação a grupos significa que não tem de configurar uma autorização separada para cada conta, o que simplifica a gestão das políticas e facilita a auditoria. Por exemplo, pode partilhar facilmente o acesso ao cluster com uma equipa, eliminando a necessidade de adicionar/remover manualmente utilizadores individuais dos clusters quando estes entram ou saem da equipa. Com alguma configuração adicional através do serviço de identidade do GKE, pode configurar o gateway Connect para obter informações de associação ao grupo Google para cada utilizador que inicia sessão no cluster. Em seguida, pode usar estas informações de grupos nas suas políticas de controlo de acesso.

A imagem seguinte mostra o fluxo típico de um utilizador que se autentica e executa comandos num cluster com este serviço ativado. Para que este fluxo seja bem-sucedido, tem de existir uma política de RBAC no cluster para um grupo que:

  1. Contém o utilizador alice@example.com como membro.

  2. É um grupo aninhado de gke-security-groups@example.com.

Diagrama que mostra o fluxo do Google Groups de gateway

  1. O utilizador alice@example.com inicia sessão com a respetiva identidade Google e, se planear usar o cluster a partir da linha de comandos, obtém o gateway do cluster kubeconfig, conforme descrito em Usar o gateway do Connect.
  2. 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 .
  3. O pedido é recebido pelo serviço Connect, que executa uma verificação de autorização com o IAM.
  4. 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.
  5. O agente Connect encaminha o pedido para o servidor da API Kubernetes.
  6. O servidor da API Kubernetes encaminha o pedido para o serviço de identidade do GKE, que valida o pedido.
  7. O GKE Identity Service devolve as informações do utilizador e do grupo 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 a API Google Identity a partir do seu cluster. Verifique se a sua política de rede exige que o tráfego de saída passe por um proxy.

Configure utilizadores e grupos

Certifique-se de que os grupos que quer usar com esta funcionalidade estão configurados da seguinte forma:

  1. Certifique-se de que existe um grupo no Google Workspace da sua organização com o formato gke-security-groups@YOUR-DOMAIN. Se não tiver um grupo deste tipo, siga as instruções em Crie um grupo na sua organização para criar o grupo através da Consola do administrador do Google Workspace.
  2. Siga as instruções em Adicione um grupo a outro grupo para adicionar os grupos que quer usar para o controlo de acesso como grupos aninhados de gke-security-groups. Não adicione utilizadores individuais como membros de gke-security-groups.

As contas de utilizador que quer usar com esta funcionalidade devem usar o mesmo nome de domínio que o do respetivo grupo.

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.

PROJECT_ID=example_project
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 os grupos Google do gateway de ligação usa o serviço de identidade do GKE para obter informações sobre a 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 Grupos Google. 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 o gateway, o GKE Identity Service não é necessário para o suporte de Grupos Google. Siga as instruções para o tipo de cluster escolhido para configurar o apoio técnico dos Grupos Google:

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 dos Grupos Google 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 do Grupos do Google

Se estiver a usar o GKE no AWS ou o GKE no Azure, o seu cluster é configurado automaticamente para suportar os Grupos Google e pode avançar para Conceder funções do IAM aos Grupos Google.

Se estiver a usar o Google Distributed Cloud no VMware ou bare metal, a forma como configura o GKE Identity Service determina como tem de configurar a funcionalidade Grupos Google.

Se estiver a usar o GKE Identity Service pela primeira vez, pode escolher entre configurar grupos Google ao nível da frota (recomendado) ou a configuração por cluster.

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 Grupos Google é 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 GKE Identity Service para outro fornecedor de identidade por cluster, consulte a secção Por cluster abaixo para obter instruções sobre como atualizar a configuração para a funcionalidade Grupos Google.

Fleet

Pode usar a Google Cloud consola ou a linha de comandos para configurar o acesso aos Grupos Google ao nível da frota.

Se já configurou o serviço de identidade do GKE ao nível da frota com outro fornecedor de identidade (como o Microsoft AD FS ou o Okta), a funcionalidade de grupos Google da gateway Connect já está ativada por predefinição nos clusters configurados, desde que o fornecedor de identidade Google seja acessível sem ter de usar um proxy.

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

  1. Na Google Cloud consola, aceda à página Gestor de funcionalidades.

Aceda ao Gestor de funcionalidades

  1. Clique em Detalhes no painel Serviço de identidade. São apresentados os detalhes do cluster do seu projeto.
  2. Clique em Atualizar serviço de identidade para abrir o painel de configuração.
  3. 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.
  4. Na secção Configurar fornecedores de identidade, pode optar por manter, adicionar, atualizar ou remover um fornecedor de identidade.
  5. 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.
  6. 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.
  7. 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 aos Grupos Google através de um proxy

Se precisar de aceder ao fornecedor de identidade da Google 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: google-authentication-method
      google:
        disable: false
      proxy: PROXY_URL

onde

  • disable (opcional) indica se quer ativar ou desativar a funcionalidade Grupos do Google 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.

Por cluster

Para configurar o cluster para usar o GKE Identity Service com a funcionalidade Grupos Google, 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 USER_CLUSTER_KUBECONFIG -n kube-public edit clientconfig default

onde USER_CLUSTER_KUBECONFIG é o caminho para o ficheiro kubeconfig do seu cluster.

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 Grupos Google. 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 USER_CLUSTER_KUBECONFIG get memberships membership -o yaml

onde

USER_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 de IAM a Grupos Google

Os grupos precisam das seguintes funções adicionais Google Cloud para interagir com clusters ligados através do gateway:

  • roles/gkehub.gatewayAdmin. Esta função permite que os membros do grupo acedam à API do gateway Connect.
    • Se os membros do grupo só precisarem de acesso só de leitura a clusters ligados, pode usar o roles/gkehub.gatewayReader em alternativa.
    • Se os membros do grupo precisarem de acesso de leitura/escrita a clusters ligados, pode usar o roles/gkehub.gatewayEditor.
  • roles/gkehub.viewer. Esta função permite que os membros do grupo vejam as associações de clusters registadas.

Concede estas funções através do comando gcloud projects add-iam-policy-binding, da seguinte forma:

gcloud projects add-iam-policy-binding --member=group:GROUP_NAME@DOMAIN --role=GATEWAY_ROLE PROJECT_ID
gcloud projects add-iam-policy-binding --member=group:GROUP_NAME@DOMAIN --role=roles/gkehub.viewer PROJECT_ID

onde

  • GROUP_NAME é o grupo Google ao qual quer conceder a função
  • DOMAIN é o seu domínio do Google Workspace
  • GROUP_NAME@DOMAIN é um grupo aninhado em gke-security-groups@DOMAIN
  • GATEWAY_ROLE é um de roles/gkehub.gatewayAdmin, roles/gkehub.gatewayReader ou gkehub.gatewayEditor.
  • PROJECT_ID é o seu projeto

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 dos seus grupos especificados. Para cada cluster, tem de adicionar uma política de autorizações RBAC que especifique as autorizações que o grupo tem no cluster.

No exemplo seguinte, vai ver como conceder autorizações cluster-admin aos membros do grupo cluster-admin-team no cluster, guardar o ficheiro de política como /tmp/admin-permission.yaml e aplicá-lo ao cluster associado ao contexto atual. Certifique-se de que também inclui o grupo cluster-admin-team no grupo gke-security-groups.

cat <<EOF > /tmp/admin-permission.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: gateway-cluster-admin-group
subjects:
- kind: Group
  name: cluster-admin-team@example.com
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?