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 Google Cloud organização, pasta ou projeto. Uma política de negação contém regras de negação, que identificam os principais e listam as permissões que eles 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 o Google Cloud console, a Google Cloud CLI ou a API REST v2 do IAM.
Antes de começar
Ative a API IAM.
Funções necessárias para ativar APIs
Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (
roles/serviceusage.serviceUsageAdmin), que contém a permissãoserviceusage.services.enable. Saiba como conceder papéis.Configure a autenticação.
Selecione a guia para como planeja usar as amostras nesta página:
Console
Quando você usa o console Google Cloud para acessar serviços Google Cloud e APIs, não é necessário configurar a autenticação.
gcloud
No console do Google Cloud , ative o Cloud Shell.
Na parte de baixo do console Google Cloud , uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.
Terraform
Para usar os exemplos do Terraform nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud .
Go
Para usar os exemplos de Go nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud .
Java
Para usar os exemplos do Java nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud .
Node.js
Para usar os exemplos do Node.js nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud .
Python
Para usar os exemplos do Python nesta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.
-
Instale a CLI do Google Cloud.
-
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
-
Se você estiver usando um shell local, crie credenciais de autenticação local para sua conta de usuário:
gcloud auth application-default login
Não é necessário fazer isso se você estiver usando o Cloud Shell.
Se um erro de autenticação for retornado e você estiver usando um provedor de identidade (IdP) externo, confirme se você fez login na CLI gcloud com sua identidade federada.
Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na documentação de autenticação do Google Cloud .
REST
Para usar as amostras da API REST desta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.
Instale a CLI do Google Cloud.
Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .
-
Funções exigidas
Para receber as permissões necessárias para gerenciar políticas de negação, peça ao administrador que conceda a você os seguintes papéis do 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 a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esses papéis predefinidos contêm as permissões necessárias para gerenciar políticas de negação. Para conferir 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 funções personalizadas 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
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.
Console
No console do Google Cloud , acesse a guia Negar na página IAM.
Selecione um projeto, pasta ou organização.
Clique em Criar política de negação.
Na seção Nome da política, defina o ID da política fazendo uma das seguintes ações:
- No campo Nome de exibição, insira um nome de exibição para a chave. Ao preencher esse campo, o campo ID é preenchido automaticamente. Se você quiser mudar o ID da política, atualize o texto no campo ID.
- No campo ID, insira um ID para a política.
Na seção Regras de negação, defina as regras de negação da política. Cada política de negação precisa ter pelo menos uma regra de negação. Para adicionar mais regras de proibição, clique em Adicionar regra de proibição.
Para cada regra de negação, faça o seguinte:
- No campo Principais negados, adicione um ou mais principais que você
quer impedir de usar as permissões especificadas. O principal pode ser qualquer um dos tipos de principais nos identificadores de principais para políticas de negação, exceto os principais cujos IDs começam com
deleted:. Opcional: no campo Principais de exceção, adicione os principais que você quer que possam usar as permissões especificadas, mesmo que eles estejam incluídos na seção Principais negados. Por exemplo, é possível usar esse campo para criar uma exceção para usuários específicos que pertencem a um grupo negado.
Na seção Permissões negadas, adicione as permissões que você quer negar. 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.
Opcional: adicione permissões de exceção. As permissões de exceção são aquelas que você não quer que essa regra de negação negue, mesmo que estejam incluídas na lista de permissões negadas. Por exemplo, é possível usar esse campo para criar exceções para permissões específicas em um grupo de permissões.
Para adicionar permissões de exceção, clique em Permissões de exceção, em Adicionar outra permissão e digite a permissão no campo Permissão 1. Continue adicionando permissões até incluir todas as que você quer isentar da política de negação.
Opcional: adicione uma condição de negação para especificar quando os principais não podem usar a permissão. Para adicionar uma condição de negação, clique em Adicionar condição de negação e defina os seguintes campos:
- Título: (opcional) Um breve resumo da finalidade da condição.
- Descrição: opcional. Uma descrição mais longa da condição.
Expressão de condição: é possível adicionar uma expressão de condição usando o Criador de condições ou o Editor de condições. O Criador de condições fornece uma interface interativa para selecionar o tipo de condição desejado, o operador e outros detalhes aplicáveis sobre a expressão. O editor de condições fornece uma interface baseada em texto para inserir manualmente uma expressão usando a sintaxe da Common Expression Language (CEL).
As condições de negação precisam ser baseadas em tags de recursos. Outras funções e operadores não são compatíveis.
- No campo Principais negados, adicione um ou mais principais que você
quer impedir de usar as permissões especificadas. O principal pode ser qualquer um dos tipos de principais nos identificadores de principais para políticas de negação, exceto os principais cujos IDs começam com
Clique em Criar.
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.
-
exceptionPermissions: uma lista de permissões que os principais especificados podem usar, mesmo que essas permissões estejam incluídas emdeniedPermissions. Por exemplo, é possível usar esse campo para criar exceções para permissões específicas em um grupo de permissões. -
deniedPrincipals: uma lista de principais que não podem usar as permissões especificadas. Para saber como formatar os identificadores principais, consulte Identificadores principais para políticas de negação. -
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. Para saber como formatar os identificadores principais, consulte Identificadores principais para políticas de negação. -
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 a Lucian:
{
"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 Ponto de anexo. -
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 projeto my-project, usando um arquivo chamado policy.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 Ponto de anexo. 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.
-
exceptionPermissions: uma lista de permissões que os principais especificados podem usar, mesmo que essas permissões estejam incluídas emdeniedPermissions. Por exemplo, é possível usar esse campo para criar exceções para permissões específicas em um grupo de permissões. -
deniedPrincipals: uma lista de principais que não podem usar as permissões especificadas. Para saber como formatar os identificadores principais, consulte Identificadores principais para políticas de negação. -
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. Para saber como formatar os identificadores principais, consulte Identificadores principais para políticas de negação. -
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.
Console
No console do Google Cloud , acesse a guia Negar na página IAM.
Selecione um projeto, pasta ou organização.
O console Google Cloud lista todas as políticas de negação que se aplicam ao projeto, à pasta ou à organização. Isso inclui políticas de negação que foram herdadas de outros recursos. Para mais informações sobre a herança de políticas de negação, consulte Herança de políticas de negação.
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 Ponto de anexo.
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 Ponto de anexo.
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.
Console
No console do Google Cloud , acesse a guia Negar na página IAM.
Selecione um projeto, pasta ou organização.
Na coluna ID da política, clique no ID da política que você quer visualizar.
O console do Google Cloud mostra os detalhes da política de negação, incluindo o ID da política, quando ela foi criada e as regras de negação na 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 Ponto de anexo.
Por exemplo, o comando a seguir recebe a política de negação chamada my-deny-policy
para o projeto my-project e a salva em um arquivo chamado policy.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 Ponto de anexo. 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.
É possível atualizar uma política de negação usando o console Google Cloud ou um dos seguintes métodos programáticos:
- A gcloud CLI
- A API REST
- As bibliotecas de cliente do IAM
Atualizar uma política de negação usando o console Google Cloud
No console do Google Cloud , acesse a guia Negar na página IAM.
Selecione um projeto, pasta ou organização.
Na coluna ID da política, clique no ID da política que você quer editar.
Clique em Editar.
Atualize a política de negação:
- Para mudar o nome de exibição da política, edite o campo Nome de exibição.
- Para editar uma regra de negação, clique nela e modifique os principais, os principais de exceção, as permissões negadas, as permissões de exceção ou a condição de negação.
- Para remover uma regra de negação, encontre a que você quer excluir e clique em Excluir nessa linha.
- Para adicionar uma regra de negação, clique em Adicionar regra de negação e crie uma regra de negação como você faz ao criar uma política de negação.
Quando terminar de atualizar a política de negação, clique em Salvar.
Atualizar uma política de negação de forma programática
Para atualizar uma política de negação usando a gcloud CLI, a API REST ou as bibliotecas de cliente do IAM, 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 Ponto de anexo.
Por exemplo, o comando a seguir recebe a política de negação chamada my-deny-policy
para o projeto my-project e a salva em um arquivo chamado policy.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 Ponto de anexo. 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 mudanças não vão entrar 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.
O etag muda sempre que você atualiza a política. Quando você grava a política
atualizada, o etag na solicitação precisa corresponder ao etag 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 Ponto de anexo. -
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 projeto my-project, usando um arquivo chamado policy.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 Ponto de anexo. 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
POLICYpelo 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 o etag, ele precisará corresponder ao etag 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.
Console
No console do Google Cloud , acesse a guia Negar na página IAM.
Selecione um projeto, pasta ou organização.
Na coluna ID da política, clique no ID da política que você quer excluir.
Clique em Excluir. Na caixa de diálogo, clique em Confirmar.
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 Ponto de anexo.
Opcionalmente, é possível adicionar a sinalização --etag=ETAG. Substitua
ETAG pelo valor atual da etag 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 projeto my-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 Ponto de anexo. 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 valoretagatual 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 Ponto de anexo. -
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 campo done estiver definido como true, 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.