Conceda e revogue o acesso

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 ClusterRoleBinding ou RoleBinding a um ClusterRole predefinido.

  • 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 ProjectRole e um ProjectRoleBinding correspondente. Este processo propaga um Kubernetes Role e um RoleBinding para um Kubernetes Namespace no cluster, que corresponde ao Project ao qual o ProjectRole e o ProjectRoleBinding estão associados.

    • Para acesso ao nível do cluster: para conceder acesso a todos os espaços de nomes no cluster, crie um OrganizationRole e um OrganizationRoleBinding correspondente. Este processo propaga um Kubernetes ClusterRole e ClusterRoleBinding a 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

  1. Inicie sessão na consola do GDC.
  2. 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.
  3. No menu de navegação, clique em Identidade e acesso > Acesso.
  4. Clique em Adicionar membro.
  5. Na lista Fornecedor de identidade, selecione um fornecedor de identidade.
  6. Escolha se quer adicionar utilizadores individuais ou grupos.
  7. No campo Nome de utilizador ou alias do grupo, introduza o nome de utilizador, o endereço de email ou o alias.
  8. 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.
  9. Clique em Adicionar.

O membro aparece na lista de Membro autorizado.

gdcloud

  1. Certifique-se de que tem a CLI gcloud instalada.

  2. Inicie sessão com o comando gdcloud auth login para autenticar com o seu fornecedor de identidade. Para mais informações, consulte a autenticação da CLI gdcloud.

  3. 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/ROLE
      

      Substitua 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: o ClusterRole, o Role ou o OrganizationRole para 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 (como project-creator).
    • Configure vinculações de funções para um projeto:

      gdcloud projects add-iam-policy-binding PROJECT \
        --member=USER_ACCOUNT \
        --role=ROLE_TYPE/ROLE
      

      Substitua 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: o Role ou o ProjectRole para 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 (como project-viewer).

API

  1. Exporte a credencial do utilizador que usa:

    export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG
    
  2. Exporte 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_EMAIL
    
  3. Exporte 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_NAME
    
  4. Atribua um utilizador a um ClusterRole, Role, ProjectRole ou OrganizationRole:

    • 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 ClusterRole requer um RoleBinding em vez de um ClusterRoleBinding, 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 nomes gpc-system:

      kubectl create --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      rolebinding ${USERNAME}-${ROLE_NAME}-binding \
      --clusterrole=${ROLE_NAME} --user=${USERNAME} --namespace=gpc-system
      
    • Atribua um utilizador a um Role:

      1. Exporte o espaço de nomes onde a associação tem de ser criada:

        export BINDING_NAMESPACE=BINDING_NAMESPACE
        
      2. Execute 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:

      1. 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: USERNAME
        

        Substitua o seguinte:

        • BINDING_NAME: um nome para a associação que o utilizador pode personalizar (como user-project-creator-binding).
        • PROJECT_NAME: o nome do projeto ao qual está a conceder a função.
        • ROLE_NAME: o nome do ProjectRole que está a atribuir ao utilizador.
        • USER_KIND: o tipo de utilizador, que pode ser User, Group ou ServiceAccount.
        • USERNAME: o endereço de email do utilizador ao qual está a atribuir a função, incluindo o prefixo do fornecedor de identidade (como idpprefix-paul@example.com). Este tem de corresponder ao USERNAME exportado.
      2. Aplique o ficheiro projectrolebinding.yaml:

        kubectl create -f projectrolebinding.yaml
        
    • Atribua um utilizador a um OrganizationRole:

      1. 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: USERNAME
        

        Substitua o seguinte:

        • BINDING_NAME: um nome para a associação que o utilizador pode personalizar (como user-organization-creator-binding).
        • ROLE_NAME: o nome do OrganizationRole que está a atribuir ao utilizador.
        • USER_KIND: o tipo de utilizador, que pode ser User, Group ou ServiceAccount.
        • USERNAME: o endereço de email do utilizador ao qual está a atribuir a função, incluindo o prefixo do fornecedor de identidade (como idpprefix-paul@example.com). Este tem de corresponder ao USERNAME exportado.
      2. 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

  1. Inicie sessão na consola do GDC.
  2. No menu de navegação, clique em Identidade e acesso > Acesso.
  3. Na lista Membros autorizados, selecione um membro.
  4. Clique em Remover membro.
  5. Quando lhe for pedido, clique em Remover membro para confirmar.

gdcloud

  1. Certifique-se de que tem a CLI gcloud instalada.

  2. Inicie sessão com o comando gdcloud auth login para autenticar com o seu fornecedor de identidade. Para mais informações, consulte a autenticação da CLI gdcloud.

  3. 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/ROLE
      

      Substitua 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: o ClusterRole, o Role ou o OrganizationRole para 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 (como project-creator).
    • Remova associações de funções para um projeto:

      gdcloud projects remove-iam-policy-binding PROJECT \
        --member=USER_ACCOUNT \
        --role=ROLE_TYPE/ROLE
      

      Substitua 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: o Role ou o ProjectRole para 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 (como project-viewer).

API

  1. Exporte a credencial do utilizador que usa:

    export YOUR_IAM_ADMIN_KUBECONFIG=YOUR_IAM_ADMIN_KUBECONFIG
    
  2. Exporte 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_EMAIL
    
  3. Exporte o espaço de nomes onde a associação está a ser removida:

    export BINDING_NAMESPACE=BINDING_NAMESPACE
    
  4. Elimine o ClusterRoleBinding, o RoleBinding, o ProjectRoleBinding ou o OrganizationRoleBinding para revogar a autorização concedida à conta de utilizador:

    • Remova o ClusterRoleBinding de uma conta de utilizador:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete clusterrolebinding ${USERNAME}-pa
      
    • Remova o RoleBinding de uma conta de utilizador:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete rolebinding ${USERNAME}-pa \
      --namespace=${BINDING_NAMESPACE}
      
    • Remova o ProjectRoleBinding de uma conta de utilizador:

      kubectl --kubeconfig ${YOUR_IAM_ADMIN_KUBECONFIG} \
      delete projectrolebinding ${USERNAME}-pa \
      --namespace=${BINDING_NAMESPACE}
      
    • Remova o OrganizationRoleBinding de 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:

  1. 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).

  2. Revogue o acesso do utilizador:

    gdcloud admin auth revoke --accounts USER_EMAIL
    

    Substitua 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.com
    

    Neste exemplo, a variável NUMBER refere-se ao número de sessões ativas que o utilizador teve.

  3. 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