Faça a gestão do acesso a projetos, pastas e organizações

Esta página descreve como conceder, alterar e revogar o acesso a projetos, pastas e organizações. Quando concede acesso a projetos, pastas e organizações, também concede acesso aos recursos no respetivo interior.

Para saber como gerir o acesso a outros recursos, consulte os seguintes guias:

Na gestão de identidade e de acesso (IAM), o acesso é concedido através de políticas de autorização, também conhecidas como políticas de IAM. Uma política de permissão está anexada a um recursoTrusted Cloud by S3NS . Cada política de autorização contém uma coleção de associações de funções que associam um ou mais responsáveis, como utilizadores ou contas de serviço, a uma função do IAM. Estas associações de funções concedem as funções especificadas aos principais, tanto no recurso ao qual a política de autorização está anexada como em todos os descendentes desse recurso. Para mais informações sobre as políticas de autorização, consulte o artigo Compreender as políticas de autorização.

Pode gerir o acesso a projetos, pastas e organizações com a Trusted Cloud consola, a Google Cloud CLI, a API REST ou as bibliotecas de cliente do Resource Manager.

Antes de começar

Funções de IAM necessárias

Quando cria um projeto, uma pasta ou uma organização, é-lhe automaticamente concedido um papel que lhe permite gerir o acesso a esse recurso. Para mais informações, consulte as Políticas predefinidas.

Se não criou o projeto, a pasta ou a organização, certifique-se de que tem as funções necessárias para gerir o acesso a esse recurso.

Para receber as autorizações de que precisa para gerir o acesso a um projeto, uma pasta ou uma organização, peça ao seu administrador para lhe conceder as seguintes funções do IAM no recurso para o qual quer gerir o acesso (projeto, pasta ou organização):

Estas funções predefinidas contêm as autorizações necessárias para gerir o acesso a um projeto, uma pasta ou uma organização. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para gerir o acesso a um projeto, uma pasta ou uma organização:

  • Para gerir o acesso a projetos:
    • resourcemanager.projects.getIamPolicy
    • resourcemanager.projects.setIamPolicy
  • Para gerir o acesso a pastas:
    • resourcemanager.folders.getIamPolicy
    • resourcemanager.folders.setIamPolicy
  • Para gerir o acesso a organizações:
    • resourcemanager.organizations.getIamPolicy
    • resourcemanager.organizations.setIamPolicy

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Veja o acesso atual

Pode ver quem tem acesso ao seu projeto, pasta ou organização através da consola, da CLI gcloud, da API REST ou das bibliotecas de cliente do Resource Manager. Trusted Cloud

Consola

  1. Na Trusted Cloud consola, aceda à página IAM.

    Aceda ao IAM

  2. Selecione um projeto, uma pasta ou uma organização.

    A Trusted Cloud consola lista todos os responsáveis aos quais foram concedidas funções no seu projeto, pasta ou organização. Esta lista inclui os principais que herdaram funções no recurso de recursos principais. Para mais informações sobre a herança de políticas, consulte o artigo Herança de políticas e a hierarquia de recursos.

  3. Opcional: para ver concessões de funções para agentes de serviço, selecione a caixa de verificação Incluir concessões de funções fornecidas pela S3NSGoogle.

