Nesta página, explicamos como negar o acesso de principais impedindo que eles usem permissões específicas de gerenciamento de identidade e acesso (IAM).
No IAM, você nega acesso com políticas de negação. Cada política de negação é anexada a uma organização, pasta ou projeto do Google Cloud. Essa política contém regras de negação, que identificam os principais e listam as permissões que os principais não podem usar.
As políticas de negação são separadas das políticas de permissão, também conhecidas como políticas do IAM. Uma política de permissão fornece acesso a recursos concedendo papéis do IAM aos principais.
É possível gerenciar as políticas de negação com a Google Cloud CLI ou com a API
REST v2
do IAM.
Antes de começar
Enable the IAM API.
Configure a autenticação.
Select the tab for how you plan to use the samples on this page:
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google 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.
Terraform
Para usar os exemplos do Terraform nesta página em um ambiente de desenvolvimento local, instale e inicialize a gcloud CLI e, em seguida, configure o Application Default Credentials com suas credenciais de usuário.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud.
Go
Para usar os exemplos Go desta página em um ambiente de desenvolvimento local, instale e inicialize o gcloud CLI e e configure o Application Default Credentials com suas credenciais de usuário.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud.
Java
Para usar os exemplos Java desta página em um ambiente de desenvolvimento local, instale e inicialize o gcloud CLI e e configure o Application Default Credentials com suas credenciais de usuário.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud.
Node.js
Para usar os exemplos Node.js desta página em um ambiente de desenvolvimento local, instale e inicialize o gcloud CLI e e configure o Application Default Credentials com suas credenciais de usuário.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud.
Python
Para usar os exemplos Python desta página em um ambiente de desenvolvimento local, instale e inicialize o gcloud CLI e e configure o Application Default Credentials com suas credenciais de usuário.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Funções exigidas
Para conseguir as permissões necessárias para gerenciar políticas de negação, peça ao administrador que conceda a você os seguintes papéis de IAM na organização:
-
Para ver as políticas de negação:
Revisor de negação (
roles/iam.denyReviewer
) -
Para visualizar, criar, atualizar e excluir políticas de negação:
Administrador de negação (
roles/iam.denyAdmin
)
Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.
Esses papéis predefinidos contêm as permissões necessárias para gerenciar políticas de negação. Para ver as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As permissões a seguir são necessárias para gerenciar as políticas de negação:
-
Para ver as políticas de negação, faça o seguinte:
-
iam.denypolicies.get
-
iam.denypolicies.list
-
-
Para criar, atualizar e excluir políticas de negação, faça o seguinte:
-
iam.denypolicies.create
-
iam.denypolicies.delete
-
iam.denypolicies.get
-
iam.denypolicies.update
-
Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.
Identificar permissões para negar
Antes de criar uma política de negação, decida quais permissões você quer negar e quais são as principais negadas.
Apenas algumas permissões podem ser negadas. Para ver uma lista de permissões que podem ser negadas, consulte Permissões compatíveis com as políticas de negação.
Em alguns casos, você também pode usar grupos de permissões para negar conjuntos de permissões. Para mais informações, consulte Grupos de permissões.
Gerencie as políticas de negação com a API REST
v2
, que requer um formato especial para nomes de permissões. Por exemplo, a permissão para criar um papel personalizado do IAM é nomeada da seguinte maneira:- API
v1
:iam.roles.create
- API
v2
:iam.googleapis.com/roles.create
Identificar o ponto de anexo
Cada política de negação é anexada a uma organização, pasta ou projeto. Quando anexadas a um desses recursos, as políticas de negação são herdadas por todos os recursos de nível inferior nesse projeto, pasta ou organização. Para trabalhar com políticas de negação, você precisa de um identificador para o recurso a que a política de negação está anexada, o que é chamado de ponto de anexo. Esse identificador usa um dos formatos na tabela a seguir:
Formato do ponto do anexo Organização cloudresourcemanager.googleapis.com/organizations/ORG_ID
SubstituaORG_ID
pelo ID numérico da organização. Para a API REST, codifique o URL de todo o valor.Exemplo da CLI gcloud:
cloudresourcemanager.googleapis.com/organizations/123456789012
Exemplo da API REST:
cloudresourcemanager.googleapis.com%2Forganizations%2F123456789012
Pasta cloudresourcemanager.googleapis.com/folders/FOLDER_ID
SubstituaFOLDER_ID
pelo ID da pasta numérica. Para a API REST, codifique o URL de todo o valor.Exemplo da CLI gcloud:
cloudresourcemanager.googleapis.com/folders/987654321098
Exemplo da API REST:
cloudresourcemanager.googleapis.com%2Ffolders%2F987654321098
Projeto cloudresourcemanager.googleapis.com/projects/PROJECT_ID
SubstituaPROJECT_ID
pelo ID alfanumérico ou numérico do projeto. Para a API REST, codifique o URL de todo o valor.Exemplo da CLI gcloud:
cloudresourcemanager.googleapis.com/projects/my-project
Exemplo da API REST:
cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project
Criar uma política de negação
É possível adicionar políticas de negação a organizações, pastas e projetos. Cada recurso pode ter até 500 políticas de negação.
As políticas de negação contêm regras de negação, que especificam o seguinte:
- Permissões para negar.
- As principais que têm essas permissões negadas.
Opcional: principais isentos da negação de permissões.
Por exemplo, você pode negar uma permissão para um grupo, mas isentar usuários específicos que pertençam a ele.
Opcional: uma expressão de condição que especifica quando os principais não podem usar as permissões. Nas políticas de negação, as expressões de condição só podem usar funções para tags de recursos. Outras funções e operadores não são compatíveis.
Cada recurso pode ter até 500 regras de negação em todas as políticas de negação anexadas.
As políticas de negação são herdadas pela hierarquia de recursos. Por exemplo, se você negar uma permissão no nível da organização, ela também será negada nas pastas e nos projetos dessa organização e nos recursos específicos do serviço de cada projeto.
As políticas de negação substituem as permitidas. Se um principal tiver um papel que contenha uma permissão específica, mas uma política de negação disser que o principal não pode usar essa permissão, o principal não poderá usá-la.
gcloud
Para criar uma política de negação para um recurso, comece criando um arquivo JSON que contenha a política. Uma política de negação usa o seguinte formato:
{ "displayName": "POLICY_NAME", "rules": [ { "denyRule": DENY_RULE_1 }, { "denyRule": DENY_RULE_2 }, { "denyRule": DENY_RULE_N } ] }
Forneça os valores a seguir:
POLICY_NAME
: o nome de exibição da política de negação.-
DENY_RULE_1
,DENY_RULE_2
,...DENY_RULE_N
: as regras de negação na política. Cada regra de negação pode conter estes campos:-
deniedPermissions
: uma lista de permissões que os principais especificados não podem usar. As permissões precisam ser compatíveis com as políticas de negação.Em alguns casos, você também pode usar grupos de permissões para negar conjuntos de permissões. Para mais informações, consulte Grupos de permissões.
-
deniedPrincipals
: uma lista de principais que não podem usar as permissões especificadas. Use o formato de APIv2
para os identificadores principais. -
exceptionPrincipals
: opcional. Uma lista de principais que podem usar as permissões especificadas, mesmo que eles estejam incluídos emdeniedPrincipals
. Por exemplo, é possível usar esse campo para criar uma exceção para usuários específicos que pertencem a um grupo negado. Use o formato de APIv2
para os identificadores principais. -
denialCondition
: opcional. Uma expressão de condição que especifica quando os principais não podem usar as permissões. Contém os campos a seguir:-
expression
: uma expressão de condição que usa a sintaxe Common Expression Language (CEL). A expressão precisa usar as funções da CEL para avaliação de tags de recursos. Outras funções e operadores não são compatíveis. -
title
: opcional. Um breve resumo da finalidade da condição. -
description
: opcional. Uma descrição mais longa da condição.
-
Veja exemplos de regras de negação em Casos de uso comuns.
-
Por exemplo, a seguinte política de negação contém uma regra de negação, que nega uma permissão ao usuário
lucian@example.com
:{ "displayName": "My deny policy.", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] }
Em seguida, execute o comando
gcloud iam policies create
:gcloud iam policies create POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --policy-file=POLICY_FILE
Forneça os valores a seguir:
-
POLICY_ID
: o identificador da política de negação. -
ATTACHMENT_POINT
: um identificador para o recurso a que a política de negação está anexada. Para saber como formatar esse valor, consulte Identificar o ponto de anexo nesta página. -
POLICY_FILE
: o caminho do arquivo JSON que contém a política de negação.
Por padrão, se este comando for bem-sucedido, não imprimirá nenhuma saída. Para exibir uma resposta detalhada, adicione a sinalização
--format=json
ao comando.Por exemplo, o comando a seguir cria uma política de negação chamada
my-deny-policy
para o projetomy-project
, usando um arquivo chamadopolicy.json
:gcloud iam policies create my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies \ --policy-file=policy.json
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform. Para mais informações, consulte a documentação de referência do provedor Terraform.
Go
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Go do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Java
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Java do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Node.js
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Node.js do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Python
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Python do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
REST
O método
policies.createPolicy
cria uma política de negação para um recurso.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
-
ENCODED_ATTACHMENT_POINT
: um identificador codificado por URL para o recurso a que a política de negação está anexada. Para saber como formatar esse valor, consulte Identificar o ponto de anexo nesta página. POLICY_ID
: um identificador para a política de negação.POLICY_NAME
: o nome de exibição da política de negação.-
DENY_RULE_1
,DENY_RULE_2
,...DENY_RULE_N
: as regras de negação na política. Cada regra de negação pode conter estes campos:-
deniedPermissions
: uma lista de permissões que os principais especificados não podem usar. As permissões precisam ser compatíveis com as políticas de negação.Em alguns casos, você também pode usar grupos de permissões para negar conjuntos de permissões. Para mais informações, consulte Grupos de permissões.
-
deniedPrincipals
: uma lista de principais que não podem usar as permissões especificadas. Use o formato de APIv2
para os identificadores principais. -
exceptionPrincipals
: opcional. Uma lista de principais que podem usar as permissões especificadas, mesmo que eles estejam incluídos emdeniedPrincipals
. Por exemplo, é possível usar esse campo para criar uma exceção para usuários específicos que pertencem a um grupo negado. Use o formato de APIv2
para os identificadores principais. -
denialCondition
: opcional. Uma expressão de condição que especifica quando os principais não podem usar as permissões. Contém os campos a seguir:-
expression
: uma expressão de condição que usa a sintaxe Common Expression Language (CEL). A expressão precisa usar as funções da CEL para avaliação de tags de recursos. Outras funções e operadores não são compatíveis. -
title
: opcional. Um breve resumo da finalidade da condição. -
description
: opcional. Uma descrição mais longa da condição.
-
Veja exemplos de regras de negação em Casos de uso comuns.
-
Método HTTP e URL:
POST https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies?policyId=POLICY_ID
Corpo JSON da solicitação:
{ "displayName": "POLICY_NAME", "rules": [ { "denyRule": DENY_RULE_1 }, { "denyRule": DENY_RULE_2 }, { "denyRule": DENY_RULE_N } ] }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/89cb3e508bf1ff01", "metadata": { "@type": "type.googleapis.com/google.iam.v2.PolicyOperationMetadata", "createTime": "2022-06-28T19:06:12.455151Z" }, "response": { "@type": "type.googleapis.com/google.iam.v2.Policy", "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-28T19:06:12.455151Z", "updateTime": "2022-06-28T22:26:21.968687Z" "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] } }
A resposta identifica uma operação de longa duração. É possível monitorar o status da operação de longa duração para descobrir quando ela é concluída. Para detalhes, consulte Verificar o status de uma operação de longa duração nesta página.
Listar políticas de negação
Um recurso pode ter várias políticas de negação. É possível listar todas as políticas de negação anexadas a um recurso e, em seguida, visualizar cada política de negação para ver as regras de negação em cada política.
gcloud
Para listar as políticas de negação de um recurso, execute o comando
gcloud iam policies list
:gcloud iam policies list \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --format=json
Forneça o seguinte valor:
-
ATTACHMENT_POINT
: um identificador para o recurso a que a política de negação está anexada. Para saber como formatar esse valor, consulte Identificar o ponto de anexo nesta página.
Por exemplo, o comando a seguir lista as políticas de negação anexadas a uma organização com o ID numérico
123456789012
:gcloud iam policies list \ --attachment-point=cloudresourcemanager.googleapis.com/organizations/123456789012 \ --kind=denypolicies \ --format=json
Go
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Go do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Java
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Java do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Node.js
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Node.js do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Python
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Python do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
REST
O método
policies.listPolicies
lista as políticas de negação de um recurso.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
-
ENCODED_ATTACHMENT_POINT
: um identificador codificado por URL para o recurso a que a política de negação está anexada. Para saber como formatar esse valor, consulte Identificar o ponto de anexo nesta página.
Método HTTP e URL:
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "policies": [ { "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1067607927478/denypolicies/test-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "createTime": "2022-06-28T19:06:12.455151Z", "updateTime": "2022-06-28T22:26:21.968687Z" }, { "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1067607927478/denypolicies/test-policy-2", "uid": "8465d710-ea20-0a08-d92c-b2a3ebf766ab", "kind": "DenyPolicy", "displayName": "My second deny policy.", "createTime": "2022-06-05T19:21:53.595455Z", "updateTime": "2022-06-05T19:21:53.595455Z" }, { "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1067607927478/denypolicies/test-policy-3", "uid": "ee9f7c2f-7e8c-b05c-d4e5-e03bfb2954e0", "kind": "DenyPolicy", "displayName": "My third deny policy.", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z" } ] }
Ver uma política de negação
É possível visualizar uma política de negação para ver as regras de negação que ela contém, inclusive as permissões negadas e os principais que não podem usar essas permissões.
gcloud
Para receber a política de negação de um recurso, execute o comando
gcloud iam policies get
:gcloud iam policies get POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --format=json
Forneça os valores a seguir:
-
POLICY_ID
: o identificador da política de negação. -
ATTACHMENT_POINT
: um identificador para o recurso a que a política de negação está anexada. Para saber como formatar esse valor, consulte Identificar o ponto de anexo nesta página.
Por exemplo, o comando a seguir recebe a política de negação chamada
my-deny-policy
para o projetomy-project
e a salva em um arquivo chamadopolicy.json
:gcloud iam policies get my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies \ --format=json \ > ./policy.json
Go
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Go do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Java
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Java do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Node.js
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Node.js do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Python
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Python do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
REST
O método
policies.get
recebe uma política de negação para um recurso.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
-
ENCODED_ATTACHMENT_POINT
: um identificador codificado por URL para o recurso a que a política de negação está anexada. Para saber como formatar esse valor, consulte Identificar o ponto de anexo nesta página. POLICY_ID
: um identificador para a política de negação.
Método HTTP e URL:
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] }
Atualizar uma política de negação
Depois de criar uma política de negação, você pode atualizar as regras de negação que ela contém, bem como seu nome de exibição.
Para atualizar uma política de negação, use o padrão read-modify-write:
- Leia a versão atual da política.
- Modifique as informações na política conforme necessário.
- Grave a política atualizada.
Ler a política de negação
gcloud
Para receber a política de negação de um recurso, execute o comando
gcloud iam policies get
:gcloud iam policies get POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --format=json
Forneça os valores a seguir:
-
POLICY_ID
: o identificador da política de negação. -
ATTACHMENT_POINT
: um identificador para o recurso a que a política de negação está anexada. Para saber como formatar esse valor, consulte Identificar o ponto de anexo nesta página.
Por exemplo, o comando a seguir recebe a política de negação chamada
my-deny-policy
para o projetomy-project
e a salva em um arquivo chamadopolicy.json
:gcloud iam policies get my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies \ --format=json \ > ./policy.json
Go
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Go do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Java
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Java do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Node.js
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Node.js do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Python
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Python do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
REST
O método
policies.get
recebe uma política de negação para um recurso.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
-
ENCODED_ATTACHMENT_POINT
: um identificador codificado por URL para o recurso a que a política de negação está anexada. Para saber como formatar esse valor, consulte Identificar o ponto de anexo nesta página. POLICY_ID
: um identificador para a política de negação.
Método HTTP e URL:
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] }
Modificar a política de negação
Para modificar a política de negação, faça alterações na cópia da política lida no IAM. É possível atualizar o nome de exibição ou adicionar, alterar ou remover regras de negação. As alterações não entrarão em vigor até que você grave a política atualizada.
Por exemplo, adicione uma permissão a uma regra de negação existente:
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2021-10-05T19:22:26.770543Z", "updateTime": "2021-10-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create", "iam.googleapis.com/roles.delete" ] } } ] }
Gravar a política de negação atualizada
Depois de modificar a política de negação localmente, escreva a política de negação atualizada no IAM.
Cada política de negação contém um campo
etag
que identifica a versão da política. Oetag
muda sempre que você atualiza a política. Quando você grava a política atualizada, oetag
na solicitação precisa corresponder aoetag
atual armazenado no IAM. se os valores não corresponderem, a solicitação falhará. Esse recurso ajuda a evitar que alterações simultâneas substituam-se.gcloud
Para atualizar a política de negação de um recurso, execute o comando
gcloud iam policies update
:gcloud iam policies update POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies \ --policy-file=POLICY_FILE
Forneça os valores a seguir:
-
POLICY_ID
: o identificador da política de negação. -
ATTACHMENT_POINT
: um identificador para o recurso a que a política de negação está anexada. Para saber como formatar esse valor, consulte Identificar o ponto de anexo nesta página. -
POLICY_FILE
: o caminho do arquivo JSON que contém a política de negação.
Por padrão, se este comando for bem-sucedido, não imprimirá nenhuma saída. Para exibir uma resposta detalhada, adicione a sinalização
--format=json
ao comando.Por exemplo, o comando a seguir atualiza uma política de negação chamada
my-deny-policy
para o projetomy-project
, usando um arquivo chamadopolicy.json
:gcloud iam policies update my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies \ --policy-file=policy.json
Go
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Go do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Java
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Java do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Node.js
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Node.js do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Python
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Python do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
REST
O método
policies.update
atualiza uma política de negação.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
-
ENCODED_ATTACHMENT_POINT
: um identificador codificado por URL para o recurso a que a política de negação está anexada. Para saber como formatar esse valor, consulte Identificar o ponto de anexo nesta página. POLICY_ID
: um identificador para a política de negação.-
POLICY
: a política de negação atualizada.Por exemplo, para adicionar uma permissão à política mostrada na etapa anterior, substitua
POLICY
pelo seguinte:{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T19:22:26.770543Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create", "iam.googleapis.com/roles.delete" ] } } ] }
Método HTTP e URL:
PUT https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID
Corpo JSON da solicitação:
POLICY
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/8b2d0ab2daf1ff01", "metadata": { "@type": "type.googleapis.com/google.iam.v2.PolicyOperationMetadata", "createTime": "2021-10-05T22:26:21.968687Z" }, "response": { "@type": "type.googleapis.com/google.iam.v2.Policy", "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "uid": "6665c437-a3b2-a018-6934-54dd16d3426e", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTgxNTIxNDE3NTYxNjQxODYxMTI=", "createTime": "2022-06-05T19:22:26.770543Z", "updateTime": "2022-06-05T22:26:21.968687Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create", "iam.googleapis.com/roles.delete" ] } } ] } }
A resposta identifica uma operação de longa duração. É possível monitorar o status da operação de longa duração para descobrir quando ela é concluída. Para detalhes, consulte Verificar o status de uma operação de longa duração nesta página.
Excluir uma política de negação
Se você não quiser mais aplicar as regras em uma política de negação, poderá excluir a política de negação.
Opcionalmente, é possível especificar
etag
para a versão da política que você está excluindo. Se você especificar oetag
, ele precisará corresponder aoetag
atual armazenado pelo IAM. se os valores não corresponderem, a solicitação falhará. Use esse recurso para garantir a exclusão da política pretendida, em vez de uma versão atualizada dela.Se você omitir
etag
da solicitação, o IAM excluirá a política condicionalmente.gcloud
Para excluir uma política de negação de um recurso, execute o comando
gcloud iam policies delete
:gcloud iam policies delete POLICY_ID \ --attachment-point=ATTACHMENT_POINT \ --kind=denypolicies
Forneça os valores a seguir:
-
POLICY_ID
: o identificador da política de negação. -
ATTACHMENT_POINT
: um identificador para o recurso a que a política de negação está anexada. Para saber como formatar esse valor, consulte Identificar o ponto de anexo nesta página.
Opcionalmente, é possível adicionar a sinalização
--etag=ETAG
. SubstituaETAG
pelo valor atual daetag
para a política de negação.Por padrão, se este comando for bem-sucedido, não imprimirá nenhuma saída. Para exibir uma resposta detalhada, adicione a sinalização
--format=json
ao comando.Por exemplo, o comando a seguir exclui uma política de negação chamada
my-deny-policy
do projetomy-project
:gcloud iam policies delete my-deny-policy \ --attachment-point=cloudresourcemanager.googleapis.com/projects/my-project \ --kind=denypolicies
Go
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Go do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Java
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Java do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Node.js
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Node.js do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
Python
Para saber como instalar e usar a biblioteca de cliente do IAM, consulte Bibliotecas de cliente do IAM. Para mais informações, consulte a documentação de referência da API Python do IAM.
Para autenticar no IAM, configure o Application Default Credentials. Para mais informações, consulte Antes de começar.
REST
O método
policies.delete
exclui uma política de negação de um recurso.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
-
ENCODED_ATTACHMENT_POINT
: um identificador codificado por URL para o recurso a que a política de negação está anexada. Para saber como formatar esse valor, consulte Identificar o ponto de anexo nesta página. POLICY_ID
: um identificador para a política de negação.-
ETAG
: opcional. Um identificador da versão da política. Se presente, esse valor precisa corresponder ao valoretag
atual da política.
Método HTTP e URL:
DELETE https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/denypolicies/POLICY_ID?etag=ETAG
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/8223fe308bf1ff01", "metadata": { "@type": "type.googleapis.com/google.iam.v2.PolicyOperationMetadata", "createTime": "2021-10-05T19:45:00.133311Z" }, "response": { "@type": "type.googleapis.com/google.iam.v2.Policy", "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy", "kind": "DenyPolicy", "displayName": "My deny policy.", "etag": "MTc3NDU4MjM4OTY0MzU5MjQ5OTI=", "createTime": "2022-06-28T19:06:12.455151Z", "updateTime": "2022-07-05T19:45:00.133311Z", "deleteTime": "2022-07-05T19:45:00.133311Z", "rules": [ { "denyRule": { "deniedPrincipals": [ "principal://goog/subject/lucian@example.com" ], "deniedPermissions": [ "iam.googleapis.com/roles.create" ] } } ] } }
A resposta identifica uma operação de longa duração. É possível monitorar o status da operação de longa duração para descobrir quando ela é concluída. Para detalhes, consulte Verificar o status de uma operação de longa duração nesta página.
Verificar o status de uma operação de longa duração
Quando você usa a API REST ou as bibliotecas de cliente, qualquer método que altere uma política de negação retorna uma operação de longa duração, ou LRO. A operação de longa duração rastreia o status da solicitação e indica se a alteração na política foi concluída.
Go
Nas amostras de código desta página, mostramos como aguardar a conclusão de uma operação de longa duração e acessar o resultado dela.
Java
Nas amostras de código desta página, mostramos como aguardar a conclusão de uma operação de longa duração e acessar o resultado dela.
Node.js
Nas amostras de código desta página, mostramos como aguardar a conclusão de uma operação de longa duração e acessar o resultado dela.
Python
Nas amostras de código desta página, mostramos como aguardar a conclusão de uma operação de longa duração e acessar o resultado dela.
REST
O método
policies.operations.get
retorna o status de uma operação de longa duração.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
-
ENCODED_ATTACHMENT_POINT
: um identificador codificado por URL para o recurso a que a política de negação está anexada. Para saber como formatar esse valor, consulte Identificar o ponto de anexo nesta página. -
OPERATION_ID
: o identificador da operação. Você recebe esse identificador na resposta à sua solicitação original, como parte do nome da operação. Use o valor hexadecimal no final do nome da operação. Por exemplo,89cb3e508bf1ff01
.
Método HTTP e URL:
GET https://iam.googleapis.com/v2/policies/ENCODED_ATTACHMENT_POINT/operations/OPERATION_ID
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "policies/cloudresourcemanager.googleapis.com%2Fprojects%2F1234567890123/denypolicies/my-policy/operations/89cb3e508bf1ff01", "done": true }
Se o campo
done
da operação não estiver presente, continue a monitorar o status recebendo a operação repetidamente. Use a espera exponencial truncada para introduzir um atraso entre cada solicitação. Quando o campodone
estiver definido comotrue
, a operação será concluída e você poderá interromper a operação.A seguir
- Identifique as permissões compatíveis com políticas de negação.
- Descubra o formato dos identificadores principais nas políticas de negação.
- Descubra como solucionar problemas de acesso com políticas de negação.
- Saiba mais sobre como negar acesso a principais.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2024-11-12 UTC.