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:
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:
- Para usuários do Azure, consulte Configurar a federação de identidade da força de trabalho com o Azure AD.
- Para usuários do Okta, consulte Configurar a federação de identidade da força de trabalho com o Okta.
- Para usuários de outras plataformas, consulte Configurar a federação de identidade de colaboradores.
Atribua o papel
gkemulticloud.viewer
aos usuários ou grupos externos para que eles possam acessar clusters. Atribua o papelcontainer.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, comoalex@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.
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, comoalex@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:
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, comoalex@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:
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.
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.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.
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, comoalex@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
.