Esta página foi traduzida pela API Cloud Translation.
Switch to English

Como definir uma política da organização com tags

Com as tags, é possível permitir ou negar condicionalmente políticas com base no fato de um recurso ter uma tag específica. Use tags e a aplicação condicional de políticas da organização para fornecer controle centralizado dos recursos na 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 instruções detalhadas sobre como usar tags, consulte Como criar e gerenciar tags.

Como definir uma política da organização com tags

Para usar tags para determinar onde uma política da organização entra em vigor, é preciso especificar 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 a política da organização ser aplicada.

Exemplo de política de lista

O exemplo a seguir demonstra como definir um arquivo de política da organização que aplique a restrição gcp.resourceLocations. Esta política da organização usa valores condicionais e não condicionais, definidos no mesmo arquivo de política.

Para definir a política da organização, execute o seguinte comando:

gcloud org-policies set-policy POLICY_PATH

Em que POLICY_PATH é o caminho completo para o arquivo JSON da política da organização, que deve ser semelhante ao seguinte:

{
  "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"]
        }
      }
    ]
  }
}

Em que:

  • RESOURCE_TYPE é organizations, folders ou projects.

  • RESOURCE_ID é o ID da organização, ID da pasta, ID do projeto ou número do projeto, dependendo do tipo de recurso especificado em RESOURCE_TYPE.

  • ORGANIZATION_ID é a organização pai da chave da tag.

Para a política da organização acima, o recurso e todos os recursos filhos dele terão a restrição gcp.resourceLocations aplicada a eles, com apenas allowedValues de us-east1-locations. Qualquer um desses recursos que tenha a tag location: us-west1 terá a restrição gcp.resourceLocations aplicada a ela, com allowedValues de us-east1-locations e us-west1-locations.

Dessa forma, os 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 política booleana

O exemplo a seguir demonstra como definir um arquivo de política da organização que aplique a restrição compute.disableSerialPortAccess. Essa política da organização especifica que todas as portas seriais acessíveis a recursos, mas usa uma condição para restringir apenas o acesso à porta serial para recursos que tenham a tag correspondente.

Para definir a política da organização, execute o seguinte comando:

gcloud org-policies set-policy POLICY_PATH

Em que POLICY_PATH é o caminho completo para o arquivo JSON da política da organização, que deve ser semelhante ao seguinte:

{
  "name": "RESOURCE_TYPE/RESOURCE_ID/policies/gcp.disableSerialPortAccess",
  "spec": {
    "rules": [
      {
        "condition": {
          "expression": "resource.matchTag(\"ORGANIZATION_ID/disableSerialAccess\", \"yes\")"
        },
        "enforce": true
      },
      {
        "enforce": false
      }
    ]
  }
}

Em que:

  • RESOURCE_TYPE é organizations, folders ou projects.

  • RESOURCE_ID é seu ID da organização, ID da pasta, ID do projeto ou o número do projeto.

  • ORGANIZATION_ID é a organização pai da chave da tag.

Para a política da organização acima, o recurso e todos os recursos filhos dele terão a restrição gcp.disableSerialPortAccess aplicada a eles. Todos os recursos que tiverem a tag disableSerialAccess: yes serão negados pela política da organização. Qualquer recurso que não tiver a tag disableSerialAccess: yes não terá a restrição aplicada a eles.

Adicionar condicionalmente restrições à política da organização

É possível usar tags para adicionar condicionalmente as restrições da política da organização aos recursos com base nas tags anexadas. É possível adicionar várias condições dentro da mesma política da organização, o que oferece um controle detalhado dos recursos em que você quer aplicar a política da organização.

Linguagem de expressão comum, 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 mais informações, 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 esses recursos. Para fazer isso, crie uma política da organização que aplique a restrição gcp.resourceLocations 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

Em que ORGANIZATION_ID é a organização pai da sua chave de tag.

No exemplo acima, qualquer recurso que tenha a tag location: us-east anexada será restrito aos locais no grupo de valores us-east1-locations. Qualquer recurso que tenha a tag location: us-west anexada será restrito aos locais no grupo de valores us-west1-locations. Todos os recursos da organização serão bloqueados em locais no 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

Herança de políticas da organização

As restrições de Lista da política da organização que são ativadas usando tags serão mescladas com a política da organização existente, de acordo com as regras normais de herança. Essas regras condicionais serão aplicadas apenas se a condição for verdadeira.

As restrições Booleanas da política da organização ativadas usando tags substituirão a política da organização atual. Além disso, como as políticas booleanas podem ter apenas dois estados, verdadeiro ou falso, todas as instruções condicionais precisam ser opostas da instrução não condicional para evitar que várias tags sejam conflitantes entre si.

Por exemplo, considere uma política da organização que aplique a restrição 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 mais informações sobre como usar tags, leia a página Como criar e gerenciar tags.

Para mais informações sobre como criar e gerenciar restrições da política da organização, consulte Como usar restrições.