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:
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:
- Para utilizadores do Azure, consulte o artigo Configure a federação de identidades da força de trabalho com o Azure AD.
- Para utilizadores do Okta, consulte o artigo Configure a federação de identidades da força de trabalho com o Okta.
- Para utilizadores de outras plataformas, consulte o artigo Configure a federação de identidades de força de trabalho.
Atribua a função
gkemulticloud.viewer
aos seus utilizadores ou grupos externos para que possam aceder aos clusters. Atribua a funçãocontainer.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, comoalex@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.
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, comoalex@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:
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, 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 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.
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.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.
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, comoalex@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
.