gcloud

  1. In the Trusted Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Para ver quem tem acesso ao seu projeto, pasta ou organização, obtenha a política de autorização para o recurso. Para saber como interpretar as políticas de permissão, consulte o artigo Compreender as políticas de permissão.

    Para obter a política de permissão para o recurso, execute o comando get-iam-policy para o recurso:

    gcloud RESOURCE_TYPE get-iam-policy RESOURCE_ID --format=FORMAT > PATH

    Indique os seguintes valores:

    • RESOURCE_TYPE: o tipo de recurso ao qual quer ver o acesso. Use um destes valores: projects, resource-manager folders ou organizations.

    • RESOURCE_ID: o ID do seu Trusted Cloud projeto, pasta ou organização. Os IDs dos projetos são alfanuméricos, como my-project. Os IDs das pastas e das organizações são numéricos, como 123456789012.

    • FORMAT: o formato pretendido para a política. Use json ou yaml.

    • PATH: o caminho para um novo ficheiro de saída para a política.

    Por exemplo, o comando seguinte obtém a política para o projeto my-project e guarda-a no seu diretório principal no formato JSON:

    gcloud projects get-iam-policy my-project --format=json > ~/policy.json
  3. C#

    Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

    Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.

    Para ver quem tem acesso ao seu projeto, pasta ou organização, obtenha a política de autorização para o recurso. Para saber como interpretar as políticas de permissão, consulte o artigo Compreender as políticas de permissão.

    O exemplo seguinte mostra como obter a política de permissão para um projeto. Para saber como obter a política de autorização para uma pasta ou uma organização, reveja a documentação da biblioteca de cliente do Resource Manager para a sua linguagem de programação.

    
    using Google.Apis.Auth.OAuth2;
    using Google.Apis.CloudResourceManager.v1;
    using Google.Apis.CloudResourceManager.v1.Data;
    
    public partial class AccessManager
    {
        public static Policy GetPolicy(string projectId)
        {
            var credential = GoogleCredential.GetApplicationDefault()
                .CreateScoped(CloudResourceManagerService.Scope.CloudPlatform);
            var service = new CloudResourceManagerService(
                new CloudResourceManagerService.Initializer
                {
                    HttpClientInitializer = credential
                });
    
            var policy = service.Projects.GetIamPolicy(new GetIamPolicyRequest(),
                projectId).Execute();
            return policy;
        }
    }
    

    Java

    Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

    Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.

    Para ver quem tem acesso ao seu projeto, pasta ou organização, obtenha a política de autorização para o recurso. Para saber como interpretar as políticas de permissão, consulte o artigo Compreender as políticas de permissão.

    O exemplo seguinte mostra como obter a política de permissão para um projeto. Para saber como obter a política de autorização para uma pasta ou uma organização, reveja a documentação da biblioteca de cliente do Resource Manager para a sua linguagem de programação.

    import com.google.cloud.resourcemanager.v3.ProjectsClient;
    import com.google.iam.admin.v1.ProjectName;
    import com.google.iam.v1.GetIamPolicyRequest;
    import com.google.iam.v1.Policy;
    import java.io.IOException;
    
    public class GetProjectPolicy {
      public static void main(String[] args) throws IOException {
        // TODO(developer): Replace the variables before running the sample.
        // TODO: Replace with your project ID.
        String projectId = "your-project-id";
    
        getProjectPolicy(projectId);
      }
    
      // Gets a project's policy.
      public static Policy getProjectPolicy(String projectId) throws IOException {
        // Initialize client that will be used to send requests.
        // This client only needs to be created once, and can be reused for multiple requests.
        try (ProjectsClient projectsClient = ProjectsClient.create()) {
          GetIamPolicyRequest request = GetIamPolicyRequest.newBuilder()
                  .setResource(ProjectName.of(projectId).toString())
                  .build();
          return projectsClient.getIamPolicy(request);
        }
      }
    }

    Python

    Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

    Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.

    Para ver quem tem acesso ao seu projeto, pasta ou organização, obtenha a política de autorização para o recurso. Para saber como interpretar as políticas de permissão, consulte o artigo Compreender as políticas de permissão.

    O exemplo seguinte mostra como obter a política de permissão para um projeto. Para saber como obter a política de autorização para uma pasta ou uma organização, reveja a documentação da biblioteca de cliente do Resource Manager para a sua linguagem de programação.

    from google.cloud import resourcemanager_v3
    from google.iam.v1 import iam_policy_pb2, policy_pb2
    
    
    def get_project_policy(project_id: str) -> policy_pb2.Policy:
        """Get policy for project.
    
        project_id: ID or number of the Google Cloud project you want to use.
        """
    
        client = resourcemanager_v3.ProjectsClient()
        request = iam_policy_pb2.GetIamPolicyRequest()
        request.resource = f"projects/{project_id}"
    
        policy = client.get_iam_policy(request)
        print(f"Policy retrieved: {policy}")
    
        return policy

    REST

    Para ver quem tem acesso ao seu projeto, pasta ou organização, obtenha a política de autorização para o recurso. Para saber como interpretar as políticas de permissão, consulte o artigo Compreender as políticas de permissão.

    O método getIamPolicy da API Resource Manager obtém a política de autorização de um projeto, uma pasta ou uma organização.

    Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

    • API_VERSION: a versão da API a usar. Para projetos e organizações, use v1. Para pastas, use v2.
    • RESOURCE_TYPE: o tipo de recurso cuja política quer gerir. Use o valor projects, folders ou organizations.
    • RESOURCE_ID: o ID do Trusted Cloud projeto, da organização ou da pasta. Os IDs dos projetos são strings alfanuméricas, como my-project. Os IDs das pastas e das organizações são numéricos, como 123456789012.
    • POLICY_VERSION: a versão da política a ser devolvida. Os pedidos devem especificar a versão da política mais recente, que é a versão 3 da política. Consulte o artigo Especificar uma versão da política ao obter uma política para ver detalhes.

    Método HTTP e URL:

    POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:getIamPolicy

    Corpo JSON do pedido:

    {
      "options": {
        "requestedPolicyVersion": POLICY_VERSION
      }
    }
    

    Para enviar o seu pedido, expanda uma destas opções:

    A resposta contém a política de autorização do recurso. Por exemplo:

    {
      "version": 1,
      "etag": "BwWKmjvelug=",
      "bindings": [
        {
          "role": "roles/owner",
          "members": [
            "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
          ]
        }
      ]
    }
    

Conceda ou revogue uma única função de IAM

Pode usar a Trusted Cloud consola e a CLI gcloud para conceder ou revogar rapidamente uma única função para um único principal, sem editar diretamente a política de autorização do recurso.Os tipos comuns de principais incluem contas de serviço, identidades em conjuntos de identidades da força de trabalho e identidades em conjuntos de identidades de cargas de trabalho. Para ver uma lista de todos os tipos de diretor, consulte Tipos de diretor.

Em geral, as alterações às políticas entram em vigor no prazo de 2 minutos. No entanto, em alguns casos, a propagação das alterações por todo o sistema pode demorar 7 minutos ou mais.

Se precisar de ajuda para identificar a função predefinida mais adequada, consulte o artigo Encontre as funções predefinidas certas.

Conceda uma única função de IAM

Para conceder uma única função a um principal, faça o seguinte:

Consola

  1. Na Trusted Cloud consola, aceda à página IAM.

    Aceda ao IAM

  2. Selecione um projeto, uma pasta ou uma organização.

  3. Selecione um principal ao qual atribuir uma função:

    • Para conceder uma função a um principal que já tenha outras funções no recurso, encontre uma linha que contenha o principal, clique em Editar principal nessa linha e clique em Adicionar outra função.

      Para conceder uma função a um agente de serviço, selecione a caixa de verificação Incluir concessões de funções fornecidas pela S3NS para ver o respetivo endereço de email.

    • Para conceder uma função a um principal que não tenha funções existentes no recurso, clique em Conceder acesso e, de seguida, introduza um identificador principal, por exemplo, //iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com ou //iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com.

  4. Selecione uma função a conceder na lista pendente. Para as melhores práticas de segurança, escolha uma função que inclua apenas as autorizações de que o seu principal precisa.

  5. Opcional: adicione uma condição à função.

  6. Clique em Guardar. O principal recebe a função no recurso.

