As tags fornecem uma maneira de permitir ou negar políticas condicionalmente se um recurso tiver uma tag específica. Você pode usar tags e aplicação condicional de políticas da organização para fornecer controle centralizado dos recursos em sua hierarquia.
Antes de começar
Para mais informações sobre o que são tags e como elas funcionam, consulte a Visão geral das tags.
Para ver instruções detalhadas sobre como usar tags, consulte Como criar e gerenciar tags.
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.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
É possível delegar a administração das políticas da organização adicionando Condições do IAM à vinculação de função de administrador de políticas da organização. Para controlar os recursos em que um principal pode gerenciar políticas da organização, condicione a vinculação de função a uma tag específica. Para mais informações, consulte Como usar restrições.
Como definir uma Política da Organização com tags
Para usar tags para determinar onde uma política da organização precisa entrar em vigor, especifique uma condição no arquivo YAML da política da organização. É possível definir a condição para corresponder a um determinado par de chave-valor de tag, exigindo que um determinado valor de tag seja definido para que a política da organização seja aplicada.
Também é possível definir a condição para corresponder a uma chave de tag. Isso permite ativar ou desativar a aplicação em todos os recursos com essa chave de tag, independente do valor de tag anexado.
A maioria das políticas da organização é avaliada e aplicada quando um recurso é criado ou atualizado. As tags obrigatórias podem ser usadas para governar os recursos à medida que são criados.
Exemplo de regra de lista
No exemplo a seguir, demonstramos como definir uma política da organização que
aplica a restrição gerenciada legada gcp.resourceLocations
. Essa política da organização usa valores condicionais e não condicionais, definidos no mesmo arquivo de política.
Console
Para definir a política da organização usando , faça o seguinte:
No console do Google Cloud , acesse a página Políticas da organização.
No seletor de projetos, selecione o projeto em que você quer definir a política da organização.
Na página Políticas da organização, selecione uma restrição na lista. A página Detalhes da política dessa restrição aparece.
Para atualizar a política da organização nesse recurso, clique em Gerenciar política.
Na página Editar política, selecione Substituir a política do recurso pai.
Em Política de aplicação, selecione uma opção para aplicação:
Para mesclar e avaliar as políticas da organização juntas, selecione Mesclar com pai. Para saber mais informações sobre herança e hierarquia de recursos, consulte Noções básicas sobre avaliação de hierarquia.
Para modificar políticas herdadas de um recurso pai, selecione Substituir.
Clique em Adicionar regra.
Em Valores da política, selecione se esta política da organização precisa permitir ou negar valores ou especificar um conjunto personalizado de valores.
- Os valores específicos aceitos pela política dependem do serviço a que a política se aplica. Para ver uma lista de restrições e os valores aceitos, consulte Restrições da política da organização.
Para tornar a política da organização condicional em uma tag, clique em Adicionar condição.
No campo Título, insira um nome para a condição.
No campo Descrição, defina uma descrição para a condição. A descrição oferece contexto sobre as tags necessárias e como elas afetam os recursos.
Você pode usar o Criador de condições para criar uma condição que exija uma tag específica para que a restrição entre em vigor.
Na caixa Tipo de condição, selecione Tag.
Selecione o Operador para sua condição.
Para corresponder a uma tag inteira, use o operador has value com o nome do namespace da tag ou o operador has value ID com os IDs de chave e valor da tag.
Para corresponder apenas à chave de tag, use o operador has key com o nome do namespace da chave de tag ou o operador has key ID com o ID da chave de tag.
Para criar várias condições, clique em Adicionar. Se você adicionar outra condição, poderá definir a lógica condicional para exigir todas elas alternando E. É possível configurar a lógica condicional para exigir que apenas uma das condições seja verdadeira, alternando Or.
É possível excluir uma expressão clicando no X grande à direita dos campos de condição.
Quando terminar de editar as condições, clique em Salvar.
O Editor de condições pode ser usado para criar uma expressão condicional de maneira programática. Também será exibida uma renderização programática do conjunto atual de condições.
- É possível usar o Editor de condições para aplicar o operador lógico
!
. Por exemplo, a consulta!resource.matchTag('ORGANIZATION_ID/location', 'us-west1')
aplicará a restrição da política da organização a qualquer recurso que não tenha a tagus-west1
.
- É possível usar o Editor de condições para aplicar o operador lógico
Para aplicar a política, clique em Definir política.
gcloud
Para definir a política da organização, crie um arquivo YAML para armazenar a política:
name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.resourceLocations
spec:
rules:
# As there is no condition specified, this allowedValue is enforced unconditionally.
- values:
allowedValues:
- us-east1-locations
# This condition applies to the values block.
- condition:
expression: "resource.matchTag('ORGANIZATION_ID/location', 'us-west1')"
values:
allowedValues:
- us-west1-locations
É possível corresponder a uma tag inteira com a condição usando o operador resource.matchTag
com o nome qualificado da tag.
Para corresponder apenas à chave de tag, use o operador resource.hasTagKey
com o nome de namespace da chave. Para corresponder a qualquer valor de tag para uma determinada chave de tag, use o operador resource.hasTagKeyID
com o ID da chave de tag.
Execute o comando set-policy
:
gcloud org-policies set-policy POLICY_PATH
Substitua:
POLICY_PATH
: o caminho completo para o arquivo YAML da política da organizaçãoRESOURCE_TYPE
:organizations
,folders
ouprojects
RESOURCE_ID
: o ID da organização, da pasta, do ID do projeto ou o número do projeto, dependendo do tipo de recurso especificado emRESOURCE_TYPE
.ORGANIZATION_ID
: a organização pai da chave de tag
Para essa política da organização, o recurso e todos os recursos filhos têm
a restrição gerenciada legada gcp.resourceLocations
aplicada a eles,
com allowedValues
de us-east1-locations
. Qualquer um desses recursos com a tag location: us-west1
terá a restrição legada gerenciada gcp.resourceLocations
aplicada a ela, com allowedValues
de us-east1-locations
e us-west1-locations
.
Dessa forma, conjuntos de valores condicionais e não condicionais podem ser aplicados a uma restrição em uma única Política da Organização.
Exemplo de regra booleana
No exemplo a seguir, demonstramos como definir uma política da organização que
aplica a restrição gerenciada legada compute.disableSerialPortAccess
. Essa política da organização especifica que todas as portas seriais podem ser acessadas pelos recursos, mas usa uma condição para restringir apenas o acesso à porta serial para recursos que tenham a tag correspondente.
Console
Para definir a política da organização usando , faça o seguinte:
No console do Google Cloud , acesse a página Políticas da organização.
No seletor de projetos, selecione o projeto em que você quer definir a política da organização.
Selecione uma restrição na lista da página Políticas da organização. A página Detalhes da política dessa restrição será exibida.
Para atualizar a política da organização nesse recurso, clique em Gerenciar política.
Na página Editar política, selecione Substituir a política do recurso pai.
Clique em Adicionar regra.
Em Aplicação, selecione se a aplicação dessa política da organização precisa ser ativada ou desativada.
Para tornar a política da organização condicional em uma tag, clique em Adicionar condição. Se você adicionar uma regra condicional a uma política da organização, inclua apenas uma regra não condicional. Caso contrário, a não será possível salvar a política.
No campo Título, insira um nome para a condição.
No campo Descrição, defina uma descrição para a condição. A descrição oferece contexto sobre as tags necessárias e como elas afetam os recursos.
Você pode usar o Criador de condições para criar uma condição que exija uma tag específica para que a restrição entre em vigor.
Na caixa Tipo de condição, selecione Tag.
Selecione o Operador para sua condição.
Para corresponder a uma tag inteira, use o operador has value com o nome do namespace da tag ou o operador has value ID com os IDs de chave e valor da tag.
Para corresponder apenas à chave de tag, use o operador has key com o nome do namespace da chave de tag ou o operador has key ID com o ID da chave de tag.
Para criar várias condições, clique em Adicionar. Se você adicionar outra condição, poderá definir a lógica condicional para exigir todas elas alternando E. É possível configurar a lógica condicional para exigir que apenas uma das condições seja verdadeira, alternando Or.
É possível excluir uma expressão clicando no X grande à direita dos campos de condição.
Quando terminar de editar as condições, clique em Salvar.
Uma política da organização com uma condição aplicada precisa ter apenas uma regra não condicional. Clique em Adicionar regra e defina se a aplicação dessa política da organização deve ser ativada ou desativada por padrão.
O Editor de condições pode ser usado para criar uma expressão condicional de maneira programática. Também será exibida uma renderização programática do conjunto atual de condições.
- É possível usar o Editor de condições para aplicar o operador lógico
!
. Por exemplo, a consulta!resource.matchTag('ORGANIZATION_ID/location', 'us-west1')
aplicará a restrição da política da organização a qualquer recurso que não tenha a tagus-west1
.
- É possível usar o Editor de condições para aplicar o operador lógico
Para finalizar e aplicar a política da organização, clique em Salvar.
gcloud
Para definir a política da organização, crie um arquivo YAML para armazenar a política:
name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.disableSerialPortAccess
spec:
rules:
- condition:
expression: "resource.matchTag(\"ORGANIZATION_ID/disableSerialAccess\", \"yes\")"
enforce: true
- enforce: false
É possível corresponder a uma tag inteira com a condição usando o operador resource.matchTag
com o nome qualificado da tag.
Para corresponder apenas à chave de tag, use o operador resource.hasTagKey
com o nome de namespace da chave. Para corresponder a qualquer valor de tag para uma determinada chave de tag, use o operador resource.hasTagKeyID
com o ID da chave de tag.
Execute o comando set-policy
:
gcloud org-policies set-policy POLICY_PATH
Substitua:
POLICY_PATH
: o caminho completo para o arquivo YAML da política da organizaçãoRESOURCE_TYPE
:organizations
,folders
ouprojects
RESOURCE_ID
: o ID da organização, da pasta, do ID do projeto ou o número do projetoORGANIZATION_ID
: a organização pai da chave de tag
Para essa política da organização, o recurso e todos os recursos filhos
têm a restrição gerenciada legada gcp.disableSerialPortAccess
aplicada
a eles. Todos os recursos com a tag disableSerialAccess: yes
são
negados pela política da organização. Os recursos que não tiverem a tag disableSerialAccess: yes
não terão a restrição gerenciada legada aplicada.
Adicionar regras condicionalmente à política da organização
É possível usar tags para adicionar regras de restrição condicionalmente a recursos com base nas tags anexadas. É possível adicionar várias condições na mesma política da organização, o que oferece um controle refinado dos recursos a que você quer aplicar a política da organização.
Common Expression Language, ou CEL, é a linguagem de expressão usada para
especificar expressões condicionais. Uma expressão condicional consiste em uma ou mais instruções unidas por operadores lógicos (&&
, ||
ou !
). Para
saber mais, consulte a
especificação da CEL e a respectiva definição de
linguagem.
Considere uma política da organização para restringir os locais em que os recursos podem ser criados com base nas tags aplicadas a eles. Para fazer isso,
crie uma política da organização que aplique a restrição gcp.resourceLocations
gerenciada legada e use condições para restringir a aplicação apenas a
determinados recursos.
Comece criando um arquivo temporário, /tmp/policy.yaml
, para conter a
política da organização:
name: organizations/ORGANIZATION_ID/policies/gcp.resourceLocations
spec:
rules:
- condition:
expression: "resource.matchTag('ORGANIZATION_ID/location', 'us-east')"
values:
allowedValues:
- in:us-east1-locations
- condition:
expression: "resource.matchTag('ORGANIZATION_ID/location', 'us-west')"
values:
allowedValues:
- in:us-west1-locations
- values:
deniedValues:
- in:asia-south1-locations
Substitua ORGANIZATION_ID
pela organização principal da
chave de tag.
Neste exemplo, qualquer recurso que tenha a tag location: us-east
anexada será restrito a locais dentro do grupo de valor us-east1-locations
. Qualquer recurso que tenha a tag location: us-west
anexada será restrito a locais dentro do grupo de valores us-west1-locations
. Todos os recursos da
organização serão bloqueados nos locais dentro do grupo
de valores asia-south1-locations
.
Em seguida, defina a política usando o comando set-policy
:
gcloud org-policies set-policy /tmp/policy.yaml
Como restringir recursos sem tag
É possível usar tags e políticas condicionais da organização para restringir recursos que não estão usando uma tag específica. Se você definir uma política da organização em um recurso que restringe serviços e a condicionar à presença de uma tag, nenhum recurso filho derivado desse recurso poderá ser usado, a menos que tenha sido marcado. Assim, os recursos precisam ser configurados de acordo com seu plano de governança antes de serem usados.
Para restringir recursos não identificados de organização, pasta ou projeto, use o operador lógico !
em uma consulta condicional ao criar a política da organização.
Por exemplo, para permitir o uso de sqladmin.googleapis.com
apenas em projetos
que tenham a tag sqladmin=enabled
, crie uma política da organização que
negue sqladmin.googleapis.com
em projetos que não tenham a tag
sqladmin=enabled
.
Crie uma tag que identifique se os recursos tiveram a governança adequada aplicada. Por exemplo, é possível criar uma tag com a chave
sqlAdmin
e o valorenabled
para designar que esse recurso deve permitir o uso da API Cloud SQL Admin. Exemplo:Clique no nome da tag recém-criada. Você vai precisar do nome com namespace da chave de tag, listado em Caminho da chave de tag, nas próximas etapas para criar uma condição.
Crie uma política da organização Restringir o uso do serviço de recursos no nível do recurso da organização para negar o acesso à API Cloud SQL Admin. Exemplo:
Adicione uma condição à política da organização acima, especificando que ela será aplicada se a tag de governança não estiver presente. O operador lógico NOT não é compatível com o criador de condições. Portanto, essa condição precisa ser criada no editor de condições. Exemplo:
!resource.matchTag("012345678901/sqlAdmin", "enabled")
Agora, a tag sqlAdmin=enabled
precisa ser anexada ou herdada por um projeto
antes que os desenvolvedores possam usar a API Cloud SQL Admin com ele.
Herança da Política da Organização
As restrições com regras de lista ativadas usando tags são mescladas com a política da organização atual, de acordo com as regras normais de herança. Essas regras condicionais só são válidas se a condição for verdadeira.
As restrições com regras booleanas ativadas usando tags substituem a política da organização. Além disso, como as regras booleanas têm apenas dois estados, verdadeiro ou falso, todas as instruções condicionais precisam ser o oposto da declaração sem condição, impedindo que várias tags entrem em conflito.
Por exemplo, considere uma política da organização que imponha a
restrição gerenciada legada disableSerialPortAccess
. O valor incondicional,
usado se nenhuma condição o substituir, é verdadeiro. Portanto, qualquer outra declaração
condicional dessa política precisa ser configurada como falsa para não
entrar em conflito.
A seguir
Para obter mais informações sobre como usar tags, leia a página Criando e gerenciando tags.
Para mais informações sobre como criar e gerenciar restrições da política da organização, consulte Como usar restrições.