Autentique-se no GKE no AWS com identidades externas

A federação de identidade da força de trabalho concede às identidades não pertencentes à Google acesso aos Google Cloud serviços. No contexto do GKE no AWS, isto significa que pode usar identidades externas pré-existentes para criar ou aceder a um cluster do GKE sem depender das credenciais Google.

Seguem-se as vantagens da utilização da federação de identidade da força de trabalho:

  • Elimina a necessidade de ter contas duplicadas em diferentes plataformas ou fornecedores.
  • Define as autorizações apenas uma vez, evitando a necessidade de configurações em várias plataformas.
  • Simplifica o acesso dos utilizadores, uma vez que são necessários menos inícios de sessão e palavras-passe.

Antes de começar

Antes de poder permitir que utilizadores ou grupos externos acedam a clusters do GKE, tem de efetuar os seguintes passos:

  1. Para que os utilizadores ou os grupos externos possam usar a API GKE on AWS, configure a federação de identidades da força de trabalho:

  2. Atribua a função gkemulticloud.viewer aos seus utilizadores ou grupos externos para que possam aceder aos clusters. Atribua a função container.clusterViewer para ver clusters na consola Google Cloud .

    Tenha em atenção que as funções são coleções de autorizações. Quando atribui uma função a uma entidade (utilizador, grupo ou conta de serviço), está a conceder a essa entidade todas as autorizações que a função contém.

    Utilizadores

    Para utilizadores individuais, tem de atribuir a função de gkemulticloud.viewer:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.viewer" \
      --member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • WORKFORCE_POOL_ID: o ID que identifica exclusivamente o seu conjunto de identidades da força de trabalho no Google Cloud. Ao formatar o ID, certifique-se de que segue as diretrizes recomendadas fornecidas na documentação do IAM em Parâmetros de consulta.
    • SUBJECT_VALUE: o ID que identifica de forma exclusiva um utilizador externo. Por exemplo, o ID pode ser um endereço de email, como alex@cymbalgroup.com.

    Grupos

    Para grupos, tem de atribuir a função gkemulticloud.viewer:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.viewer" \
      --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • WORKFORCE_POOL_ID: o ID que identifica exclusivamente o seu conjunto de identidades da força de trabalho no Google Cloud. Ao formatar o ID, certifique-se de que segue as diretrizes recomendadas fornecidas na documentação da IAM em Parâmetros de consulta.
    • GROUP_ID: um ID que identifica de forma exclusiva um grupo externo.
  3. Opcional: atribua aos seus utilizadores ou grupos externos as funções de gestão de identidade e de acesso (IAM) adequadas. Este passo só é necessário se quiser conceder aos utilizadores ou grupos a capacidade de criar ou atualizar clusters; não é necessário para aceder simplesmente a um cluster.

    Utilizadores

    Para utilizadores individuais, tem de atribuir a função de gkemulticloud.admin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.admin" \
      --member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • WORKFORCE_POOL_ID: o ID que identifica exclusivamente o seu conjunto de identidades da força de trabalho no Google Cloud. Ao formatar o ID, certifique-se de que segue as diretrizes recomendadas fornecidas na documentação do IAM em Parâmetros de consulta.
    • SUBJECT_VALUE: o ID que identifica de forma exclusiva um utilizador externo. Por exemplo, o ID pode ser um endereço de email, como alex@cymbalgroup.com.

    Grupos

    Para grupos, tem de atribuir a função gkemulticloud.admin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.admin" \
      --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • WORKFORCE_POOL_ID: o ID que identifica exclusivamente o seu conjunto de identidades da força de trabalho no Google Cloud. Ao formatar o ID, certifique-se de que segue as diretrizes recomendadas fornecidas na documentação da IAM em Parâmetros de consulta.
    • GROUP_ID: um ID que identifica de forma exclusiva um grupo externo.

Para mais informações sobre as funções e as autorizações da API necessárias para o GKE no AWS, consulte o artigo Funções e autorizações da API.

Conceda acesso externo a clusters do GKE

Existem dois métodos de configuração da federação de identidades da força de trabalho para que os utilizadores ou os grupos externos possam aceder aos seus clusters do GKE.

O método n.º 1 requer que defina um ficheiro RBAC e o aplique ao cluster. Este método oferece um controlo preciso sobre as autorizações, como permitir que os utilizadores tenham acesso de leitura apenas aos recursos sem lhes conceder um acesso mais amplo.