Para conceder uma função a um principal para mais do que um projeto, pasta ou organização, faça o seguinte:

  1. Na Trusted Cloud consola, aceda à página Gerir recursos.

    Aceder a Gerir recursos

  2. Selecione todos os recursos para os quais quer conceder autorizações.

  3. Se o painel de informações não estiver visível, clique em Mostrar painel de informações. Em seguida, clique em Autorizações.

  4. Selecione um principal ao qual atribuir uma função:

    • Para conceder uma função a um principal que já tenha outras funções, encontre uma linha que contenha o principal, clique em Editar principal nessa linha e clique em Adicionar outra função.
    • Para conceder uma função a um principal que ainda não tenha outras funções, clique em Adicionar principal, em seguida, introduza um identificador principal, por exemplo, //iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com ou //iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com.
  5. Selecione uma função a conceder na lista pendente.

  6. Opcional: adicione uma condição à função.

  7. Clique em Guardar. Ao principal é concedida a função selecionada em cada um dos recursos selecionados.

gcloud

.
  1. In the Trusted Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. O comando add-iam-policy-binding permite-lhe conceder rapidamente uma função a um principal.

    Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

    • RESOURCE_TYPE: O tipo de recurso ao qual quer gerir o acesso. Use projects, resource-manager folders ou organizations.

    • RESOURCE_ID: o ID do projeto, da pasta ou da organização. Trusted Cloud Os IDs dos projetos são alfanuméricos, como my-project. Os IDs das pastas e das organizações são numéricos, como 123456789012.

    • PRINCIPAL: um identificador do principal ou membro, que normalmente tem o seguinte formato: PRINCIPAL_TYPE:ID. Por exemplo, principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com ou principalSet://iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com. Para ver uma lista completa dos valores que PRINCIPAL pode ter, consulte o artigo Identificadores principais.

    • ROLE_NAME: o nome da função que quer revogar. Use um dos seguintes formatos:

      • Funções predefinidas: roles/SERVICE.IDENTIFIER
      • Funções personalizadas ao nível do projeto: projects/PROJECT_ID/roles/IDENTIFIER
      • Funções personalizadas ao nível da organização: organizations/ORG_ID/roles/IDENTIFIER

      Para ver uma lista de funções predefinidas, consulte o artigo Compreender as funções.

    • CONDITION: A condição a adicionar à associação de funções. Se não quiser adicionar uma condição, use o valor None. Para mais informações sobre as condições, consulte a vista geral das condições.

    Execute o seguinte comando:

    Linux, macOS ou Cloud Shell

    gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID \
        --member=PRINCIPAL --role=ROLE_NAME \
        --condition=CONDITION

    Windows (PowerShell)

    gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID `
        --member=PRINCIPAL --role=ROLE_NAME `
        --condition=CONDITION

    Windows (cmd.exe)

    gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID ^
        --member=PRINCIPAL --role=ROLE_NAME ^
        --condition=CONDITION

    A resposta contém a política de IAM atualizada.

Revogue uma única função de IAM

Para revogar uma única função de um principal, faça o seguinte:

Consola

  1. Na Trusted Cloud consola, aceda à página IAM.

    Aceda ao IAM

  2. Selecione um projeto, uma pasta ou uma organização.

  3. Procure a linha que contém o principal cujo acesso quer revogar. Em seguida, clique em Editar principal nessa linha.

  4. Clique no botão Eliminar para a função que quer revogar e, de seguida, clique em Guardar.

gcloud

  1. In the Trusted Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Para revogar rapidamente uma função de um utilizador, execute o comando remove-iam-policy-binding:

    gcloud RESOURCE_TYPE remove-iam-policy-binding RESOURCE_ID 
    --member=PRINCIPAL --role=ROLE_NAME

    Indique os seguintes valores:

    • RESOURCE_TYPE: O tipo de recurso ao qual quer gerir o acesso. Use projects, resource-manager folders ou organizations.

    • RESOURCE_ID: o ID do seu Trusted Cloud projeto, pasta ou organização. Os IDs dos projetos são alfanuméricos, como my-project. Os IDs das pastas e das organizações são numéricos, como 123456789012.

    • PRINCIPAL: um identificador do principal ou membro, que normalmente tem o seguinte formato: PRINCIPAL_TYPE:ID. Por exemplo, principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com ou principalSet://iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com.

    • ROLE_NAME: o nome da função que quer revogar. Use um dos seguintes formatos:

      • Funções predefinidas: roles/SERVICE.IDENTIFIER
      • Funções personalizadas ao nível do projeto: projects/PROJECT_ID/roles/IDENTIFIER
      • Funções personalizadas ao nível da organização: organizations/ORG_ID/roles/IDENTIFIER

      Para ver uma lista de funções predefinidas, consulte o artigo Compreender as funções.

    Por exemplo, para revogar a função de criador do projeto da conta de serviço example-service-account@example-project.s3ns-system.iam.gserviceaccount.com para o projeto example-project:

    gcloud projects remove-iam-policy-binding example-project 
    --member=serviceAccount:example-service-account@example-project.s3ns-system.iam.gserviceaccount.com
    --role=roles/resourcemanager.projectCreator

Para ajudar a garantir que não revoga nenhuma função necessária, pode ativar as recomendações de risco de alteração. As recomendações de risco de alteração geram avisos quando tenta revogar funções ao nível do projeto que Trusted Cloud foram identificadas como importantes.

Conceda ou revogue várias funções do IAM através da Trusted Cloud consola

