Testare le modifiche ai criteri dell'organizzazione con Policy Simulator

Policy Simulator per i criteri dell'organizzazione consente di visualizzare in anteprima l'impatto di un nuovo vincolo personalizzato o di un nuovo criterio dell'organizzazione che applica un vincolo personalizzato prima che venga applicato al tuo ambiente di produzione. Policy Simulator fornisce un elenco di risorse che violano il criterio proposto prima dell'applicazione, consentendoti di riconfigurarle, richiedere eccezioni o modificare l'ambito del criterio dell'organizzazione, il tutto senza interferire con gli sviluppatori o arrestare il tuo ambiente.

In questa pagina viene descritto come testare una modifica a un criterio dell'organizzazione utilizzando Policy Simulator. Spiega inoltre come interpretare i risultati della simulazione e come applicare il criterio dell'organizzazione testato, se lo desideri.

Prima di iniziare

  • In Google Cloud CLI, imposta il progetto che vuoi utilizzare per effettuare chiamate API:

    gcloud config set project PROJECT_ID

    Sostituisci PROJECT_ID con il nome o l'ID del progetto.

  • Abilita le API Policy Simulator and Resource Manager.

    Abilita le API

  • (Facoltativo) Leggi un' presentazione del servizio Criteri dell'organizzazione.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per eseguire e accedere alle simulazioni, chiedi all'amministratore di concederti il ruolo IAM Amministratore simulatore criteri dell'organizzazione (roles/policysimulator.orgPolicyAdmin) per l'organizzazione. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Questo ruolo predefinito contiene le autorizzazioni necessarie per eseguire e accedere alle simulazioni. Per visualizzare le autorizzazioni necessarie, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per eseguire e accedere alle simulazioni, sono necessarie le seguenti autorizzazioni:

  • 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

Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.

Testa una modifica ai criteri

Puoi testare una modifica a un vincolo personalizzato, un criterio dell'organizzazione che applica un vincolo personalizzato o entrambi contemporaneamente.

  1. Per testare un vincolo personalizzato, crea un file JSON o YAML che definisca il vincolo personalizzato che vuoi testare.

    Ad esempio, un vincolo personalizzato che limita la creazione di risorse cluster di Google Kubernetes Engine in cui Autorizzazione binaria non è abilitata dovrebbe avere un aspetto simile al seguente:

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

    Sostituisci ORGANIZATION_ID con l'ID organizzazione, ad esempio 1234567890123.

    Per saperne di più su come creare vincoli personalizzati, consulta Creazione e gestione di vincoli personalizzati.

  2. Per testare un criterio dell'organizzazione che applica un vincolo personalizzato, crea un file JSON o YAML che definisca il criterio dell'organizzazione che vuoi testare.

    Ad esempio, un criterio dell'organizzazione che limita la creazione di risorse cluster Google Kubernetes Engine in cui Autorizzazione binaria non è abilitata dovrebbe essere simile al seguente:

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

    Sostituisci ORGANIZATION_ID con l'ID organizzazione, ad esempio 1234567890123.

  3. Per testare un criterio dell'organizzazione che applica in modo condizionale un vincolo personalizzato in base all'esistenza di un determinato tag, crea un file JSON o YAML che definisca il criterio dell'organizzazione che vuoi testare.

    Ad esempio, il seguente criterio dell'organizzazione limita la creazione di risorse cluster Google Kubernetes Engine in cui Autorizzazione binaria non è abilitata, tranne che per le risorse a cui è associato il tag env=dev.

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

    Sostituisci ORGANIZATION_ID con l'ID organizzazione, ad esempio 1234567890123.

    Per ulteriori informazioni sui criteri condizionali dell'organizzazione, consulta Impostare un criterio dell'organizzazione con tag.

  4. Per verificare l'eliminazione di un criterio dell'organizzazione che applica un vincolo personalizzato, crea un file JSON o YAML che definisce il criterio dell'organizzazione, ma non imposta alcuna regola ed eredita il criterio dalla risorsa padre.

    Ad esempio, il seguente criterio dell'organizzazione simula l'eliminazione di un vincolo personalizzato custom.EnforceGKEBinaryAuthz esistente.

    name: "organizations/ORGANIZATION_ID/policies/custom.EnforceGKEBinaryAuthz"
    spec:
        inheritFromParent: true
    
  1. Esegui questo comando per simulare la modifica del vincolo personalizzato, del criterio dell'organizzazione o di entrambi:

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

    Sostituisci quanto segue:

    • ORGANIZATION_ID: l'ID della tua organizzazione, ad esempio 1234567890123. La simulazione di modifiche in più organizzazioni non è supportata.

    • CONSTRAINT_PATH: il percorso completo del vincolo personalizzato che hai creato o aggiornato. Ad esempio, tmp/constraint.yaml Se imposti il flag --policies, non devi impostare il flag --custom-constraints.

    • POLICY_PATH: il percorso completo del criterio dell'organizzazione che hai creato o aggiornato. Ad esempio, tmp/policy.yaml Se imposti il flag --custom-constraints, non devi impostare il flag --policies.

    Dopo alcuni minuti, il comando stampa un elenco di risorse che violeranno le modifiche al vincolo personalizzato, al criterio dell'organizzazione o a entrambi.

    Di seguito è riportato un esempio di risposta per una simulazione dei criteri dell'organizzazione. Questa simulazione prevede un vincolo personalizzato che limita la creazione di risorse cluster Google Kubernetes Engine in cui Autorizzazione binaria non è abilitata. In questo caso, se la modifica proposta venisse applicata, due risorse cluster violerebbe il criterio: orgpolicy-test-cluster nel progetto simulator-test-project e autopilot-cluster-1 nel progetto 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
    

Applica una modifica ai criteri testata

Dopo aver testato il vincolo personalizzato, il criterio dell'organizzazione o entrambi, puoi configurare il vincolo personalizzato e applicare il criterio dell'organizzazione utilizzando i normali processi.

  1. Per applicare un vincolo personalizzato, devi configurarlo in modo che sia disponibile per i criteri dell'organizzazione. Per configurare un vincolo personalizzato, utilizza il comando gcloud org-policies set-custom-constraint:

    gcloud org-policies set-custom-constraint CONSTRAINT_PATH
    

    Sostituisci CONSTRAINT_PATH con il percorso completo del file dei vincoli personalizzati. Ad esempio, /home/user/customconstraint.yaml.

    Al termine, il vincolo personalizzato sarà disponibile nell'elenco dei criteri dell'organizzazione di Google Cloud.

  2. Per applicare un criterio dell'organizzazione contenente un vincolo personalizzato, utilizza il comando gcloud org-policies set-policy:

    gcloud org-policies set-policy POLICY_PATH
    

    Sostituisci POLICY_PATH con il percorso completo del file YAML dei criteri dell'organizzazione.

    L'applicazione del criterio potrebbe richiedere fino a 15 minuti.

Salva i risultati della simulazione

Se usi gcloud CLI, puoi salvare i risultati Policy Simulator come file JSON o YAML.

Per impostazione predefinita, i risultati dei test in Google Cloud CLI vengono visualizzati in formato YAML. Per salvare un risultato del test come file YAML, reindirizza l'output del comando simulate orgpolicy durante l'esecuzione della simulazione:

> FILENAME

Sostituisci FILENAME con un nome per il file di output.

Per salvare un risultato del test come file JSON, aggiungi il seguente flag al comando simulate orgpolicy durante l'esecuzione della simulazione:

--format=json > FILENAME

Sostituisci FILENAME con un nome per il file di output.

Passaggi successivi