Teste alterações às políticas da organização com o Simulador de políticas

O Simulador de políticas para a Política de organização permite-lhe pré-visualizar o impacto de uma nova restrição personalizada ou política de organização que aplique uma restrição personalizada ou gerida antes de ser aplicada no seu ambiente de produção. O simulador de políticas fornece uma lista de recursos que violam a política proposta antes de ser aplicada, o que lhe permite reconfigurar esses recursos, pedir exceções ou alterar o âmbito da sua política da organização, tudo sem interromper os seus programadores nem desativar o seu ambiente.

Esta página descreve como testar uma alteração a uma política da organização através do simulador de políticas. Também explica como interpretar os resultados da simulação e como aplicar a política da organização testada, se assim o pretender.

Antes de começar

  • Se estiver a usar a Google Cloud CLI, defina o projeto que quer usar para fazer chamadas API:

    gcloud config set project PROJECT_ID

    Substitua PROJECT_ID pelo nome ou ID do projeto.

  • Enable the Policy Simulator and Resource Manager APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

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

Funções necessárias

Para receber as autorizações de que precisa para executar e aceder a simulações, peça ao seu administrador para lhe conceder a função de IAM Administrador do simulador da OrgPolicy (roles/policysimulator.orgPolicyAdmin) na organização. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Esta função predefinida contém as autorizações necessárias para executar e aceder a simulações. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para executar e aceder a 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

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Teste uma alteração de política

Pode testar uma alteração a uma restrição personalizada, a uma política organizacional que aplique uma restrição personalizada ou gerida, ou ambas ao mesmo tempo.

Teste uma alteração a uma restrição personalizada

Consola

  1. Na Google Cloud consola, aceda à página Políticas de organização.

    Aceda às políticas da organização

  2. No seletor de organizações, selecione o recurso da sua organização.

  3. Efetue um dos seguintes passos:

    • Para testar uma nova restrição personalizada, clique em Restrição personalizada.

    • Para fazer alterações a uma restrição personalizada existente, selecione-a na lista na página Políticas da organização e, de seguida, clique em Editar restrição.

  4. Crie ou atualize a restrição personalizada que quer testar.

    1. Na caixa Nome a apresentar, introduza um nome simples para a restrição. Este campo tem um comprimento máximo de 200 carateres. Não use IIP nem dados confidenciais nos nomes a apresentar, uma vez que podem ser expostos em mensagens de erro.

    2. Na caixa ID da restrição, introduza o nome que quer para a nova restrição personalizada. Uma restrição personalizada tem de começar com custom. e só pode incluir letras maiúsculas, letras minúsculas ou números, por exemplo, custom.disableGkeAutoUpgrade. O comprimento máximo deste campo é de 70 carateres, sem contar com o prefixo, por exemplo, organizations/123456789/customConstraints/custom.. Não inclua IIP nem dados confidenciais no ID da restrição, uma vez que podem ser expostos em mensagens de erro.

      Não é possível alterar o ID da restrição após a criação de uma restrição personalizada.

    3. Na caixa Descrição, introduza uma descrição simples da restrição a apresentar como mensagem de erro quando a política for violada. Este campo tem um comprimento máximo de 2000 carateres. Não inclua IIP nem dados confidenciais na descrição, uma vez que podem ser expostos em mensagens de erro.

    4. Na caixa Tipo de recurso, selecione o nome do Google Cloud recurso REST que contém o objeto e o campo que quer restringir, por exemplo, container.googleapis.com/NodePool. A maioria dos tipos de recursos pode ter um máximo de 20 restrições personalizadas por recurso. Se tentar criar uma restrição personalizada para um recurso que já tenha o número máximo de restrições personalizadas, a operação falha.

    5. Na secção Método de aplicação, selecione se quer aplicar a restrição num método REST CREATE ou em ambos os métodos CREATE e UPDATE. Nem todos os serviços Google Cloud suportam ambos os métodos. Para ver os métodos suportados para cada serviço, encontre o serviço em Serviços suportados.

    6. Para definir uma condição, clique em Editar condição.

    7. No painel Adicionar condição, crie uma condição CEL que se refira a um recurso de serviço suportado, por exemplo, resource.management.autoUpgrade == false. Este campo tem um comprimento máximo de 1000 carateres. Para ver detalhes sobre a utilização do IEC, consulte o artigo Idioma de expressão comum. Para mais informações acerca dos recursos de serviço que pode usar nas suas restrições personalizadas, consulte o artigo Serviços suportados por restrições personalizadas.

    8. Clique em Guardar.

    9. Na secção Ação, selecione se quer permitir ou negar o método avaliado se a condição que escreveu for cumprida.

      A ação deny significa que a operação para criar ou atualizar o recurso é bloqueada se a condição for avaliada como verdadeira.

      A ação allow significa que a operação para criar ou atualizar o recurso só é permitida se a condição for avaliada como verdadeira. Todos os outros casos, exceto os explicitamente indicados na condição, são bloqueados.

  5. Clique em Restrição de teste.

  6. Se esta for uma nova restrição, é apresentado o painel Configurar política da organização. Para definir uma política da organização que aplique a restrição personalizada, faça o seguinte:

    1. Na caixa Selecionar âmbito, selecione o recurso para o qual quer testar a restrição personalizada.

    2. Clique em Substituir política dos pais.

    3. Clique em Adicionar regra.

    4. Na secção Aplicação, selecione Ativada.

    5. Opcionalmente, para tornar a política da organização condicional a uma etiqueta, clique em Adicionar condição. Se adicionar uma regra condicional a uma política da organização, tem de adicionar, pelo menos, uma regra incondicional ou não é possível guardar a política. Para mais detalhes, consulte o artigo Definir uma política da organização com etiquetas.

    6. Clique em Concluído e, de seguida, em Continuar.