Pode usar a Trusted Cloud consola para conceder e revogar várias funções para um único principal:

  1. Na Trusted Cloud consola, aceda à página IAM.

    Aceda ao IAM

  2. Selecione um projeto, uma pasta ou uma organização.

  3. Selecione o principal cujas funções quer modificar:

    • Para modificar as funções de um principal que já tem funções no recurso, encontre uma linha que contenha o principal, clique em Editar principal nessa linha e clique em Adicionar outra função.

      Para modificar as funções de um agente de serviços, selecione a caixa de verificação Incluir atribuições de funções fornecidas pela Google S3NSpara ver o respetivo endereço de email.

    • Para conceder funções a um principal que não tenha funções no recurso, clique em Conceder acesso e, de seguida, introduza um identificador principal, por exemplo, //iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com ou //iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com.

  4. Modifique as funções do principal:

    • Para conceder uma função a um principal que não tenha funções existentes no recurso, clique em Selecionar uma função e, de seguida, selecione uma função a conceder na lista pendente.
    • Para conceder uma função adicional ao principal, clique em Adicionar outra função e, em seguida, selecione uma função a conceder na lista pendente.
    • Para substituir uma das funções do principal por uma função diferente, clique na função existente e, de seguida, escolha uma função diferente para conceder na lista pendente.
    • Para revogar uma das funções do principal, clique no botão Eliminar para cada função que quer revogar.

    Também pode adicionar uma condição a uma função, modificar a condição de uma função ou remover a condição de uma função.

  5. Clique em Guardar.

Conceda ou revogue várias funções do IAM por programação

Para fazer alterações de acesso em grande escala que envolvam a concessão e a revogação de várias funções para vários responsáveis, use o padrão read-modify-write para atualizar a política de autorização do recurso:

  1. Leia a política de permissão atual chamando getIamPolicy().
  2. Edite a política de autorização, através de um editor de texto ou programaticamente, para adicionar ou remover quaisquer responsáveis ou associações de funções.
  3. Escreva a política de permissão atualizada chamando setIamPolicy().

Pode usar a CLI gcloud, a API REST ou as bibliotecas de cliente do Resource Manager para atualizar a política de permissão.

Em geral, as alterações às políticas entram em vigor no prazo de 2 minutos. No entanto, em alguns casos, a propagação das alterações por todo o sistema pode demorar 7 minutos ou mais.

Obtenha a política de permissão atual

gcloud

  1. In the Trusted Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Para obter a política de permissão para o recurso, execute o comando get-iam-policy para o recurso:

    gcloud RESOURCE_TYPE get-iam-policy RESOURCE_ID --format=FORMAT > PATH

    Indique os seguintes valores:

    • RESOURCE_TYPE: O tipo de recurso para o qual quer obter a política de autorização. Use um dos seguintes valores: projects, resource-manager folders ou organizations.

    • RESOURCE_ID: o ID do seu Trusted Cloud projeto, pasta ou organização. Os IDs dos projetos são alfanuméricos, como my-project. Os IDs das pastas e das organizações são numéricos, como 123456789012.

    • FORMAT: o formato pretendido para a política de permissão. Use json ou yaml.

    • PATH: o caminho para um novo ficheiro de saída para a política de permissão.

    Por exemplo, o comando seguinte obtém a política de autorização para o projeto my-project e guarda-a no seu diretório principal no formato JSON:

    gcloud projects get-iam-policy my-project --format json > ~/policy.json
  3. C#

    Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

    Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.

    O exemplo seguinte mostra como obter a política de permissão para um projeto. Para saber como obter a política de autorização de uma pasta ou uma organização, reveja a documentação da biblioteca do cliente do Resource Manager para o seu idioma de programação.

    
    using Google.Apis.Auth.OAuth2;
    using Google.Apis.CloudResourceManager.v1;
    using Google.Apis.CloudResourceManager.v1.Data;
    
    public partial class AccessManager
    {
        public static Policy GetPolicy(string projectId)
        {
            var credential = GoogleCredential.GetApplicationDefault()
                .CreateScoped(CloudResourceManagerService.Scope.CloudPlatform);
            var service = new CloudResourceManagerService(
                new CloudResourceManagerService.Initializer
                {
                    HttpClientInitializer = credential
                });
    
            var policy = service.Projects.GetIamPolicy(new GetIamPolicyRequest(),
                projectId).Execute();
            return policy;
        }
    }
    

    Java

    Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

    Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.

    O exemplo seguinte mostra como obter a política de permissão para um projeto. Para saber como obter a política de autorização de uma pasta ou uma organização, reveja a documentação da biblioteca do cliente do Resource Manager para o seu idioma de programação.

    import com.google.cloud.resourcemanager.v3.ProjectsClient;
    import com.google.iam.admin.v1.ProjectName;
    import com.google.iam.v1.GetIamPolicyRequest;
    import com.google.iam.v1.Policy;
    import java.io.IOException;
    
    public class GetProjectPolicy {
      public static void main(String[] args) throws IOException {
        // TODO(developer): Replace the variables before running the sample.
        // TODO: Replace with your project ID.
        String projectId = "your-project-id";
    
        getProjectPolicy(projectId);
      }
    
      // Gets a project's policy.
      public static Policy getProjectPolicy(String projectId) throws IOException {
        // Initialize client that will be used to send requests.
        // This client only needs to be created once, and can be reused for multiple requests.
        try (ProjectsClient projectsClient = ProjectsClient.create()) {
          GetIamPolicyRequest request = GetIamPolicyRequest.newBuilder()
                  .setResource(ProjectName.of(projectId).toString())
                  .build();
          return projectsClient.getIamPolicy(request);
        }
      }
    }

    Python

    Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

    Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.

    O exemplo seguinte mostra como obter a política de permissão para um projeto. Para saber como obter a política de autorização de uma pasta ou uma organização, reveja a documentação da biblioteca do cliente do Resource Manager para o seu idioma de programação.

    from google.cloud import resourcemanager_v3
    from google.iam.v1 import iam_policy_pb2, policy_pb2
    
    
    def get_project_policy(project_id: str) -> policy_pb2.Policy:
        """Get policy for project.
    
        project_id: ID or number of the Google Cloud project you want to use.
        """
    
        client = resourcemanager_v3.ProjectsClient()
        request = iam_policy_pb2.GetIamPolicyRequest()
        request.resource = f"projects/{project_id}"
    
        policy = client.get_iam_policy(request)
        print(f"Policy retrieved: {policy}")
    
        return policy

    REST

    O método getIamPolicy da API Resource Manager obtém a política de autorização de um projeto, uma pasta ou uma organização.

    Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

    • API_VERSION: a versão da API a usar. Para projetos e organizações, use v1. Para pastas, use v2.
    • RESOURCE_TYPE: o tipo de recurso cuja política quer gerir. Use o valor projects, folders ou organizations.
    • RESOURCE_ID: o ID do Trusted Cloud projeto, da organização ou da pasta. Os IDs dos projetos são strings alfanuméricas, como my-project. Os IDs das pastas e das organizações são numéricos, como 123456789012.
    • POLICY_VERSION: a versão da política a ser devolvida. Os pedidos devem especificar a versão da política mais recente, que é a versão 3 da política. Consulte o artigo Especificar uma versão da política ao obter uma política para ver detalhes.

    Método HTTP e URL:

    POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:getIamPolicy

    Corpo JSON do pedido:

    {
      "options": {
        "requestedPolicyVersion": POLICY_VERSION
      }
    }
    

    Para enviar o seu pedido, expanda uma destas opções:

    A resposta contém a política de autorização do recurso. Por exemplo:

    {
      "version": 1,
      "etag": "BwWKmjvelug=",
      "bindings": [
        {
          "role": "roles/owner",
          "members": [
            "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
          ]
        }
      ]
    }
    

    Guarde a resposta num ficheiro do tipo adequado (json ou yaml).

