A federação de identidade da força de trabalho concede acesso a identidades que não sejam do GoogleGoogle Cloud serviços. No contexto do GKE na AWS, isso significa que você pode usar identidades externas preexistentes para criar ou acessar um cluster do GKE sem depender de credenciais do Google.
Os benefícios de usar a federação de identidade da força de trabalho são os seguintes:
- Você elimina a necessidade de contas duplicadas em diferentes plataformas ou provedores.
- Você define permissões apenas uma vez, eliminando a necessidade de configurações em diversas plataformas.
- Você simplifica o acesso do usuário, pois são necessários menos logins e senhas.
Antes de começar
Antes de permitir que usuários ou grupos externos acessem os clusters do GKE, você precisa executar as seguintes etapas:
Para que usuários ou grupos externos possam usar a API do GKE na AWS, configure a federação de identidade da força de trabalho.
- Para usuários do Azure, consulte Configurar federação de identidade da força de trabalho com o Azure AD .
- Para usuários do Okta, consulte Configurar federação de identidade da força de trabalho com o Okta .
- Para usuários de outras plataformas, consulte Configurar federação de identidade da força de trabalho .
Atribua a função
gkemulticloud.viewer
aos seus usuários ou grupos externos para que eles possam acessar os clusters. Atribua a funçãocontainer.clusterViewer
para visualizar os clusters no cluster. Google Cloud console.Observe que funções são coleções de permissões. Ao atribuir uma função a uma entidade (usuário, grupo ou conta de serviço), você concede a essa entidade todas as permissões que a função contém.
Usuários
Para usuários individuais, você precisa atribuir a função
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 Google Cloud projeto. -
WORKFORCE_POOL_ID
: o ID que identifica exclusivamente seu pool de identidade de força de trabalho em Google Cloud. Ao formatar o ID, certifique-se de seguir 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, você precisa 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 Google Cloud projeto. -
WORKFORCE_POOL_ID
: o ID que identifica exclusivamente seu pool de identidade de força de trabalho em Google Cloud. Ao formatar o ID, certifique-se de seguir 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 aos seus usuários ou grupos externos as funções apropriadas de Gerenciamento de Identidade e Acesso (IAM). Esta etapa só é necessária se você quiser conceder a usuários ou grupos a capacidade de criar ou atualizar clusters; não é necessária para simplesmente acessar um cluster .
Usuários
Para usuários individuais, você precisa atribuir a função
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 Google Cloud projeto. -
WORKFORCE_POOL_ID
: o ID que identifica exclusivamente seu pool de identidade de força de trabalho em Google Cloud. Ao formatar o ID, certifique-se de seguir 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, você precisa 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 Google Cloud projeto. -
WORKFORCE_POOL_ID
: o ID que identifica exclusivamente seu pool de identidade de força de trabalho em Google Cloud. Ao formatar o ID, certifique-se de seguir 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 obter mais informações sobre quais funções e permissões de API são necessárias para o GKE na AWS, consulte Funções e permissões de API .
Conceder acesso externo aos clusters do GKE
Há dois métodos de configuração da federação de identidade da força de trabalho para que usuários ou grupos externos possam acessar seus clusters do GKE.
O método nº 1 exige que você defina um arquivo RBAC e o aplique ao cluster. Este método oferece controle refinado sobre permissões, como permitir aos usuários acesso somente leitura aos recursos sem conceder a eles acesso mais amplo.
O Método 2 exige que você especifique acesso para identidades externas ao criar ou atualizar um cluster. Este método concede privilégios administrativos completos aos usuários ou grupos especificados.
Escolha o método que melhor se adapta ao seu nível desejado de controle de acesso: método nº 1 para permissões mais granulares ou método nº 2 para conceder direitos completos de administrador do cluster.
Método nº 1: use um arquivo RBAC
O primeiro método para conceder acesso externo aos clusters do GKE envolve o uso de um arquivo RBAC. Siga estas etapas:
Defina um arquivo RBAC YAML que inclua os sujeitos (usuários ou grupos) e as permissões que você deseja conceder a eles no cluster do GKE. Veja alguns exemplos de configurações RBAC YAML 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 o seguinte:
-
WORKFORCE_POOL_ID
: o ID que identifica exclusivamente seu pool de identidade de força de trabalho em Google Cloud. Ao formatar o ID, certifique-se de seguir 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 o seguinte:
-
WORKFORCE_POOL_ID
: o ID que identifica exclusivamente seu pool de identidade de força de trabalho em Google Cloud. Ao formatar o ID, certifique-se de seguir 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ê deseja 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 seu cluster.Com o cluster GKE desejado definido como o contexto ativo, aplique a configuração 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.Ao executar este comando, os usuários ou grupos especificados na configuração do RBAC agora têm 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 reaplique-o ao cluster repetindo as etapas anteriores.
Método nº 2: conceder acesso a identidades externas durante a criação ou 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 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 o seguinte:
-
CLUSTER_NAME
: o nome do seu cluster. -
LOCATION
: a Google Cloud região onde seu cluster é gerenciado. -
WORKFORCE_POOL_ID
: o ID que identifica exclusivamente seu pool de identidade de força de trabalho em Google Cloud. Ao formatar o ID, certifique-se de seguir 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 de IDs externos aos clusters do GKE
Após executar o método nº 1 ou nº 2, os usuários ou grupos externos especificados podem usar Google Cloud console para conectar e visualizar detalhes do cluster. Como alternativa, eles podem usar kubectl
com identidade da CLI do gcloud para gerenciar, manipular e se comunicar com o cluster.
Para executar comandos kubectl
em clusters do GKE, veja como gerar uma entrada kubeconfig
.