É apresentada a página Histórico de simulações com uma lista das simulações realizadas por si nos últimos 14 dias. Consulte os resultados do Simulador de políticas nesta página para mais informações.

gcloud

  1. Para testar a aplicação de uma restrição personalizada nova ou atualizada, crie um ficheiro JSON ou YAML que defina a restrição personalizada que quer testar.

    Se quiser testar alterações a uma restrição personalizada existente, pode usar o comando organizations.customConstraints.get gcloud CLI para obter a representação JSON ou YAML atual da restrição personalizada e, em seguida, fazer edições nesse ficheiro.

    Um ficheiro YAML que define uma restrição personalizada tem um aspeto semelhante ao seguinte:

    name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
    resourceTypes:
    - RESOURCE_NAME
    methodTypes:
    - METHOD1
    - METHOD2
    condition: "CONDITION"
    actionType: ACTION
    displayName: DISPLAY_NAME
    description: DESCRIPTION
    

    Substitua o seguinte:

    • ORGANIZATION_ID: o ID da sua organização, como 123456789.

    • CONSTRAINT_NAME: o nome que quer para a nova restrição personalizada. Uma restrição personalizada tem de começar com custom. e só pode incluir letras maiúsculas, letras minúsculas ou números, por exemplo, custom.disableGkeAutoUpgrade. O comprimento máximo deste campo é de 70 carateres, sem contar com o prefixo, por exemplo, organizations/123456789/customConstraints/custom..

    • RESOURCE_NAME: o nome totalmente qualificado do recurso REST que contém o objeto e o campo que quer restringir.Google Cloud Por exemplo, container.googleapis.com/NodePool. A maioria dos tipos de recursos pode ter um máximo de 20 restrições personalizadas por recurso. Se tentar criar uma restrição personalizada para um recurso que já tenha o número máximo de restrições personalizadas, a operação falha. Para mais informações sobre os recursos de serviço que pode usar nas suas restrições personalizadas, consulte os serviços suportados de restrições personalizadas.

    • METHOD1,METHOD2: uma lista de métodos RESTful para os quais aplicar a restrição. Pode ser CREATE ou CREATE e UPDATE. Nem todos os serviços Google Cloud suportam ambos os métodos. Para ver os métodos suportados para cada serviço, encontre o serviço em Serviços suportados.

    • CONDITION: uma condição CEL que se refere a um recurso de serviço suportado, por exemplo, "resource.management.autoUpgrade == false". Este campo tem um comprimento máximo de 1000 carateres. Para ver detalhes sobre a utilização do IEC, consulte o artigo Idioma de expressão comum.

    • ACTION: a ação a tomar se a condição condition for cumprida. Pode ser ALLOW ou DENY.

      • A ação de recusa significa que, se a condição for avaliada como verdadeira, a operação para criar ou atualizar o recurso é bloqueada.

      • A ação allow significa que, se a condição for avaliada como verdadeira, a operação para criar ou atualizar o recurso é permitida. Isto também significa que todos os outros casos, exceto o que está explicitamente indicado na condição, são bloqueados.

    • DISPLAY_NAME: um nome simples para a restrição. Este campo tem um comprimento máximo de 200 carateres.

    • DESCRIPTION: uma descrição acessível da restrição a apresentar como uma mensagem de erro quando a política é violada. Este campo tem um comprimento máximo de 2000 caracteres. Para mais informações sobre como criar restrições personalizadas, consulte o artigo Criar e gerir restrições personalizadas.

  2. Crie ou modifique uma política da organização que aplique a restrição personalizada.

    • Para testar a aplicação de uma restrição personalizada nova ou atualizada, crie um ficheiro JSON ou YAML que defina a política de organização que quer testar:

      name: organizations/ORGANIZATION_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - enforce: true
      

      Substitua o seguinte:

      • ORGANIZATION_ID com o ID da sua organização, como 1234567890123.

      • CONSTRAINT_NAME com o nome da restrição personalizada que quer testar. Por exemplo, custom.EnforceGKEBinaryAuthz.

    • Para testar a aplicação de uma restrição personalizada condicionalmente com base na existência de uma etiqueta específica, crie um ficheiro JSON ou YAML que defina a política da organização:

      name: organizations/ORGANIZATION_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - condition:
            expression: CONDITION
          enforce: false
        - enforce: true
      

      Substitua o seguinte:

      • ORGANIZATION_ID com o ID da sua organização, como 1234567890123.

      • CONSTRAINT_NAME com o nome da restrição personalizada que quer testar. Por exemplo, custom.EnforceGKEBinaryAuthz.

      • CONDITION com uma condição CEL que se refere a um recurso de serviço suportado, por exemplo, "resource.matchTag('env', 'dev')".

      Para mais informações sobre as políticas de organização condicionais, consulte o artigo Definir uma política de organização com etiquetas.

    • Para testar a eliminação de uma política da organização que aplica uma restrição personalizada, crie um ficheiro JSON ou YAML que defina a política da organização sem regras definidas, exceto para herdar a política do respetivo recurso principal:

      name: organizations/ORGANIZATION_ID/policies/CONSTRAINT_NAME
      spec:
        inheritFromParent: true
      

      Substitua o seguinte:

      • ORGANIZATION_ID com o ID da sua organização, como 1234567890123.

      • CONSTRAINT_NAME com o nome da restrição personalizada que quer testar. Por exemplo, custom.EnforceGKEBinaryAuthz.

  3. Para simular a alteração a uma restrição personalizada, a uma política da organização ou a ambas, execute o comando policy-intelligence simulate orgpolicy:

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

    Substitua o seguinte:

    • ORGANIZATION_ID: o ID da sua organização, como 1234567890123. A simulação de alterações em várias organizações não é suportada.

    • CONSTRAINT_PATH: o caminho completo para a restrição personalizada que criou ou atualizou. Por exemplo, tmp/constraint.yaml. Se definir a flag --policies, não precisa de definir a flag --custom-constraints.

    • POLICY_PATH: o caminho completo para a política da organização que criou ou atualizou. Por exemplo, tmp/policy.yaml se definir a flag --custom-constraints, não precisa de definir a flag --policies.