Modifique a política de autorização

Modifique programaticamente ou através de um editor de texto a cópia local da política de autorização do recurso para refletir as funções que quer conceder ou revogar.

Para ajudar a evitar a substituição de outras alterações, não edite nem remova o campo etag da política de autorização. O campo etag identifica o estado atual da política de autorização. Quando define a política de permissão atualizada, o IAM compara o valor etag no pedido com o etag existente e só escreve a política de permissão se os valores corresponderem.

Para editar as funções que uma política de autorização concede, tem de editar as associações de funções na política de autorização. As associações de funções têm o seguinte formato:

{
  "role": "ROLE_NAME",
  "members": [
    "PRINCIPAL_1",
    "PRINCIPAL_2",
    ...
    "PRINCIPAL_N"
  ],
  "conditions:" {
    CONDITIONS
  }
}

Os marcadores de posição têm os seguintes valores:

  • ROLE_NAME: o nome da função que quer conceder. Use um dos seguintes formatos:

    • Funções predefinidas: roles/SERVICE.IDENTIFIER
    • Funções personalizadas ao nível do projeto: projects/PROJECT_ID/roles/IDENTIFIER
    • Funções personalizadas ao nível da organização: organizations/ORG_ID/roles/IDENTIFIER

    Para ver uma lista das funções predefinidas, consulte o artigo Compreender as funções.

  • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: identificadores dos principais aos quais quer conceder a função.

    Normalmente, os identificadores principais têm o seguinte formato: PRINCIPAL-TYPE:ID. Por exemplo, principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com ou principalSet://iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com. Para ver uma lista completa dos valores que PRINCIPAL pode ter, consulte Identificadores principais.

  • CONDITIONS: opcional. Quaisquer condições que especifiquem quando o acesso é concedido.

Conceda uma função de IAM

Para conceder funções aos seus principais, modifique as associações de funções na política de autorização. Para saber que funções pode conceder, consulte o artigo Compreender as funções ou ver as funções concedíveis para o recurso. Se precisar de ajuda para identificar as funções predefinidas mais adequadas, consulte o artigo Encontre as funções predefinidas certas.

Opcionalmente, pode usar condições para conceder funções apenas quando determinados requisitos são cumpridos.

Para conceder uma função que já está incluída na política de autorização, adicione o principal a uma associação de funções existente:

gcloud

Edite a política de autorização devolvida adicionando o principal a uma associação de funções existente. Esta alteração não entra em vigor até que defina a política de autorização atualizada.

Por exemplo, imagine que a política de permissão contém a seguinte associação de funções, que concede a função de revisor de segurança (roles/iam.securityReviewer) a Kai:

{
  "role": "roles/iam.securityReviewer",
  "members": [
    "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/kai@example.com"
  ]
}

Para conceder essa mesma função a Raha, adicione o identificador principal de Raha à associação de funções existente:

{
  "role": "roles/iam.securityReviewer",
  "members": [
    "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/kai@example.com",
    "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/raha@example.com"
  ]
}

C#

Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.


using System.Linq;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy AddMember(Policy policy, string role, string member)
    {
        var binding = policy.Bindings.First(x => x.Role == role);
        binding.Members.Add(member);
        return policy;
    }
}

Go

Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.

import (
	"fmt"
	"io"

	"google.golang.org/api/iam/v1"
)

// addMember adds a member to a role binding.
func addMember(w io.Writer, policy *iam.Policy, role, member string) {
	for _, binding := range policy.Bindings {
		if binding.Role != role {
			continue
		}
		for _, m := range binding.Members {
			if m != member {
				continue
			}
			fmt.Fprintf(w, "Role %q found. Member already exists.\n", role)
			return
		}
		binding.Members = append(binding.Members, member)
		fmt.Fprintf(w, "Role %q found. Member added.\n", role)
		return
	}
	fmt.Fprintf(w, "Role %q not found. Member not added.\n", role)
}

Java

Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.

import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import java.util.ArrayList;
import java.util.List;

public class AddMember {
  public static void main(String[] args) {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your policy, GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();
    // TODO: Replace with your role.
    String role = "roles/existing-role";
    // TODO: Replace with your principal.
    // For examples, see https://cloud.google.com/iam/docs/principal-identifiers
    String member = "principal-id";

    addMember(policy, role, member);
  }