O método n.º 2 requer que especifique o acesso para identidades externas quando cria ou atualiza um cluster. Este método concede privilégios administrativos completos aos utilizadores ou grupos especificados.

Escolha o método que melhor se alinha com o nível de controlo de acesso pretendido: método n.º 1 para autorizações mais detalhadas ou método n.º 2 para conceder direitos de administrador completos do cluster.

Método n.º 1: use um ficheiro RBAC

O primeiro método de concessão de acesso externo a clusters do GKE envolve a utilização de um ficheiro RBAC. Siga estes passos:

  1. Defina um ficheiro YAML RBAC que inclua os sujeitos (utilizadores ou grupos) e as autorizações que quer conceder-lhes no cluster do GKE. Seguem-se exemplos de configurações YAML de RBAC para utilizadores individuais e para grupos:

    Utilizadores

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: gateway-cluster-admin-user
    subjects:
    - kind: User
      name: principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    

    Substitua o seguinte:

    • WORKFORCE_POOL_ID: o ID que identifica exclusivamente o seu conjunto de identidades da força de trabalho no Google Cloud. Ao formatar o ID, certifique-se de que segue as diretrizes recomendadas fornecidas na documentação da IAM em Parâmetros de consulta.
    • SUBJECT_VALUE: o ID que identifica de forma exclusiva um utilizador externo. Por exemplo, o ID pode ser um endereço de email, como alex@cymbalgroup.com.

    Grupos

    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_ID
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    

    Substitua o seguinte:

  2. Identifique o cluster do GKE que quer configurar e defina-o como o contexto ativo com o seguinte comando:

      kubectl config use-context CLUSTER_CONTEXT
    

    Substitua CLUSTER_CONTEXT pelo nome do contexto adequado para o seu cluster.

  3. Com o cluster do GKE pretendido definido como o contexto ativo, aplique a configuração do RBAC ao cluster através do seguinte comando:

    kubectl apply -f RBAC_PATH
    

    Substitua RBAC_PATH pelo caminho para o ficheiro RBAC que criou ou editou.

    Quando executa este comando, os utilizadores ou os grupos especificados na configuração do RBAC têm agora as autorizações para aceder e gerir o cluster do GKE segmentado, conforme definido nas regras do RBAC.

  4. Se precisar de fazer alterações subsequentes às autorizações, modifique o ficheiro RBAC e volte a aplicá-lo ao cluster repetindo os passos anteriores.

Método n.º 2: conceda acesso a identidades externas durante a criação ou a atualização do cluster

O método n.º 2 concede acesso a identidades externas durante o processo de criação ou atualização do cluster.

Para criar um cluster, siga os passos descritos no artigo Crie um cluster. Para atualizar um cluster, siga os passos em Atualize um cluster.

Quando executar o comando gcloud para criar ou atualizar um cluster, especifique os parâmetros admin-users e/ou admin-groups da seguinte forma:

gcloud container aws clusters [create|update] CLUSTER_NAME \
    --location=LOCATION
    --admin-users=principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject SUBJECT_VALUE \
    --admin-groups=principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID

Substitua o seguinte:

  • CLUSTER_NAME: o nome do cluster.
  • LOCATION: a Google Cloud região onde o seu cluster é gerido.
  • WORKFORCE_POOL_ID: o ID que identifica exclusivamente o seu conjunto de identidades da força de trabalho no Google Cloud. Ao formatar o ID, certifique-se de que segue as diretrizes recomendadas fornecidas na documentação da IAM em Parâmetros de consulta.
  • SUBJECT_VALUE: o ID que identifica de forma exclusiva um utilizador externo. Por exemplo, o ID pode ser um endereço de email, como alex@cymbalgroup.com.
  • GROUP_ID: um ID que identifica de forma exclusiva um grupo externo.

Resumo da concessão de acesso de IDs externos a clusters do GKE

Depois de executar o método n.º 1 ou o método n.º 2, os utilizadores externos ou os grupos especificados podem usar Google Cloud a consola para se ligarem e verem os detalhes do cluster. Em alternativa, podem usar kubectl com a identidade da CLI gcloud para gerir, manipular e comunicar com o cluster.

Para executar comandos kubectl em clusters do GKE, consulte como gerar uma entrada kubeconfig.