Cada sujeito (um usuário ou um grupo) segue um processo de duas etapas para ter acesso ao servidor da API Management e ao cluster do Kubernetes:
Acesso ao servidor da API Management:conceda a um assunto com permissões no servidor da API Management usando
ClusterRoleBindingouRoleBindinga umClusterRolepredefinido.Acesso ao cluster do Kubernetes:conceda acesso específico ao namespace ou em todo o cluster.
Para acesso específico do namespace:para conceder acesso ao namespace de um projeto específico no cluster, crie um
ProjectRolee umProjectRoleBindingcorrespondente. Esse processo propaga umRolee umRoleBindingdo Kubernetes para umNamespacedo Kubernetes no cluster, que corresponde aoProjectassociado aoProjectRolee aoProjectRoleBinding.Para acesso em todo o cluster:para conceder acesso a todos os namespaces no cluster, crie um
OrganizationRolee umOrganizationRoleBindingcorrespondente. Esse processo propaga umClusterRolee umClusterRoleBindingdo Kubernetes para todo o cluster do Kubernetes.
As personas (IO, PA, AO) não são papéis, mas sim coleções de papéis de usuário mapeados para permissões específicas e atribuídos a usuários individuais.
O administrador do IAM da organização e o administrador do IAM do projeto podem criar mais papéis e vinculações de papéis do projeto para conceder outras permissões específicas do projeto. No entanto, os administradores do IAM da organização podem criar papéis e vinculações de papéis para qualquer projeto. Por outro lado, os administradores do IAM do projeto só podem criar papéis e vinculações de papéis para projetos a que têm permissão de acesso.
Configurar vinculações de papéis
É possível configurar vinculações de função que dão aos membros da equipe acesso a recursos no nível da organização ou do projeto.
Para receber as permissões necessárias para configurar vinculações de papéis, peça ao administrador do IAM da organização para conceder a você o papel de administrador do IAM da organização.
Para atribuir uma função a um membro autorizado, siga estas etapas:
Console
- Faça login no console do GDC.
- Clique em Selecionar projeto para escolher uma organização ou um projeto.
- Para configurar vinculações de função em uma organização, selecione uma organização.
- Para configurar vinculações de função em um projeto, selecione um projeto.
- No menu de navegação, clique em Identidade e acesso > Acesso.
- Clique em Adicionar membro.
- Na lista Provedor de identidade, selecione uma opção.
- Escolha se quer adicionar usuários individuais ou grupos.
- No campo Nome de usuário ou alias do grupo, insira o nome de usuário, o endereço de e-mail ou o alias.
- Na lista Papel, selecione o papel que você quer atribuir ao usuário ou grupo, como Visualizador da organização no nível da organização ou Criador de projetos no nível do projeto.
- Clique em Adicionar.
O membro aparece na lista Membro autorizado.
gdcloud
Verifique se você instalou a CLI gdcloud.
Faça login usando o comando
gdcloud auth loginpara autenticar com seu provedor de identidade. Para mais informações, consulte a autenticação da CLI gdcloud.Configure as vinculações de função.
Configurar vinculações de papéis 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 usuário a que você quer conceder o papel. Essa flag aceita um endereço de e-mail do usuário com o prefixo do provedor de identidade (user:idpprefix-user@example.com) ou um nome de conta de serviço com o projeto da conta de serviço (serviceAccount:projectName:serviceAccountName).ROLE_TYPE: oClusterRole,RoleouOrganizationRolepara o qual você está configurando a vinculação de papel.ROLE: o nome da função predefinida ou personalizada que você quer atribuir ao usuário (comoproject-creator).
Configure vinculações de papéis 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 você está configurando a vinculação de função.USER_ACCOUNT: a conta de usuário a que você quer conceder o papel. Essa flag aceita um endereço de e-mail do usuário com o prefixo do provedor de identidade (user:idpprefix-user@example.com) ou um nome de conta de serviço com o projeto da conta de serviço (serviceAccount:projectName:serviceAccountName).ROLE_TYPE: oRoleouProjectRolepara que você está configurando a vinculação de papel.ROLE: o nome da função predefinida ou personalizada que você quer atribuir ao usuário (comoproject-viewer).
API
Exporte a credencial de usuário que você usa:
export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIGExporte a conta de usuário a que você quer atribuir a função, incluindo o prefixo do provedor de identidade (como
idpprefix-paul@example.com):export USERNAME=IDP_PREFIX-USER_EMAILExporte o nome da função que o usuário precisa, como
project-creator. Consulte Definições de papéis para mais detalhes sobre a função.export ROLE_NAME=ROLE_NAMEAtribua um usuário a um
ClusterRole,Role,ProjectRoleouOrganizationRole:Atribua um usuário a um
ClusterRole:kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ clusterrolebinding ${USERNAME}-${ROLE_NAME}-binding \ --clusterrole=${ROLE_NAME} --user=${USERNAME}Para casos em que um
ClusterRoleexige umRoleBindingem vez de umClusterRoleBinding, consulte as Definições de papéis para descobrir qual tipo de vinculação o papel precisa e crie um RoleBinding no namespacegpc-system:kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ rolebinding ${USERNAME}-${ROLE_NAME}-binding \ --clusterrole=${ROLE_NAME} --user=${USERNAME} --namespace=gpc-systemAtribua um usuário a um
Role:Exporte o namespace em que a vinculação precisa ser criada:
export BINDING_NAMESPACE=BINDING_NAMESPACEExecute os comandos a seguir 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 usuário a um
ProjectRole:Crie um arquivo
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:
BINDING_NAME: um nome para a vinculação que o usuário pode personalizar (comouser-project-creator-binding).PROJECT_NAME: o nome do projeto a que você está concedendo a função.ROLE_NAME: o nome doProjectRoleque você está atribuindo ao usuário.USER_KIND: o tipo de usuário, que pode serUser,GroupouServiceAccount.USERNAME: o endereço de e-mail do usuário para quem você está atribuindo o papel, incluindo o prefixo do provedor de identidade (comoidpprefix-paul@example.com). Isso precisa corresponder aoUSERNAMEexportado.
Aplique o arquivo
projectrolebinding.yaml:kubectl create -f projectrolebinding.yaml
Atribua um usuário a um
OrganizationRole:Crie um arquivo
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:
BINDING_NAME: um nome para a vinculação que o usuário pode personalizar (comouser-organization-creator-binding).ROLE_NAME: o nome doOrganizationRoleque você está atribuindo ao usuário.USER_KIND: o tipo de usuário, que pode serUser,GroupouServiceAccount.USERNAME: o endereço de e-mail do usuário para quem você está atribuindo o papel, incluindo o prefixo do provedor de identidade (comoidpprefix-paul@example.com). Isso precisa corresponder aoUSERNAMEexportado.
Aplique o arquivo YAML
organizationrolebinding.yaml:kubectl create -f organizationrolebinding.yaml
Remover vinculações de papéis
Quando o acesso não for mais necessário, remova um membro e os papéis, as permissões e o acesso associados a ele.
Para remover participantes, siga estas etapas:
Console
- Faça login no console 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 solicitado, clique em Remover participante para confirmar.
gdcloud
Verifique se você instalou a CLI gdcloud.
Faça login usando o comando
gdcloud auth loginpara autenticar com seu provedor de identidade. Para mais informações, consulte a autenticação da CLI gdcloud.Remova as vinculações de papéis.
Remover vinculações de papéis de 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 usuário de que você quer remover o papel. Essa flag aceita um endereço de e-mail do usuário com o prefixo do provedor de identidade (user:idpprefix-user@example.com) ou um nome de conta de serviço com o projeto da conta de serviço (serviceAccount:projectName:serviceAccountName).ROLE_TYPE: oClusterRole,RoleouOrganizationRolede que você está removendo a vinculação de papel.ROLE: o nome da função predefinida ou personalizada que você quer remover da conta de usuário (comoproject-creator).
Remova as vinculações de papel de 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 de que você está removendo a vinculação de função.USER_ACCOUNT: a conta de usuário de que você quer remover o papel. Essa flag aceita um endereço de e-mail do usuário com o prefixo do provedor de identidade (user:idpprefix-user@example.com) ou um nome de conta de serviço com o projeto da conta de serviço (serviceAccount:projectName:serviceAccountName).ROLE_TYPE: oRoleouProjectRolepara que você está removendo a vinculação de papel.ROLE: o nome da função predefinida ou personalizada que você quer remover da conta de usuário (comoproject-viewer).
API
Exporte a credencial de usuário que você usa:
export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIGExporte a conta de usuário de que você quer remover o papel, incluindo o prefixo do provedor de identidade (como
idpprefix-paul@example.com):export USERNAME=IDP_PREFIX-USER_EMAILExporte o namespace em que a vinculação está sendo removida:
export BINDING_NAMESPACE=BINDING_NAMESPACEExclua o
ClusterRoleBinding,RoleBinding,ProjectRoleBindingouOrganizationRoleBindingpara revogar a permissão concedida à conta de usuário:Remova o
ClusterRoleBindingde uma conta de usuário:kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete clusterrolebinding ${USERNAME}-paRemova o
RoleBindingde uma conta de usuário:kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete rolebinding ${USERNAME}-pa \ --namespace=${BINDING_NAMESPACE}Remova o
ProjectRoleBindingde uma conta de usuário:kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete projectrolebinding ${USERNAME}-pa \ --namespace=${BINDING_NAMESPACE}Remova o
OrganizationRoleBindingde uma conta de usuário:kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \ delete organizationrolebinding ${USERNAME}-pa \ --namespace=gpc-system
Revogar o acesso do usuário
Se um membro sair da sua organização ou equipe, você poderá revogar o acesso dele ao appliance isolado do Google Distributed Cloud (GDC). Revogar o acesso de um usuário faz com que ele saia do dispositivo isolado do GDC e remove os papéis e permissões dele. Você também pode listar a atividade e as sessões do usuário com base no horário de início e término.
Para revogar o acesso de um usuário, faça o seguinte:
Receba as permissões necessárias para revogar usuários. Peça ao administrador do IAM da organização para conceder a você o papel de administrador da sessão da organização (
org-session-admin).Revogue o acesso do usuário:
gdcloud admin auth revoke --accounts USER_EMAILSubstitua USER_EMAIL pelo e-mail do usuário para revogar o acesso.
Depois de executar o comando, você vai ver uma saída semelhante a esta: Este exemplo revoga o acesso do usuário
ariel@example.com:Success: NUMBER of sessions revoked for user ariel@example.comNeste exemplo, a variável NUMBER se refere ao número de sessões ativas do usuário.
Confirme se você revogou o acesso do usuário executando o comando
gdcloud admin auth revokenovamente. Se a operação for bem-sucedida, você verá o seguinte:No sessions found for account: ariel@example.com
Listar todos os usuários revogados
Para conferir todos os usuários revogados e a atividade e as sessões deles, faça o seguinte:
Liste todos os usuários revogados do horário de início e término:
gdcloud admin auth list --format="csv(ACCOUNT, IDENTITY_PROVIDER, CREATION_TIME, EXPIRATION_TIME)"Se for bem-sucedido, você vai ver uma saída semelhante a esta:
account,identity_provider,creation_time,expiration_time ariel@example.com,example-idp,2023-02-15 22:10:52,2023-02-15 23:10:52