Após vários minutos, o comando imprime uma lista de recursos que violariam as alterações à restrição personalizada, à política da organização ou a ambas.

Os resultados também são visíveis na página Histórico de simulação da Google Cloud consola. Consulte os resultados do Simulador de políticas nesta página para saber como ler os resultados.

Segue-se uma resposta de exemplo para uma simulação de política de organização. Esta simulação envolve uma restrição personalizada que restringe a criação de recursos do cluster do Google Kubernetes Engine onde a Autorização binária não está ativada. Neste caso, se a alteração proposta fosse aplicada, dois recursos de 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

Teste uma alteração a uma restrição gerida

Consola

  1. Na Google Cloud consola, aceda à página Políticas de organização.

    Aceda às políticas da organização

  2. Clique em Selecionar projeto e, de seguida, selecione a organização, a pasta ou o recurso do projeto para o qual quer editar a política da organização.

  3. Na lista, selecione a restrição gerida para a qual quer atualizar a política da organização. Na página Detalhes da política, pode ver a origem desta política de organização, a avaliação da política eficaz neste recurso e mais detalhes sobre a restrição gerida.

  4. Para atualizar a política da organização para este recurso, clique em Gerir política.

  5. Na página Editar política, selecione Substituir política do elemento principal.

  6. Clique em Adicionar regra.

  7. Na secção Aplicação, selecione se a aplicação desta política de organização deve estar ativada ou desativada.

  8. Opcionalmente, para tornar a política da organização condicional a uma etiqueta, clique em Adicionar condição. Se adicionar uma regra condicional a uma política da organização, tem de adicionar, pelo menos, uma regra incondicional ou não é possível guardar a política. Para mais detalhes, consulte o artigo Definir uma política da organização com etiquetas.

  9. Clique em Testar alterações.

