Autenticar no GKE na AWS com identidades externas

A federação de identidade de colaboradores concede às identidades que não são do Google acesso aos serviços do Google Cloud. No contexto do GKE na AWS, isso significa que é possível usar identidades externas preexistentes para criar ou acessar um cluster do GKE sem depender das credenciais do Google.

Os benefícios de usar a federação de identidade de colaboradores são os seguintes:

  • Você elimina a necessidade de contas duplicadas em diferentes plataformas ou provedores.
  • Você define permissões apenas uma vez, sem a necessidade de configurações em várias plataformas.
  • Você simplifica o acesso dos usuários porque são necessários menos logins e senhas.

Antes de começar

Antes de permitir que usuários ou grupos externos acessem clusters do GKE, siga estas etapas:

  1. Para que usuários ou grupos externos possam usar o GKE na API da AWS, configure a federação de identidade da força de trabalho:

  2. Atribua o papel gkemulticloud.viewer aos usuários ou grupos externos para que eles possam acessar clusters. Atribua o papel container.clusterViewer para visualizar clusters no console do Google Cloud.

    Os papéis são coleções de permissões. Ao atribuir um papel a uma entidade, como usuário, grupo ou conta de serviço, você concede a ela todas as permissões contidas no papel.

    Usuários

    Para usuários individuais, você precisa atribuir o papel 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:

    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • WORKFORCE_POOL_ID: o ID que identifica exclusivamente o pool de identidade da força de trabalho no Google Cloud. Ao formatar o ID, siga as diretrizes recomendadas fornecidas na documentação do IAM, em Parâmetros de consulta.
    • SUBJECT_VALUE: o ID que identifica exclusivamente um usuário externo. Por exemplo, o ID pode ser um endereço de e-mail, como alex@cymbalgroup.com.

    Grupos

    Para grupos, é necessário atribuir o papel 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:

    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • WORKFORCE_POOL_ID: o ID que identifica exclusivamente o pool de identidade da força de trabalho no Google Cloud. Ao formatar o ID, siga as diretrizes recomendadas fornecidas na documentação do IAM em Parâmetros de consulta.
    • GROUP_ID: um ID que identifica exclusivamente um grupo externo.
  3. Opcional: atribua os papéis apropriados do Identity and Access Management (IAM) a usuários ou grupos externos. Essa etapa só será necessária se você quiser conceder aos usuários ou grupos a capacidade de criar ou atualizar clusters. Ela não é necessária para simplesmente acessar um cluster.

    Usuários

    Para usuários individuais, você precisa atribuir o papel 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:

    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • WORKFORCE_POOL_ID: o ID que identifica exclusivamente o pool de identidade da força de trabalho no Google Cloud. Ao formatar o ID, siga as diretrizes recomendadas fornecidas na documentação do IAM, em Parâmetros de consulta.
    • SUBJECT_VALUE: o ID que identifica exclusivamente um usuário externo. Por exemplo, o ID pode ser um endereço de e-mail, como alex@cymbalgroup.com.

    Grupos

    Para grupos, é necessário atribuir o papel 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:

    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • WORKFORCE_POOL_ID: o ID que identifica exclusivamente o pool de identidade da força de trabalho no Google Cloud. Ao formatar o ID, siga as diretrizes recomendadas fornecidas na documentação do IAM em Parâmetros de consulta.
    • GROUP_ID: um ID que identifica exclusivamente um grupo externo.

Para mais informações sobre quais papéis e permissões da API são necessários para o GKE na AWS, consulte Papéis e permissões da API.

Conceder acesso externo aos clusters do GKE

Há dois métodos de configurar a federação de identidade da força de trabalho para que usuários ou grupos externos possam acessar os clusters do GKE.

O método 1 exige que você defina um arquivo RBAC e o aplique ao cluster. Esse método oferece controle ajustado sobre as permissões, como conceder aos usuários acesso somente leitura a recursos sem conceder a eles acesso mais amplo.

O método no 2 requer que você especifique o acesso para identidades externas ao criar ou atualizar um cluster. Esse método concede privilégios administrativos totais aos usuários ou grupos especificados.

Escolha o método mais adequado ao nível de controle de acesso desejado: o 1 para permissões mais granulares ou o 2 para conceder direitos completos de administrador do cluster.

Método 1: usar um arquivo RBAC

O primeiro método de concessão de acesso externo aos clusters do GKE envolve o uso de um arquivo RBAC. Siga estas etapas:

  1. Defina um arquivo YAML do RBAC que inclua os assuntos (usuários ou grupos) e as permissões que você quer conceder a eles no cluster do GKE. Veja exemplos de configurações de YAML do RBAC para usuários individuais e grupos:

    Usuários

    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:

    • WORKFORCE_POOL_ID: o ID que identifica exclusivamente o pool de identidade da força de trabalho no Google Cloud. Ao formatar o ID, siga as diretrizes recomendadas fornecidas na documentação do IAM em Parâmetros de consulta.
    • SUBJECT_VALUE: o ID que identifica exclusivamente um usuário externo. Por exemplo, o ID pode ser um endereço de e-mail, 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:

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

      kubectl config use-context CLUSTER_CONTEXT
    

    Substitua CLUSTER_CONTEXT pelo nome de contexto apropriado para o cluster.

  3. Com o cluster do GKE desejado definido como o contexto ativo, aplique a configuração do RBAC ao cluster usando o seguinte comando:

    kubectl apply -f RBAC_PATH
    

    Substitua RBAC_PATH pelo caminho para o arquivo RBAC que você criou ou editou.

    Quando você executa este comando, os usuários ou grupos especificados na configuração do RBAC agora têm as permissões para acessar e gerenciar o cluster do GKE de destino, conforme definido nas regras do RBAC.

  4. Se você precisar fazer alterações subsequentes nas permissões, modifique o arquivo RBAC e aplique-o novamente ao cluster repetindo as etapas anteriores.

Método 2: conceder acesso a identidades externas durante a criação ou atualização do cluster

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

Para criar um cluster, siga as etapas em Criar um cluster. Para atualizar um cluster, siga as etapas em Atualizar um cluster.

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

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:

  • CLUSTER_NAME: o nome do cluster.
  • LOCATION: a região do Google Cloud em que o cluster é gerenciado.
  • WORKFORCE_POOL_ID: o ID que identifica exclusivamente o pool de identidade da força de trabalho no Google Cloud. Ao formatar o ID, siga as diretrizes recomendadas fornecidas na documentação do IAM em Parâmetros de consulta.
  • SUBJECT_VALUE: o ID que identifica exclusivamente um usuário externo. Por exemplo, o ID pode ser um endereço de e-mail, como alex@cymbalgroup.com.
  • GROUP_ID: um ID que identifica exclusivamente um grupo externo.

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

Depois de executar o método no 1 ou no 2, os usuários ou grupos externos especificados podem usar o console do Google Cloud para se conectar e visualizar os detalhes do cluster. Como alternativa, eles podem usar kubectl com a identidade da gcloud CLI para gerenciar, manipular e se comunicar com o cluster.

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