Cada assunto, ou seja, um utilizador ou um grupo, segue um processo de dois passos para obter acesso ao servidor da API Management e ao cluster do Kubernetes:
Acesso ao servidor da API Management: conceda a um assunto autorizações no servidor da API Management através de
ClusterRoleBindingouRoleBindinga umClusterRolepredefinido.Acesso ao cluster do Kubernetes: conceda acesso específico ao espaço de nomes ou acesso a todo o cluster.
Para acesso específico do espaço de nomes: para conceder acesso ao espaço de nomes de um projeto específico no cluster, crie um
ProjectRolee umProjectRoleBindingcorrespondente. Este processo propaga um KubernetesRolee umRoleBindingpara um KubernetesNamespaceno cluster, que corresponde aoProjectao qual oProjectRolee oProjectRoleBindingestão associados.Para acesso ao nível do cluster: para conceder acesso a todos os espaços de nomes no cluster, crie um
OrganizationRolee umOrganizationRoleBindingcorrespondente. Este processo propaga um KubernetesClusterRoleeClusterRoleBindinga todo o cluster Kubernetes.
As personas (IO, PA, AO) não são funções, mas sim conjuntos de funções de utilizador mapeadas para autorizações específicas e atribuídas a utilizadores individuais.
O administrador de IAM da organização e o administrador de IAM do projeto podem criar mais funções de projeto e associações de funções de projeto para conceder autorizações adicionais específicas do projeto. No entanto, os administradores do IAM da organização podem criar funções do projeto e associações de funções do projeto para qualquer projeto. Por outro lado, os administradores de IAM de projetos só podem criar funções de projetos e associações de funções de projetos para projetos aos quais têm permissão de acesso.
Configure associações de funções
Pode configurar associações de funções que dão aos membros da equipa acesso a recursos ao nível da organização ou do projeto.
Para receber as autorizações necessárias para configurar associações de funções, peça ao administrador de IAM da organização que lhe conceda a função de administrador de IAM da organização.
Para atribuir uma função a um membro autorizado, siga estes passos:
Consola
- Inicie sessão na consola do GDC.
- Clique em Selecionar projeto para selecionar uma organização ou um projeto.
- Para configurar associações de funções para uma organização, selecione uma organização.
- Para configurar associações de funções para um projeto, selecione um projeto.
- No menu de navegação, clique em Identidade e acesso > Acesso.
- Clique em Adicionar membro.
- Na lista Fornecedor de identidade, selecione um fornecedor de identidade.
- Escolha se quer adicionar utilizadores individuais ou grupos.
- No campo Nome de utilizador ou alias do grupo, introduza o nome de utilizador, o endereço de email ou o alias.
- Na lista Função, selecione a função que quer atribuir ao utilizador ou ao grupo, como Leitor da organização ao nível da organização ou Criador de projetos ao nível do projeto.
- Clique em Adicionar.
O membro aparece na lista de Membro autorizado.
gdcloud
Certifique-se de que tem a CLI gcloud instalada.
Inicie sessão com o comando
gdcloud auth loginpara autenticar com o seu fornecedor de identidade. Para mais informações, consulte a autenticação da CLI gdcloud.Configure vinculações de funções.
Configure associações de funções para uma organização:
gdcloud organizations add-iam-policy-binding root \ --member=USER_ACCOUNT \ --role=ROLE_TYPE/ROLESubstitua as seguintes variáveis:
USER_ACCOUNT: a conta de utilizador à qual quer conceder a função. Esta flag aceita um endereço de email do utilizador com o prefixo do fornecedor de identidade (user:idpprefix-user@example.com) ou um nome da conta de serviço com o projeto da conta de serviço (serviceAccount:projectName:serviceAccountName).ROLE_TYPE: oClusterRole, oRoleou oOrganizationRolepara o qual está a configurar a associação de funções.ROLE: o nome da função predefinida ou personalizada que quer atribuir ao utilizador (comoproject-creator).
Configure vinculações de funções para um projeto:
gdcloud projects add-iam-policy-binding PROJECT \ --member=USER_ACCOUNT \ --role=ROLE_TYPE/ROLESubstitua as seguintes variáveis:
PROJECT: o nome do projeto para o qual está a configurar a associação de funções.USER_ACCOUNT: a conta de utilizador à qual quer conceder a função. Esta flag aceita um endereço de email do utilizador com o prefixo do fornecedor de identidade (user:idpprefix-user@example.com) ou um nome da conta de serviço com o projeto da conta de serviço (serviceAccount:projectName:serviceAccountName).ROLE_TYPE: oRoleou oProjectRolepara os quais está a configurar a associação de funções.ROLE: o nome da função predefinida ou personalizada que quer atribuir ao utilizador (comoproject-viewer).
API
Exporte a credencial do utilizador que usa:
export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIGExporte a conta de utilizador à qual quer atribuir a função, incluindo o prefixo do fornecedor de identidade (como
idpprefix-paul@example.com):export USERNAME=IDP_PREFIX-USER_EMAILExporte o nome da função de que o utilizador precisa, como
project-creator. Consulte as Definições de funções para ver detalhes sobre a função.export ROLE_NAME=ROLE_NAMEAtribua um utilizador a um
ClusterRole,Role,ProjectRoleouOrganizationRole:Atribua um utilizador a um
ClusterRole:kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ clusterrolebinding ${USERNAME}-${ROLE_NAME}-binding \ --clusterrole=${ROLE_NAME} --user=${USERNAME}Nos casos em que um
ClusterRolerequer umRoleBindingem vez de umClusterRoleBinding, consulte as Definições de funções para saber que tipo de associação a função precisa e criar uma RoleBinding no espaço de nomesgpc-system:kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ rolebinding ${USERNAME}-${ROLE_NAME}-binding \ --clusterrole=${ROLE_NAME} --user=${USERNAME} --namespace=gpc-systemAtribua um utilizador a um
Role:Exporte o espaço de nomes onde a associação tem de ser criada:
export BINDING_NAMESPACE=BINDING_NAMESPACEExecute os seguintes comandos para criar um
RoleBinding:kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ rolebinding ${USERNAME}-${ROLE_NAME}-binding \ --role=${ROLE_NAME} --user=${USERNAME} --namespace=${BINDING_NAMESPACE}
Atribua um utilizador a um
ProjectRole:Crie um ficheiro
projectrolebinding.yaml:apiVersion: resourcemanager.gdc.goog/v1 kind: ProjectRoleBinding metadata: name: BINDING_NAME namespace: PROJECT_NAME spec: roleRef: apiGroup: resourcemanager.gdc.goog kind: ProjectRole name: ROLE_NAME subjects: - apiGroup: rbac.authorization.k8s.io kind: USER_KIND name: USERNAMESubstitua o seguinte:
BINDING_NAME: um nome para a associação que o utilizador pode personalizar (comouser-project-creator-binding).PROJECT_NAME: o nome do projeto ao qual está a conceder a função.ROLE_NAME: o nome doProjectRoleque está a atribuir ao utilizador.USER_KIND: o tipo de utilizador, que pode serUser,GroupouServiceAccount.USERNAME: o endereço de email do utilizador ao qual está a atribuir a função, incluindo o prefixo do fornecedor de identidade (comoidpprefix-paul@example.com). Este tem de corresponder aoUSERNAMEexportado.
Aplique o ficheiro
projectrolebinding.yaml:kubectl create -f projectrolebinding.yaml
Atribua um utilizador a um
OrganizationRole:Crie um ficheiro
organizationrolebinding.yaml:apiVersion: resourcemanager.gdc.goog/v1 kind: OrganizationRoleBinding metadata: name: BINDING_NAME namespace: gpc-system spec: roleRef: apiGroup: resourcemanager.gdc.goog kind: OrganizationRole name: ROLE_NAME subjects: - apiGroup: rbac.authorization.k8s.io kind: USER_KIND name: USERNAMESubstitua o seguinte:
BINDING_NAME: um nome para a associação que o utilizador pode personalizar (comouser-organization-creator-binding).ROLE_NAME: o nome doOrganizationRoleque está a atribuir ao utilizador.USER_KIND: o tipo de utilizador, que pode serUser,GroupouServiceAccount.USERNAME: o endereço de email do utilizador ao qual está a atribuir a função, incluindo o prefixo do fornecedor de identidade (comoidpprefix-paul@example.com). Este tem de corresponder aoUSERNAMEexportado.
Aplique o ficheiro YAML
organizationrolebinding.yaml:kubectl create -f organizationrolebinding.yaml
Remova associações de funções
Quando o acesso já não for necessário, remova um membro e as respetivas funções, autorizações e acesso associados.
Para remover membros, siga os passos abaixo:
Consola
- Inicie sessão na consola do GDC.
- No menu de navegação, clique em Identidade e acesso > Acesso.
- Na lista Membros autorizados, selecione um membro.
- Clique em Remover membro.
- Quando lhe for pedido, clique em Remover membro para confirmar.
gdcloud
Certifique-se de que tem a CLI gcloud instalada.
Inicie sessão com o comando
gdcloud auth loginpara autenticar com o seu fornecedor de identidade. Para mais informações, consulte a autenticação da CLI gdcloud.Remova as associações de funções.
Remova associações de funções para uma organização:
gdcloud organizations remove-iam-policy-binding root \ --member=USER_ACCOUNT \ --role=ROLE_TYPE/ROLESubstitua as seguintes variáveis:
USER_ACCOUNT: a conta de utilizador da qual quer remover a função. Esta flag aceita um endereço de email do utilizador com o prefixo do fornecedor de identidade (user:idpprefix-user@example.com) ou um nome da conta de serviço com o projeto da conta de serviço (serviceAccount:projectName:serviceAccountName).ROLE_TYPE: oClusterRole, oRoleou oOrganizationRolepara o qual está a remover a associação de funções.ROLE: o nome da função predefinida ou personalizada que quer remover da conta de utilizador (comoproject-creator).
Remova associações de funções para um projeto:
gdcloud projects remove-iam-policy-binding PROJECT \ --member=USER_ACCOUNT \ --role=ROLE_TYPE/ROLESubstitua as seguintes variáveis:
PROJECT: o nome do projeto do qual está a remover a associação de funções.USER_ACCOUNT: a conta de utilizador da qual quer remover a função. Esta flag aceita um endereço de email do utilizador com o prefixo do fornecedor de identidade (user:idpprefix-user@example.com) ou um nome da conta de serviço com o projeto da conta de serviço (serviceAccount:projectName:serviceAccountName).ROLE_TYPE: oRoleou oProjectRolepara o qual está a remover a associação de funções.ROLE: o nome da função predefinida ou personalizada que quer remover da conta de utilizador (comoproject-viewer).
API
Exporte a credencial do utilizador que usa:
export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIGExporte a conta de utilizador da qual quer remover a função, incluindo o prefixo do fornecedor de identidade (como
idpprefix-paul@example.com):export USERNAME=IDP_PREFIX-USER_EMAILExporte o espaço de nomes onde a associação está a ser removida:
export BINDING_NAMESPACE=BINDING_NAMESPACEElimine o
ClusterRoleBinding, oRoleBinding, oProjectRoleBindingou oOrganizationRoleBindingpara revogar a autorização concedida à conta de utilizador:Remova o
ClusterRoleBindingde uma conta de utilizador:kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete clusterrolebinding ${USERNAME}-paRemova o
RoleBindingde uma conta de utilizador:kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete rolebinding ${USERNAME}-pa \ --namespace=${BINDING_NAMESPACE}Remova o
ProjectRoleBindingde uma conta de utilizador:kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete projectrolebinding ${USERNAME}-pa \ --namespace=${BINDING_NAMESPACE}Remova o
OrganizationRoleBindingde uma conta de utilizador:kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete organizationrolebinding ${USERNAME}-pa \ --namespace=gpc-system
Revogue o acesso do utilizador
Se um membro sair da sua organização ou equipa, pode revogar o respetivo acesso ao dispositivo isolado do Google Distributed Cloud (GDC). A revogação do acesso de um utilizador termina a sessão do mesmo no dispositivo isolado do GDC e remove as respetivas funções e autorizações. Também pode listar a atividade e as sessões do utilizador a partir da respetiva hora de início e de fim.
Para revogar o acesso de um utilizador, faça o seguinte:
Obtenha as autorizações necessárias para revogar utilizadores. Peça ao administrador de IAM da organização que lhe conceda a função de administrador de sessão da organização (
org-session-admin).Revogue o acesso do utilizador:
gdcloud admin auth revoke --accounts USER_EMAILSubstitua USER_EMAIL pelo email do utilizador ao qual quer revogar o acesso.
Depois de executar o comando, vê um resultado semelhante ao seguinte. Este exemplo revoga o acesso do utilizador
ariel@example.com:Success: NUMBER of sessions revoked for user ariel@example.comNeste exemplo, a variável NUMBER refere-se ao número de sessões ativas que o utilizador teve.
Confirme que revogou o acesso do utilizador executando novamente o comando
gdcloud admin auth revoke. Se tiver êxito, vê o seguinte:No sessions found for account: ariel@example.com
Liste todos os utilizadores revogados
Para ver todos os utilizadores revogados, bem como a respetiva atividade e sessões, faça o seguinte:
Liste todos os utilizadores revogados com a respetiva hora de início e fim:
gdcloud admin auth list --format="csv(ACCOUNT, IDENTITY_PROVIDER, CREATION_TIME, EXPIRATION_TIME)"Se for bem-sucedido, vê um resultado semelhante ao seguinte:
account,identity_provider,creation_time,expiration_time ariel@example.com,example-idp,2023-02-15 22:10:52,2023-02-15 23:10:52