É apresentada a página Histórico de simulações com uma lista das simulações realizadas por si nos últimos 14 dias. Consulte os resultados do Simulador de políticas nesta página para mais informações.

gcloud

  1. Crie ou modifique uma política organizacional que aplique uma restrição gerida.

    • Para testar a criação ou a atualização de uma política da organização que aplique uma restrição gerida, crie um ficheiro JSON ou YAML que defina a política da organização.

      name: RESOURCE_TYPE/RESOURCE_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - enforce: ENFORCEMENT_STATE
      

      Substitua o seguinte:

      • RESOURCE_TYPE com organizations, folders ou projects.

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

      • CONSTRAINT_NAME com o nome da restrição gerida que quer testar. Por exemplo, iam.managed.disableServiceAccountKeyCreation.

      • ENFORCEMENT_STATE com true para aplicar esta política de organização quando definida ou false para a desativar quando definida.

      Opcionalmente, para tornar a política da organização condicional a uma etiqueta, adicione um bloco condition ao rules. Se adicionar uma regra condicional a uma política da organização, tem de adicionar, pelo menos, uma regra incondicional. Caso contrário, não é possível guardar a política. Para mais detalhes, consulte o artigo Definir uma política da organização com etiquetas.

    • Para testar a eliminação de uma política da organização que aplica uma restrição gerida, crie um ficheiro JSON ou YAML que defina a política da organização sem regras definidas, exceto para herdar a política do respetivo recurso principal:

      name: organizations/ORGANIZATION_ID/policies/CONSTRAINT_NAME
      spec:
        inheritFromParent: true
      

    Substitua o seguinte:

    • ORGANIZATION_ID com o ID da sua organização.

    • CONSTRAINT_NAME com o nome da restrição gerida que quer eliminar. Por exemplo, iam.managed.disableServiceAccountKeyCreation.

  2. Execute o comando policy-intelligence simulate orgpolicy:

    gcloud policy-intelligence simulate orgpolicy \
      --organization=ORGANIZATION_ID \
      --policies=POLICY_PATH
    

    Substitua o seguinte:

    • ORGANIZATION_ID com o ID da sua organização, como 1234567890123. A simulação de alterações em várias organizações não é suportada.

    • POLICY_PATH com o caminho completo para o ficheiro YAML da política da organização.

    Após vários minutos, o comando imprime uma lista de recursos que violariam as alterações à restrição personalizada, à política da organização ou a ambas.

    Os resultados também são visíveis na página Histórico de simulação da Google Cloud consola. Consulte os resultados do Simulador de políticas nesta página para saber como ler os resultados.

