Testar as alterações na política da organização com o Simulador de política

Simulador de política para políticas da organização permite visualizar o impacto de uma nova restrição personalizada ou política da organização que aplica uma restrição personalizada antes que ela seja aplicada no ambiente de produção. Simulador de política fornece uma lista de recursos que violam a política proposta antes de ser aplicada. Assim, você pode reconfigurar esses recursos, solicitar exceções ou mudar o escopo da política da organização, tudo sem interromper os desenvolvedores ou desativar seu ambiente.

Nesta página, descrevemos como testar uma alteração em uma política da organização usando Simulador de política. Ele também explica como interpretar os resultados da simulação e como aplicar a política da organização testada, se você quiser.

Antes de começar

  • Se você estiver usando a Google Cloud CLI, defina o projeto para fazer chamadas de API:

    gcloud config set project PROJECT_ID

    Substitua PROJECT_ID pelo nome ou ID do projeto.

  • Ative as APIs Policy Simulator and Resource Manager.

    Ative as APIs

  • Opcional: confira uma introdução ao serviço de políticas da organização.

Funções exigidas

Para receber as permissões necessárias para executar e acessar simulações, peça ao administrador para conceder a você o papel do IAM de administrador do simulador da OrgPolicy (roles/policysimulator.orgPolicyAdmin) na organização. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Esse papel predefinido contém as permissões necessárias para executar e acessar simulações. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para executar e acessar simulações:

  • orgpolicy.constraints.list
  • orgpolicy.customConstraints.get
  • orgpolicy.policies.list
  • cloudasset.assets.searchAllResources
  • cloudasset.assets.listResource
  • cloudasset.assets.listOrgPolicy
  • policysimulator.orgPolicyViolationsPreviews.list
  • policysimulator.orgPolicyViolationsPreviews.get
  • policysimulator.orgPolicyViolationsPreviews.create
  • policysimulator.orgPolicyViolations.list

Talvez você também consiga receber essas permissões com papéis personalizados ou outros papéis predefinidos.

Testar uma alteração de política

Você pode testar uma alteração em uma restrição personalizada, uma política da organização que impõe uma restrição personalizada ou ambas ao mesmo tempo.

Console

  1. No console do Google Cloud, acesse a página Políticas da organização.

    Acessar as políticas da organização

  2. Selecione o seletor de projetos na parte superior da página.

  3. No seletor de projeto, escolha o recurso em que você quer testar as alterações em uma política da organização. Para testar as alterações em uma restrição personalizada, selecione um recurso da organização.

  4. Se você quiser testar uma nova restrição personalizada, clique em Restrição personalizada. Se você quiser alterar uma restrição personalizada, selecione-a na lista da página Políticas da organização e clique em Editar restrição.

  5. Crie ou atualize a restrição personalizada que você quer testar.

    Por exemplo, para definir uma restrição personalizada que restringe a criação de recursos de cluster do Google Kubernetes Engine em que a autorização binária não está ativada, faça o seguinte:

    1. Na caixa Tipo de recurso, selecione container.googleapis.com/Cluster.

    2. Em Método de aplicação, selecione Aplicar na criação.

    3. Clique em Editar condição.

    4. No painel Adicionar condição, insira resource.binaryAuthorization.enabled == true.

    5. Clique em Save.

    6. Em Ação, selecione Permitir.

    Para mais informações, consulte Como criar e gerenciar restrições personalizadas.

  6. Clique em Testar restrição.

  7. Se esta for uma nova restrição ou uma restrição não aplicada por uma política da organização, você precisará definir a política da organização.

    1. Na caixa Selecionar escopo, selecione o recurso em que você quer testar essa restrição personalizada.

    2. Clique em Personalizar.

    3. Clique em Adicionar uma regra.

    4. Em Aplicação, selecione Ativada e clique em Concluído.

    5. Clique em Continuar.

A página Histórico de simulação é exibida, com uma lista das simulações realizadas por você nos últimos 14 dias. Consulte os resultados do Simulador de políticas nesta página para mais informações.