  // Adds a principal to a pre-existing role.
  public static Policy addMember(Policy policy, String role, String member) {
    List<Binding> newBindingsList = new ArrayList<>();

    for (Binding b : policy.getBindingsList()) {
      if (b.getRole().equals(role)) {
        newBindingsList.add(b.toBuilder().addMembers(member).build());
      } else {
        newBindingsList.add(b);
      }
    }

    // Update the policy to add the principal.
    Policy updatedPolicy = policy.toBuilder()
            .clearBindings()
            .addAllBindings(newBindingsList)
            .build();

    System.out.println("Added principal: " + updatedPolicy.getBindingsList());

    return updatedPolicy;
  }
}

Python

Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.

from google.iam.v1 import policy_pb2
from snippets.get_policy import get_project_policy
from snippets.set_policy import set_project_policy


def modify_policy_add_principal(
    project_id: str, role: str, principal: str
) -> policy_pb2.Policy:
    """Add a principal to certain role in project policy.

    project_id: ID or number of the Google Cloud project you want to use.
    role: role to which principal need to be added.
    principal: The principal requesting access.

    For principal ID formats, see https://cloud.google.com/iam/docs/principal-identifiers
    """
    policy = get_project_policy(project_id)

    for bind in policy.bindings:
        if bind.role == role:
            bind.members.append(principal)
            break

    return set_project_policy(project_id, policy)

REST

Edite a política de autorização devolvida adicionando o principal a uma associação de funções existente. Esta alteração não entra em vigor até que defina a política de autorização atualizada.

Por exemplo, imagine que a política de permissão contém a seguinte associação de funções, que concede a função de revisor de segurança (roles/iam.securityReviewer) a Kai:

{
  "role": "roles/iam.securityReviewer",
  "members": [
    "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/kai@example.com"
  ]
}

Para conceder essa mesma função a Raha, adicione o identificador principal de Raha à associação de funções existente:

{
  "role": "roles/iam.securityReviewer",
  "members": [
    "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/kai@example.com",
    "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/raha@example.com"
  ]
}

Para conceder uma função que ainda não esteja incluída na política de autorização, adicione uma nova associação de funções:

gcloud

Edite a política de autorização adicionando uma nova associação de funções que conceda a função ao principal. Esta alteração não entra em vigor até que defina a política de autorização atualizada.

Por exemplo, para conceder a função Compute Storage Admin (roles/compute.storageAdmin) a Raha, adicione a seguinte associação de funções à matriz bindings para a política de autorização:

{
  "role": "roles/compute.storageAdmin",
  "members": [
    "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/raha@example.com"
  ]
}

C#

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API C# IAM.

Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.

Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.


using System.Collections.Generic;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy AddBinding(Policy policy, string role, string member)
    {
        var binding = new Binding
        {
            Role = role,
            Members = new List<string> { member }
        };
        policy.Bindings.Add(binding);
        return policy;
    }
}

Java

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API Java IAM.

Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.

Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.


import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import java.util.Collections;
import java.util.List;

public class AddBinding {
  public static void main(String[] args) {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your policy: GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();
    // TODO: Replace with your role.
    String role = "roles/role-to-add";
    // TODO: Replace with your principals.
    // For examples, see https://cloud.google.com/iam/docs/principal-identifiers
    List<String> members = Collections.singletonList("principal-id");

    addBinding(policy, role, members);
  }

  // Adds a principals to a role.
  public static Policy addBinding(Policy policy, String role, List<String> members) {
    Binding binding = Binding.newBuilder()
            .setRole(role)
            .addAllMembers(members)
            .build();

    // Update bindings for the policy.
    Policy updatedPolicy = policy.toBuilder().addBindings(binding).build();

    System.out.println("Added binding: " + updatedPolicy.getBindingsList());

    return updatedPolicy;
  }
}

Python

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API Python IAM.

Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.

Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.

def modify_policy_add_role(policy: dict, role: str, principal: str) -> dict:
    """Adds a new role binding to a policy."""

    binding = {"role": role, "members": [principal]}
    policy["bindings"].append(binding)
    print(policy)
    return policy

REST

Edite a política de autorização adicionando uma nova associação de funções que conceda a função ao principal. Esta alteração não entra em vigor até que defina a política de autorização atualizada.

Por exemplo, para conceder a função Compute Storage Admin (roles/compute.storageAdmin) a Raha, adicione a seguinte associação de funções à matriz bindings para a política de autorização:

{
  "role": "roles/compute.storageAdmin",
  "members": [
    "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/raha@example.com"
  ]
}

Só pode conceder funções relacionadas com serviços de API ativados. Se um serviço, como o Compute Engine, não estiver ativo, não pode conceder funções exclusivamente relacionadas com o Compute Engine. Para mais informações, consulte o artigo Ative e desative APIs.

Existem algumas restrições únicas quando concede autorizações em projetos, especialmente quando concede a função de proprietário (roles/owner). Consulte a projects.setIamPolicy()documentação de referência para mais informações.

Revogue uma função de IAM

Para revogar uma função, remova o principal da associação de funções. Se não existirem outros principais na associação de funções, remova toda a associação de funções.

gcloud

Revogue uma função editando a política de autorização JSON ou YAML devolvida pelo comando get-iam-policy. Esta alteração não entra em vigor até que defina a política de autorização atualizada.

Para revogar uma função de um principal, elimine o principal ou a associação da matriz bindings para a política de autorização.

C#

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API C# IAM.

Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.

Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.


using System.Linq;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy RemoveMember(Policy policy, string role, string member)
    {
        try
        {
            var binding = policy.Bindings.First(x => x.Role == role);
            if (binding.Members.Count != 0 && binding.Members.Contains(member))
            {
                binding.Members.Remove(member);
            }
            if (binding.Members.Count == 0)
            {
                policy.Bindings.Remove(binding);
            }
            return policy;
        }
        catch (System.InvalidOperationException e)
        {
            System.Diagnostics.Debug.WriteLine("Role does not exist in policy: \n" + e.ToString());
            return policy;
        }
    }
}