Resultados do Simulador de políticas

O simulador de políticas comunica os resultados de uma alteração numa restrição personalizada ou numa política da organização como uma lista de violações da política simulada. A consola armazena os resultados das simulações geradas por si nos últimos 14 dias.Google Cloud

Para ver os resultados da simulação, aceda à página Histórico de simulações.

Aceda ao histórico de simulações

Selecione uma simulação para ver os detalhes. Na página Relatório de simulação, pode ver a pré-visualização das violações, que indica o número total de violações causadas pela nova restrição personalizada ou política da organização, o número de recursos que foram verificados no âmbito da simulação e a hora em que a simulação foi concluída.

Se simulou uma restrição personalizada, pode clicar em Detalhes da restrição para ver a configuração específica que foi simulada. Se simulou uma política de organização, o separador Detalhes da política mostra 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 de organização é apresentado com um link para a entrada do recurso no Cloud Asset Inventory. Os recursos de projeto, pasta e organização são apresentados com o total de recursos abaixo deles na hierarquia que violam a nova restrição personalizada ou política da organização.

Aplique uma alteração de política testada

Depois de testar a restrição personalizada, a política da organização ou ambas, pode configurar a restrição personalizada e aplicar a política da organização. Pode ver todos os resultados do Simulador de políticas na Google Cloud consola, independentemente da forma como foram gerados. Se o relatório de simulação incluir alterações a, no máximo, uma política da organização, pode aplicar a política da organização diretamente através dos resultados da simulação. Para aplicar alterações de teste em várias políticas de organização, use a CLI Google Cloud.

Consola

  1. Para aplicar uma restrição personalizada aos resultados do Simulador de políticas, aceda à página Histórico de simulações.

    Aceda ao histórico de simulações

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

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

  4. Se este relatório de simulação incluir alterações a não mais do que uma política da organização, pode aplicar essa política da organização como uma política de execução de ensaio para monitorizar o comportamento em produção sem introduzir riscos clicando em Definir política de execução de ensaio. É apresentada a página Detalhes da política da nova página de políticas da organização.

    Pode aplicar a política da organização imediatamente clicando em e, de seguida, em Definir política.

gcloud

  1. Para aplicar uma restrição personalizada, tem de a configurar para a disponibilizar para as políticas da organização na sua 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 para o ficheiro de restrições personalizadas. Por exemplo, /home/user/customconstraint.yaml.

    Após a conclusão, a restrição personalizada fica disponível na lista de políticas da organização. Google Cloud

  2. Para definir a política da organização, use o comando gcloud org-policies set-policy:

    gcloud org-policies set-policy POLICY_PATH
    

    Substitua POLICY_PATH pelo caminho completo para o ficheiro YAML da política da organização.

    A política demora até 15 minutos a entrar em vigor.

Guarde os resultados da simulação

Consola

Se estiver a usar a Google Cloud consola, pode guardar os resultados do Simulador de políticas como um ficheiro CSV.

  1. Para guardar os resultados do Simulador de políticas, aceda à página Histórico de simulações.

    Aceda ao histórico de simulações

  2. Selecione o relatório de simulação que quer guardar.

  3. Clique em Exportar resultados completos.

gcloud

Se estiver a usar a CLI gcloud, pode guardar os resultados do Simulador de políticas como ficheiros JSON ou YAML.

Por predefinição, os resultados dos testes na Google Cloud CLI são apresentados no formato YAML. Para guardar um resultado do teste como um ficheiro YAML, redirecione o resultado do comando simulate orgpolicy quando executar a simulação:

> FILENAME

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

Para guardar um resultado do teste como um ficheiro JSON, adicione a seguinte flag ao comando simulate orgpolicy quando executar a simulação:

--format=json > FILENAME

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

O que se segue?