gcloud

  1. Para testar uma restrição personalizada, crie um arquivo JSON ou YAML que defina a restrição personalizada que você quer testar.

    Por exemplo, uma restrição personalizada que restringe a criação de recursos de cluster do Google Kubernetes Engine em que a autorização binária não está ativada é semelhante a esta:

    name: "organizations/ORGANIZATION_ID/customConstraints/custom.EnforceGKEBinaryAuthz"
    resource_types: "container.googleapis.com/Cluster"
    method_types: CREATE
    condition: "resource.binaryAuthorization.enabled == true"
    action_type: ALLOW
    

    Substitua ORGANIZATION_ID pelo ID da organização, como 1234567890123.

    Para mais informações sobre como criar restrições personalizadas, consulte Como criar e gerenciar restrições personalizadas.

  2. Para testar uma política da organização que aplica condicionalmente uma restrição personalizada com base na existência de uma tag específica, crie um arquivo JSON ou YAML que defina a política da organização que você quer testar.

    Por exemplo, a política da organização a seguir restringe a criação de recursos de cluster do Google Kubernetes Engine em que a autorização binária não está ativada, exceto em recursos que têm a tag env=dev anexada.

    name: "organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz"
    spec:
        rules:
       - condition:
           expression: resource.matchTag('env', 'dev')
         enforce: false
       - enforce: true
    

    Substitua ORGANIZATION_ID pelo ID da organização, como 1234567890123.

    Para mais informações sobre políticas condicionais da organização, consulte Como definir uma política da organização com tags.

  3. Para testar uma política da organização que aplique uma restrição personalizada, crie um arquivo JSON ou YAML que defina a política da organização que você quer testar.

    Por exemplo, uma política da organização que restringe a criação de recursos de cluster do Google Kubernetes Engine em que a autorização binária não está ativada é semelhante a esta:

    name: "organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz"
    spec:
        rules:
        - enforce: true
    

    Substitua ORGANIZATION_ID pelo ID da organização, como 1234567890123.

  4. Para testar a exclusão de uma política da organização que aplique uma restrição personalizada, crie um arquivo JSON ou YAML que defina a política da organização, mas não defina regras e herde a política do recurso pai.

    Por exemplo, a política da organização a seguir simularia a exclusão de uma restrição personalizada custom.EnforceGKEBinaryAuthz.

    name: "organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz"
    spec:
          inheritFromParent: true
    
  5. Execute o seguinte comando para simular a mudança na restrição personalizada, na política da organização ou em ambas:

    gcloud beta policy-intelligence simulate orgpolicy \
       --organization=ORGANIZATION_ID \
       --custom-constraints=CONSTRAINT_PATH \
       --policies=POLICY_PATH
    

Substitua:

  • ORGANIZATION_ID: o ID da organização, como 1234567890123. Não é possível simular alterações em várias organizações.

  • CONSTRAINT_PATH: o caminho completo para a restrição personalizada que você criou ou atualizou. Por exemplo, tmp/constraint.yaml. Se você definir a sinalização --policies, não será necessário configurar a sinalização --custom-constraints.

  • POLICY_PATH: o caminho completo para a política da organização que você criou ou atualizou. Por exemplo, tmp/policy.yaml. Se você definir a sinalização --custom-constraints, não será necessário configurar a sinalização --policies.

Depois de vários minutos, o comando imprime uma lista de recursos que violariam as alterações na restrição personalizada, na política da organização ou em ambas.

Os resultados também podem ser vistos no console do Google Cloud. Consulte os Resultados do simulador de política nesta página para saber como ler os resultados.

Veja a seguir um exemplo de resposta para uma simulação de política da organização. Esta simulação envolve uma restrição personalizada que restringe a criação de recursos de cluster do Google Kubernetes Engine em que a autorização binária não está ativada. Nesse caso, se a alteração proposta fosse aplicada, dois recursos do cluster violariam a política: orgpolicy-test-cluster no projeto simulator-test-project e autopilot-cluster-1 no projeto orgpolicy-test-0.

Waiting for operation [organizations/012345678901/locations/global/orgPolic
yViolationsPreviews/85be9a2d-8c49-470d-a65a-d0cb9ffa8f83/operations/1883a83
c-c448-42e5-a7c5-10a850928f06] to complete...done.
---
customConstraint:
  actionType: ALLOW
  condition: resource.binaryAuthorization.enabled == true
  methodTypes:
  - CREATE
  name: organizations/012345678901/customConstraints/custom.EnforceGKEBinaryAuthz
  resourceTypes:
  - container.googleapis.com/Cluster
name: organizations/012345678901/locations/global/orgPolicyViolationsPreviews/3dd47fd3-6df1-4156-8f10-413a3fc0ed83/orgPolicyViolations/b9fd23a5-7163-46de-9fec-7b9aa6af1113
resource:
  ancestors:
  - organizations/012345678901
  - projects/456789012345
  assetType: container.googleapis.com/Cluster
  resource: //container.googleapis.com/projects/simulator-test-project/locations/us-central1/clusters/orgpolicy-test-cluster
---
customConstraint:
  actionType: ALLOW
  condition: resource.binaryAuthorization.enabled == true
  methodTypes:
  - CREATE
  name: organizations/012345678901/customConstraints/custom.EnforceGKEBinaryAuthz
  resourceTypes:
  - container.googleapis.com/Cluster