Go

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API Go IAM.

Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.

Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.

import (
	"fmt"
	"io"

	"google.golang.org/api/iam/v1"
)

// removeMember removes a member from a role binding.
func removeMember(w io.Writer, policy *iam.Policy, role, member string) {
	bindings := policy.Bindings
	bindingIndex, memberIndex := -1, -1
	for bIdx := range bindings {
		if bindings[bIdx].Role != role {
			continue
		}
		bindingIndex = bIdx
		for mIdx := range bindings[bindingIndex].Members {
			if bindings[bindingIndex].Members[mIdx] != member {
				continue
			}
			memberIndex = mIdx
			break
		}
	}
	if bindingIndex == -1 {
		fmt.Fprintf(w, "Role %q not found. Member not removed.\n", role)
		return
	}
	if memberIndex == -1 {
		fmt.Fprintf(w, "Role %q found. Member not found.\n", role)
		return
	}

	members := removeIdx(bindings[bindingIndex].Members, memberIndex)
	bindings[bindingIndex].Members = members
	if len(members) == 0 {
		bindings = removeIdx(bindings, bindingIndex)
		policy.Bindings = bindings
	}
	fmt.Fprintf(w, "Role %q found. Member removed.\n", role)
}

// removeIdx removes arr[idx] from arr.
func removeIdx[T any](arr []T, idx int) []T {
	return append(arr[:idx], arr[idx+1:]...)
}

Java

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API Java IAM.

Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.

Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.

import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class RemoveMember {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your policy, GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();
    // TODO: Replace with your role.
    String role = "roles/existing-role";
    // TODO: Replace with your principal.
    // For examples, see https://cloud.google.com/iam/docs/principal-identifiers
    String member = "principal-id";

    removeMember(policy, role, member);
  }

  // Removes principal from a role; removes binding if binding contains no members.
  public static Policy removeMember(Policy policy, String role, String member) {
    // Creating new builder with all values copied from origin policy
    Policy.Builder policyBuilder = policy.toBuilder();

    // Getting binding with suitable role.
    Binding binding = null;
    for (Binding b : policy.getBindingsList()) {
      if (b.getRole().equals(role)) {
        binding = b;
        break;
      }
    }

    if (binding != null && binding.getMembersList().contains(member)) {
      List<String> newMemberList = new ArrayList<>(binding.getMembersList());
      // Removing principal from the role
      newMemberList.remove(member);

      System.out.println("Member " + member + " removed from " + role);

      // Adding all remaining principals to create new binding
      Binding newBinding = binding.toBuilder()
              .clearMembers()
              .addAllMembers(newMemberList)
              .build();

      List<Binding> newBindingList = new ArrayList<>(policyBuilder.getBindingsList());

      // Removing old binding to replace with new one
      newBindingList.remove(binding);

      // If binding has no more members, binding will not be added
      if (!newBinding.getMembersList().isEmpty()) {
        newBindingList.add(newBinding);
      }

      // Update the policy to remove the principal.
      policyBuilder.clearBindings()
              .addAllBindings(newBindingList);
    }

    Policy updatedPolicy = policyBuilder.build();

    System.out.println("Exising principals: " + updatedPolicy.getBindingsList());

    return updatedPolicy;
  }
}

Python

Para saber como instalar e usar a biblioteca cliente para a IAM, consulte o artigo Bibliotecas cliente da IAM. Para mais informações, consulte a documentação de referência da API Python IAM.

Para se autenticar no IAM, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN environment como s3nsapis.fr.

Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.

from google.iam.v1 import policy_pb2
from snippets.get_policy import get_project_policy
from snippets.set_policy import set_project_policy


def modify_policy_remove_principal(
    project_id: str, role: str, principal: str
) -> policy_pb2.Policy:
    """Remove a principal from certain role in project policy.

    project_id: ID or number of the Google Cloud project you want to use.
    role: role to revoke.
    principal: The principal to revoke access from.

    For principal ID formats, see https://cloud.google.com/iam/docs/principal-identifiers
    """
    policy = get_project_policy(project_id)

    for bind in policy.bindings:
        if bind.role == role:
            if principal in bind.members:
                bind.members.remove(principal)
            break

    return set_project_policy(project_id, policy, False)

REST

Revogue uma função editando a política de autorização JSON ou YAML devolvida pelo comando get-iam-policy. Esta alteração não entra em vigor até que defina a política de autorização atualizada.

Para revogar uma função de um principal, elimine o principal ou a associação da matriz bindings para a política de autorização.

Defina a política de permissão

Depois de modificar a política de autorização para conceder e revogar funções, chame setIamPolicy() para atualizar a política.

