Neste guia, veja como criar uma política da organização com uma restrição específica. As restrições usadas nos exemplos desta página não serão restrições reais, mas amostras generalizadas para fins educacionais.
Para mais informações sobre restrições e os problemas que elas resolvem, consulte a lista de todas as restrições do serviço Política da organização.
Antes de começar
Leia a página Introdução ao serviço "Política da organização" para saber como funciona a política da organização.
Leia a página Noções básicas sobre a avaliação da hierarquia para saber mais sobre a herança de políticas.
Funções exigidas
Para receber as permissões necessárias a fim de gerenciar as políticas da organização,
peça ao administrador para conceder a você o
papel do IAM de Administrador de políticas da organização (roles/orgpolicy.policyAdmin
) na organização.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para gerenciar as políticas da organizaçã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 da organização:
-
orgpolicy.constraints.list
-
orgpolicy.policies.create
-
orgpolicy.policies.delete
-
orgpolicy.policies.list
-
orgpolicy.policies.update
-
orgpolicy.policy.get
-
orgpolicy.policy.set
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Usar restrições de lista com uma política da organização
É possível definir uma política da organização no recurso Organização que use uma restrição de lista para negar acesso a um serviço específico. O processo a seguir descreve como definir uma política da organização usando a Google Cloud CLI. Para instruções sobre como visualizar e definir políticas da organização usando o console do Google Cloud, consulte Como criar e gerenciar políticas.
As políticas da organização que usam restrições de lista não podem ter mais de 500 valores individuais permitidos ou negados e não podem ter mais de 32 KB. Se uma política da organização for criada ou atualizada para ter mais de 500 valores ou ter mais de 32 KB de tamanho, ela não poderá ser salva, e a solicitação vai retornar um erro.
Configurar a aplicação no recurso da organização
Para configurar a aplicação em uma organização usando a CLI gcloud, siga estas etapas:
Consiga a política atual no recurso da organização usando o comando
describe
: Este comando retorna a política aplicada diretamente a este recurso:gcloud org-policies describe \ LIST_CONSTRAINT --organization=ORGANIZATION_ID
Substitua:
ORGANIZATION_ID
: um identificador exclusivo do recurso da organização. ID da organização é formatado como números decimais e não pode ter zeros à esquerda.LIST_CONSTRAINT
: a restrição de lista para o serviço que você quer aplicar. Por exemplo, a restriçãoconstraints/gcp.restrictNonCmekServices
restringe quais serviços podem criar recursos sem chaves de criptografia gerenciadas pelo cliente (CMEK).
Você também pode aplicar a política da organização a uma pasta ou um projeto com as sinalizações
--folder
ou--project
e o ID da pasta e ID do projeto, respectivamente.A resposta retornará a política atual da organização, se houver uma. Exemplo:
name: projects/841166443394/policies/gcp.resourceLocations spec: etag: BwW5P5cEOGs= inheritFromParent: true rules: - condition: expression: resource.matchTagId("tagKeys/1111", "tagValues/2222") values: allowedValues: - in:us-east1-locations - condition: expression: resource.matchTag("123/env", "prod") values: allowedValues: - in:us-west1-locations - values: deniedValues: - in:asia-south1-locations updateTime: '2021-01-19T12:00:51.095Z'
Se uma política não for definida, isso retornará um erro
NOT_FOUND
:ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
Defina a política no projeto usando o comando
set-policy
. Isso substitui qualquer política anexada ao recurso.Crie um arquivo temporário
/tmp/policy.yaml
para armazenar a política:name: organizations/ORGANIZATION_ID/policies/LIST_CONSTRAINT spec: rules: - values: deniedValues: - VALUE_A
Execute o comando
set-policy
:gcloud org-policies set-policy /tmp/policy.yaml
Veja a política efetiva atual usando
describe --effective
. Isso retorna a política da organização conforme é avaliada neste momento na hierarquia de recursos com herança incluída.gcloud org-policies describe \ LIST_CONSTRAINT --effective \ --organization=ORGANIZATION_ID
A saída do comando será:
name: organizations/ORGANIZATION_ID/policies/LIST_CONSTRAINT spec: etag: BwVJi0OOESU= rules: - values: deniedValues: - VALUE_A
Como essa política da organização foi definida no nível da organização, ela será herdada por todos os recursos filhos que permitem a herança.
As alterações nas políticas da organização podem levar até 15 minutos para serem totalmente aplicadas.
Configurar a aplicação em uma subárvore de hierarquia
Restrições de lista determinam que recursos devem ser permitidos ou negados a partir de valores explicitamente definidos. Algumas restrições também podem aceitar valores que usam o prefixo under:
, que especifica uma subárvore com esse recurso na raiz.
Usar o prefixo under:
em um valor permitido ou negado faz com que a política da organização aja nesse recurso e em todos os seus filhos. Para mais informações sobre as restrições que permitem o uso do prefixo under:
, consulte a página Restrições da política da organização.
Um valor que usa o prefixo under:
é chamado de uma string de subárvore de hierarquia. Uma string de subárvore de hierarquia especifica o tipo de recurso ao qual se aplica. Por exemplo, usar uma string de subárvore de
projects/PROJECT_ID
ao definir o
A restrição constraints/compute.storageResourceUseRestrictions
vai permitir ou
negar o uso do armazenamento do Compute Engine para PROJECT_ID
e todos os seus filhos.
Consiga a política atual no recurso da organização usando o comando
describe
:gcloud org-policies describe \ LIST_CONSTRAINT \ --organization=ORGANIZATION_ID
Substitua:
ORGANIZATION_ID
é um identificador exclusivo do recurso organização;LIST_CONSTRAINT
é a restrição de lista para o serviço que você quer aplicar.
Você também pode aplicar a política da organização a uma pasta ou um projeto com as sinalizações
--folder
ou--project
e o ID da pasta e ID do projeto, respectivamente.Se uma política não for definida, isso retornará um erro
NOT_FOUND
:ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
Defina a política no projeto usando o comando
set-policy
. O prefixounder:
define a restrição para negar o recurso nomeado e todos os seus recursos filho.Crie um arquivo temporário
/tmp/policy.yaml
para armazenar a política:name: organizations/ORGANIZATION_ID/policies/LIST_CONSTRAINT spec: rules: - values: deniedValues: - under:folders/VALUE_A
Execute o comando
set-policy
:gcloud org-policies set-policy /tmp/policy.yaml
Em que:
under:
é um prefixo que significa que o que vem a seguir é uma string de subárvore.folders/VALUE_A
é o ID da pasta do recurso raiz que você quer negar. Este recurso será negado, bem como todos os seus filhos na hierarquia de recursos.
Você também pode aplicar o prefixo
under:
a organizações e projetos, como nos exemplos a seguir:under:organizations/VALUE_X
under:projects/VALUE_Y
Veja a política efetiva atual usando
describe --effective
.gcloud org-policies describe \ LIST_CONSTRAINT --effective \ --organization=ORGANIZATION_ID
A saída do comando será:
name: organizations/ORGANIZATION_ID/policies/LIST_CONSTRAINT spec: rules: - values: deniedValues: - under:folders/VALUE_A
A política agora avalia para negar a pasta VALUE_A e todos os seus recursos filhos.
As alterações nas políticas da organização podem levar até 15 minutos para serem aplicadas.
Mesclar a política da organização em um projeto
É possível definir uma política da organização em um recurso, que se mesclará a qualquer política herdada do recurso pai. Em seguida, essa política mesclada será avaliada para criar uma nova política vigente com base nas regras de herança.
Consiga a política atual no recurso usando o comando
describe
:gcloud org-policies describe \ LIST_CONSTRAINT \ --project=PROJECT_ID
Substitua:
PROJECT_ID
: o identificador exclusivo do seu projeto.LIST_CONSTRAINT
: a restrição de lista para o serviço que você quer aplicar.
Se uma política não for definida, isso retornará um erro
NOT_FOUND
:ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
Exiba a política efetiva atual usando o comando
describe --effective
:gcloud org-policies describe \ LIST_CONSTRAINT --effective \ --project=PROJECT_ID
A saída do comando incluirá um valor negado que é herdado do recurso Organização:
name: projects/PROJECT_ID/policies/LIST_CONSTRAINT spec: rules: - values: deniedValues: - VALUE_A
Defina a política no projeto usando o comando
set-policy
.Crie um arquivo temporário
/tmp/policy.yaml
para armazenar a política:name: projects/PROJECT_ID/policies/LIST_CONSTRAINT spec: inheritFromParent: true rules: - values: deniedValues: - VALUE_B - VALUE_C
Execute o comando
set-policy
:gcloud org-policies set-policy /tmp/policy.yaml
Use o comando
describe --effective
novamente para exibir a política atualizada:gcloud org-policies describe \ LIST_CONSTRAINT --effective \ --project=PROJECT_ID
A saída do comando incluirá o resultado efetivo da mesclagem da política do recurso e do pai:
name: projects/PROJECT_ID/policies/LIST_CONSTRAINT spec: rules: - values: deniedValues: - VALUE_A - VALUE_B - VALUE_C
As alterações nas políticas da organização podem levar até 15 minutos para serem aplicadas.
Restaurar comportamento de restrição padrão
É possível usar o comando reset
para redefinir a política e usar o comportamento padrão
da restrição. Para ver uma lista de todas as restrições disponíveis e os valores
padrão, consulte Restrições da política da organização.O
exemplo a seguir presume que o comportamento de restrição padrão é permitir todos os
valores.
Encontre a política vigente no projeto para mostrar a política atual mesclada:
gcloud org-policies describe \ LIST_CONSTRAINT --effective \ --project=PROJECT_ID
Substitua PROJECT_ID pelo identificador exclusivo do seu projeto. A saída do comando será:
name: projects/PROJECT_ID/policies/LIST_CONSTRAINT spec: rules: - values: deniedValues: - VALUE_A - VALUE_B - VALUE_C
Redefina a política da organização usando o comando
reset
.gcloud org-policies reset LIST_CONSTRAINT \ --project=PROJECT_ID
Encontre a política vigente para verificar o comportamento padrão:
gcloud org-policies describe \ LIST_CONSTRAINT --effective \ --project=PROJECT_ID
A saída do comando permitirá todos os valores:
name: projects/PROJECT_ID/policies/LIST_CONSTRAINT spec: rules: - allowAll: true
As alterações nas políticas da organização podem levar até 15 minutos para serem aplicadas.
Excluir uma política da organização
Uma política da organização pode ser excluída de um recurso. Um recurso sem um conjunto de políticas da organização herdará qualquer política do respectivo recurso pai. Se você excluir a política da organização no recurso Organização, a política vigente será o comportamento padrão da restrição.
Nas etapas a seguir, descrevemos como excluir uma política de uma organização:
Exclua a política no recurso da organização usando o
delete
comando:gcloud org-policies delete \ LIST_CONSTRAINT \ --organization=ORGANIZATION_ID
Substituir ORGANIZATION_ID com o identificador exclusivo do recurso de organização. A saída do comando será:
Deleted policy [organizations/ORGANIZATION_ID/policies/LIST_CONSTRAINT]. {}
Encontre a política vigente na organização para verificar se ela não é aplicada.
gcloud org-policies describe \ LIST_CONSTRAINT --effective \ --organization=ORGANIZATION_ID
A saída do comando será:
name: organizations/ORGANIZATION_ID/policies/LIST_CONSTRAINT spec: rules: - allowAll: true
Nas etapas a seguir, descrevemos como excluir uma política da organização em um projeto:
Exclua a política em um projeto usando o comando
delete
:gcloud org-policies delete \ LIST_CONSTRAINT \ --project=PROJECT_ID
Em que
PROJECT_ID
é o identificador exclusivo do seu projeto. A saída do comando será:Deleted policy [projects/PROJECT_ID/policies/LIST_CONSTRAINT]. {}
Encontre a política vigente no projeto para verificar se ela não é aplicada.
gcloud org-policies describe \ LIST_CONSTRAINT --effective \ --project=PROJECT_ID
A saída do comando será:
name: projects/PROJECT_ID/policies/LIST_CONSTRAINT spec: rules: - allowAll: true
As alterações nas políticas da organização podem levar até 15 minutos para serem totalmente aplicadas.
Como usar restrições booleanas na política da organização
Configurar a aplicação no recurso da organização
Uma política da organização pode ser definida no recurso organização, para aplicar uma restrição booleana. O processo a seguir descreve como configurar uma organização política usando a Google Cloud CLI. Para conferir instruções sobre como visualizar e definir políticas da organização usando o console do Google Cloud, consulte Criar e gerenciar políticas.
Consiga a política atual no recurso da organização usando o comando
describe
:gcloud org-policies describe \ BOOLEAN_CONSTRAINT \ --organization=ORGANIZATION_ID
Substitua
ORGANIZATION_ID
pelo identificador exclusivo do recurso da organização. Você também pode aplicar a política da organização a uma pasta ou projeto com a as sinalizações--folder
ou--project
, e as ID da pasta e ID do projeto, respectivamente.Se uma política não for definida, isso retornará um erro
NOT_FOUND
:ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
Defina a política no projeto usando o comando
set-policy
.Crie um arquivo temporário
/tmp/policy.yaml
para armazenar a política:name: organizations/ORGANIZATION_ID/policies/BOOLEAN_CONSTRAINT spec: rules: - enforce: true
Execute o comando
set-policy
:gcloud org-policies set-policy /tmp/policy.yaml
Veja a política efetiva atual usando
describe --effective
:gcloud org-policies describe \ BOOLEAN_CONSTRAINT --effective \ --organization=ORGANIZATION_ID
A saída do comando será:
name: organizations/ORGANIZATION_ID/policies/BOOLEAN_POLICY spec: rules: - enforce: true
As alterações nas políticas da organização podem levar até 15 minutos para serem aplicadas.
Modificar a política da organização de um projeto
Para substituir a política da organização de um projeto, defina uma política que desativa a aplicação da restrição booleana a todos os recursos na hierarquia abaixo do projeto.
Encontre a política atual no recurso para mostrar que está vazia.
gcloud org-policies describe \ BOOLEAN_CONSTRAINT \ --project=PROJECT_ID
Em que
PROJECT_ID
é o identificador exclusivo do seu projeto.Se uma política não for definida, isso retornará um erro
NOT_FOUND
:ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
Encontre a política vigente do projeto, que confirma que a restrição está sendo aplicada nesse projeto.
gcloud org-policies describe \ BOOLEAN_CONSTRAINT --effective \ --project=PROJECT_ID
A saída do comando será:
name: projects/PROJECT_ID/policies/BOOLEAN_POLICY spec: rules: - enforce: true
Defina a política no projeto usando o comando
set-policy
.Crie um arquivo temporário
/tmp/policy.yaml
para armazenar a política:name: projects/PROJECT_ID/policies/BOOLEAN_CONSTRAINT spec: rules: - enforce: false
Execute o comando
set-policy
:gcloud org-policies set-policy /tmp/policy.yaml
Encontre a política vigente para mostrar que ela não é mais aplicada no projeto.
gcloud org-policies describe \ BOOLEAN_CONSTRAINT --effective \ --project=PROJECT_ID
A saída do comando será:
name: organizations/ORGANIZATION_ID/policies/BOOLEAN_POLICY spec: rules: - enforce: false
As alterações nas políticas da organização podem levar até 15 minutos para serem totalmente aplicadas.
Excluir uma política da organização
Uma política da organização pode ser excluída de um recurso. Um recurso sem um conjunto de políticas da organização herdará qualquer política do respectivo recurso pai. Se você excluir a política da organização no recurso Organização, a política vigente será o comportamento padrão das restrições.
As etapas a seguir descrevem como excluir uma política da organização em uma organização e em um projeto:
Exclua a política do recurso da organização usando o comando
delete
:gcloud org-policies delete \ BOOLEAN_CONSTRAINT \ --organization=ORGANIZATION_ID
Substituir
ORGANIZATION_ID
com um identificador exclusivo do recurso Organização. A saída de o comando será:Deleted policy [organizations/ORGANIZATION_ID/policies/BOOLEAN_CONSTRAINT]. {}
Encontre a política vigente na organização para verificar se ela não é aplicada.
gcloud org-policies describe \ BOOLEAN_CONSTRAINT --effective \ --organization=ORGANIZATION_ID
Se uma política não for definida, isso retornará um erro
NOT_FOUND
:ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
Exclua a política da organização do projeto usando o comando
delete
:gcloud org-policies delete \ BOOLEAN_CONSTRAINT \ --project=PROJECT_ID
A saída do comando será:
Deleted policy [organizations/ORGANIZATION_ID/policies/BOOLEAN_CONSTRAINT]. {}
Encontre a política vigente no projeto para verificar se ela não é aplicada.
gcloud org-policies describe \ BOOLEAN_CONSTRAINT --effective \ --project=PROJECT_ID
Substitua
PROJECT_ID
pelo identificador exclusivo do seu projeto.Se uma política não for definida, isso retornará um erro
NOT_FOUND
:ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
As alterações nas políticas da organização podem levar até 15 minutos para serem totalmente aplicadas.