name: organizations/012345678901/locations/global/orgPolicyViolationsPreviews/3dd47fd3-6df1-4156-8f10-413a3fc0ed83/orgPolicyViolations/e73896e6-7613-4a8d-8436-5df7a6455121
resource:
  ancestors:
  - organizations/012345678901
  - folders/789012345678
  - projects/456789012345
  assetType: container.googleapis.com/Cluster
  resource: //container.googleapis.com/projects/orgpolicy-test-0/locations/us-central1/clusters/autopilot-cluster-1

Resultados do Simulador de política

Simulador de política relata os resultados de uma alteração em uma política de restrição ou organização personalizada como uma lista de violações da política simulada. O console do Google Cloud armazena os resultados de simulações geradas nos últimos 14 dias.

Para conferir os resultados da simulação, acesse a página Histórico da simulação.

Acessar o histórico de simulação

Selecione uma simulação para conferir os detalhes. Na página Relatório de simulação, é possível acessar uma prévia das violações, que lista o número total de violações causadas pela nova política de restrição ou organização personalizada, o número de recursos verificados no escopo da simulação e a hora em que a simulação foi concluída.

Se você simulou uma restrição personalizada, clique em Detalhes da restrição para ver a configuração específica que foi simulada. Se você simulou uma política da organização, a guia Detalhes da política mostrará a configuração que foi simulada.

Todas as violações estão listadas na tabela de recursos. Cada recurso que viola a nova restrição personalizada ou política da organização é listado com um link para a entrada de recurso no Inventário de recursos do Cloud. Os recursos de projeto, pasta e organização são exibidos com a soma total de recursos abaixo deles na hierarquia que viola a nova restrição personalizada ou política da organização.

Aplicar uma alteração de política testada

Depois de testar a restrição personalizada, a política da organização ou ambas, configure a restrição personalizada e aplique a política da organização. É possível ver todos os resultados do Simulador de política no console do Google Cloud, independentemente de como eles foram gerados. Se o relatório de simulação incluir alterações em no máximo uma política da organização, será possível aplicar a política da organização diretamente por meio dos resultados da simulação. Para aplicar alterações de teste em várias políticas da organização, use a Google Cloud CLI.

Console

  1. Para aplicar os resultados de um simulador de política de restrição personalizada, acesse a página Histórico da simulação.

    Acessar o histórico de simulação

  2. Selecione o relatório de simulação para a restrição personalizada ou a política da organização que você quer aplicar.

  3. Se esse relatório de simulação incluir uma restrição personalizada, clique em Salvar restrição.

  4. Se esse relatório de simulação incluir alterações em no máximo uma política da organização, será possível aplicar essa política como uma política de simulação para monitorar o comportamento na produção sem introduzir riscos selecionando Definir política de simulação. A página Detalhes da política para a nova política da organização é exibida.

    Para aplicar a política da organização imediatamente, clique em e selecione Definir política.

gcloud

  1. Para aplicar uma restrição personalizada, é preciso configurá-la para disponibilizá-la para as políticas da organização. Para configurar uma restrição personalizada, use o comando gcloud org-policies set-custom-constraint:

    gcloud org-policies set-custom-constraint CONSTRAINT_PATH
    

    Substitua CONSTRAINT_PATH pelo caminho completo do arquivo da restrição personalizada. Por exemplo, /home/user/customconstraint.yaml.

    Depois que isso for concluído, a restrição personalizada estará disponível na sua lista de políticas da organização do Google Cloud.

  2. Para aplicar uma política da organização que contém uma restrição personalizada, use o comando gcloud org-policies set-policy:

    gcloud org-policies set-policy POLICY_PATH
    

    Substitua POLICY_PATH pelo caminho completo do arquivo YAML da política da organização.

    A política leva até 15 minutos para entrar em vigor.

Salvar resultados da simulação

Console

Se você estiver usando o console do Google Cloud, salve os resultados do Simulador de política como um arquivo CSV.

  1. Para salvar os resultados do Simulador de política, acesse a página Histórico da simulação.

    Acessar o histórico de simulação

  2. Selecione o relatório de simulação que você quer salvar.

  3. Clique em Exportar resultados completos.

gcloud

Se você estiver usando a CLI gcloud, salve os resultados do simulador de política como arquivos JSON ou YAML.

Por padrão, os resultados do teste na Google Cloud CLI são gerados no formato YAML. Para salvar um resultado de teste como um arquivo YAML, redirecione a saída do comando simulate orgpolicy ao executar a simulação:

> FILENAME

Substitua FILENAME por um nome para o arquivo de saída.

Para salvar um resultado de teste como um arquivo JSON, adicione a sinalização a seguir ao comando simulate orgpolicy ao executar a simulação:

--format=json > FILENAME

Substitua FILENAME por um nome para o arquivo de saída.

A seguir