gcloud

  1. In the Trusted Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Para definir a política de permissão para o recurso, execute o comando set-iam-policy para o recurso:

    gcloud RESOURCE_TYPE set-iam-policy RESOURCE_ID PATH

    Indique os seguintes valores:

    • RESOURCE_TYPE: o tipo de recurso para o qual quer definir a política de permissão. Use um dos seguintes valores: projects, resource-manager folders ou organizations.

    • RESOURCE_ID: o ID do seu Trusted Cloud projeto, pasta ou organização. Os IDs dos projetos são alfanuméricos, como my-project. Os IDs das pastas e das organizações são numéricos, como 123456789012.

    • PATH: O caminho para um ficheiro que contém a nova política de autorização.

    A resposta contém a política de permissão atualizada.

    Por exemplo, o seguinte comando define a política de permissão armazenada em policy.json como a política de permissão para o projeto my-project:

    gcloud projects set-iam-policy my-project ~/policy.json
  3. C#

    
    using Google.Apis.Auth.OAuth2;
    using Google.Apis.CloudResourceManager.v1;
    using Google.Apis.CloudResourceManager.v1.Data;
    
    public partial class AccessManager
    {
        public static Policy SetPolicy(string projectId, Policy policy)
        {
            var credential = GoogleCredential.GetApplicationDefault()
                .CreateScoped(CloudResourceManagerService.Scope.CloudPlatform);
            var service = new CloudResourceManagerService(
                new CloudResourceManagerService.Initializer
                {
                    HttpClientInitializer = credential
                });
    
            return service.Projects.SetIamPolicy(new SetIamPolicyRequest
            {
                Policy = policy
            }, projectId).Execute();
        }
    }
    

    Java

    Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

    Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.

    O exemplo seguinte mostra como definir a política de permissão para um projeto. Para saber como definir a política de permissão de uma pasta ou uma organização, reveja a documentação da biblioteca cliente do Resource Managerpara o seu idioma de programação.

    import com.google.cloud.resourcemanager.v3.ProjectsClient;
    import com.google.iam.admin.v1.ProjectName;
    import com.google.iam.v1.Policy;
    import com.google.iam.v1.SetIamPolicyRequest;
    import com.google.protobuf.FieldMask;
    import java.io.IOException;
    import java.util.Arrays;
    import java.util.List;
    
    public class SetProjectPolicy {
      public static void main(String[] args) throws IOException {
        // TODO(developer): Replace the variables before running the sample.
        // TODO: Replace with your project ID.
        String projectId = "your-project-id";
        // TODO: Replace with your policy, GetPolicy.getPolicy(projectId, serviceAccount).
        Policy policy = Policy.newBuilder().build();
    
        setProjectPolicy(policy, projectId);
      }
    
      // Sets a project's policy.
      public static Policy setProjectPolicy(Policy policy, String projectId)
              throws IOException {
    
        // Initialize client that will be used to send requests.
        // This client only needs to be created once, and can be reused for multiple requests.
        try (ProjectsClient projectsClient = ProjectsClient.create()) {
          List<String> paths = Arrays.asList("bindings", "etag");
          SetIamPolicyRequest request = SetIamPolicyRequest.newBuilder()
                  .setResource(ProjectName.of(projectId).toString())
                  .setPolicy(policy)
                  // A FieldMask specifying which fields of the policy to modify. Only
                  // the fields in the mask will be modified. If no mask is provided, the
                  // following default mask is used:
                  // `paths: "bindings, etag"`
                  .setUpdateMask(FieldMask.newBuilder().addAllPaths(paths).build())
                  .build();
    
          return projectsClient.setIamPolicy(request);
        }
      }
    }

    Python

    Para se autenticar no Resource Manager, configure as Credenciais padrão da aplicação. Para mais informações, consulte a secção Antes de começar.

    Para saber como instalar e usar a biblioteca de cliente do Resource Manager, consulte as bibliotecas de cliente do Resource Manager.

    O exemplo seguinte mostra como definir a política de permissão para um projeto. Para saber como definir a política de permissão de uma pasta ou uma organização, reveja a documentação da biblioteca cliente do Resource Managerpara o seu idioma de programação.

    from google.cloud import resourcemanager_v3
    from google.iam.v1 import iam_policy_pb2, policy_pb2
    
    
    def set_project_policy(
        project_id: str, policy: policy_pb2.Policy, merge: bool = True
    ) -> policy_pb2.Policy:
        """
        Set policy for project. Pay attention that previous state will be completely rewritten.
        If you want to update only part of the policy follow the approach read->modify->write.
        For more details about policies check out https://cloud.google.com/iam/docs/policies
    
        project_id: ID or number of the Google Cloud project you want to use.
        policy: Policy which has to be set.
        merge: The strategy to be used forming the request. CopyFrom is clearing both mutable and immutable fields,
        when MergeFrom is replacing only immutable fields and extending mutable.
        https://googleapis.dev/python/protobuf/latest/google/protobuf/message.html#google.protobuf.message.Message.CopyFrom
        """
        client = resourcemanager_v3.ProjectsClient()
    
        request = iam_policy_pb2.GetIamPolicyRequest()
        request.resource = f"projects/{project_id}"
        current_policy = client.get_iam_policy(request)
    
        # Etag should as fresh as possible to lower chance of collisions
        policy.ClearField("etag")
        if merge:
            current_policy.MergeFrom(policy)
        else:
            current_policy.CopyFrom(policy)
    
        request = iam_policy_pb2.SetIamPolicyRequest()
        request.resource = f"projects/{project_id}"
    
        # request.etag field also will be merged which means you are secured from collision,
        # but it means that request may fail and you need to leverage exponential retries approach
        # to be sure policy has been updated.
        request.policy.CopyFrom(current_policy)
    
        policy = client.set_iam_policy(request)
        return policy
    
    

    REST

    O método setIamPolicy da API Resource Manager define a política no pedido como a nova política de permissão para o projeto, a pasta ou a organização.

    Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

    • API_VERSION: a versão da API a usar. Para projetos e organizações, use v1. Para pastas, use v2.
    • RESOURCE_TYPE: o tipo de recurso cuja política quer gerir. Use o valor projects, folders ou organizations.
    • RESOURCE_ID: o ID do Trusted Cloud projeto, da organização ou da pasta. Os IDs dos projetos são strings alfanuméricas, como my-project. Os IDs das pastas e das organizações são numéricos, como 123456789012.
    • POLICY: Uma representação JSON da política que quer definir. Para mais informações sobre o formato de uma política, consulte a referência de políticas.

    Método HTTP e URL:

    POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:setIamPolicy

    Corpo JSON do pedido:

    {
      "policy": POLICY
    }
    

    Para enviar o seu pedido, expanda uma destas opções:

    A resposta contém a política de permissão atualizada.

O que se segue?