Testa le modifiche ai criteri dell'organizzazione con Policy Simulator

Policy Simulator per i criteri dell'organizzazione ti consente di visualizzare l'anteprima dell'impatto di un nuovo vincolo personalizzato o criterio dell'organizzazione che applica un vincolo personalizzato o gestito prima che venga applicato all'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 interrompere gli sviluppatori o arrestare l'ambiente.

Questa pagina descrive come testare una modifica a un criterio dell'organizzazione utilizzando Policy Simulator. Spiega inoltre come interpretare i risultati della simulazione e come applicare i criteri dell'organizzazione testati, se vuoi.

Prima di iniziare

  • Se utilizzi 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.

  • Enable the Policy Simulator and Resource Manager APIs.

    Enable the APIs

  • (Facoltativo) Consulta un' introduzione al 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 del simulatore di OrgPolicy (roles/policysimulator.orgPolicyAdmin) nell'organizzazione. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per eseguire e accedere alle simulazioni. Per visualizzare le autorizzazioni esatte richieste, 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 ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Testare una modifica dei criteri

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

Testare una modifica a un vincolo personalizzato

Console

  1. Nella console Google Cloud, vai alla pagina Norme dell'organizzazione.

    Vai a Criteri dell'organizzazione

  2. Seleziona il selettore del progetto nella parte superiore della pagina.

  3. Dal selettore di progetti, seleziona la risorsa dell'organizzazione.

  4. Se vuoi testare un nuovo vincolo personalizzato, fai clic su Vincolo personalizzato. Se vuoi apportare modifiche a un vincolo personalizzato esistente, selezionalo dall'elenco nella pagina Criteri organizzazione e fai clic su Modifica vincolo.

  5. Crea o aggiorna il vincolo personalizzato che vuoi testare.

    Ad esempio, per definire una limitazione personalizzata che impedisca la creazione di risorse del cluster Google Kubernetes Engine in cui l'autorizzazione binaria non è abilitata, svolgi i seguenti passaggi:

    1. Nella casella Tipo di risorsa, seleziona container.googleapis.com/Cluster.

    2. In Metodo di applicazione forzata, seleziona Applica alla creazione.

    3. Fai clic su Modifica condizione.

    4. Nel riquadro Aggiungi condizione, inserisci resource.binaryAuthorization.enabled == true.

    5. Fai clic su Salva.

    6. In Azione, seleziona Consenti.

    Per scoprire di più, consulta la pagina Creare e gestire vincoli personalizzati.

  6. Fai clic su Testa vincolo.

  7. Se si tratta di un nuovo vincolo o di un vincolo non applicato da un criterio dell'organizzazione, devi definire il criterio dell'organizzazione.

    1. Nella casella Seleziona ambito, seleziona la risorsa per cui vuoi verificare il vincolo personalizzato.

    2. Fai clic su Personalizza.

    3. Fai clic su Aggiungi una regola.

    4. In Applicazione forzata, seleziona On e poi fai clic su Fine.

    5. Fai clic su Continua.

Viene visualizzata la pagina Cronologia simulazioni, con un elenco delle simulazioni eseguite da te negli ultimi 14 giorni. Per ulteriori informazioni, consulta Risultati del Simulatore di norme in questa pagina.

gcloud

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

    Ad esempio, un vincolo personalizzato che limita la creazione di risorse del cluster Google Kubernetes Engine in cui l'autorizzazione binaria non è abilitata è 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 della tua organizzazione, ad esempio 1234567890123.

    Per saperne di più su come creare vincoli personalizzati, consulta Creare e gestire vincoli personalizzati.

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

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

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

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

    • Puoi testare un criterio dell'organizzazione che applica condizionatamente un vincolo personalizzato in base all'esistenza di un determinato tag includendo una condizione nel file JSON o YAML che definisce il criterio dell'organizzazione.

      Ad esempio, il seguente criterio dell'organizzazione limita la creazione di risorse del cluster Google Kubernetes Engine in cui l'autorizzazione binaria non è abilitata, ad eccezione delle 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 della tua organizzazione, ad esempio 1234567890123.

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

    • Puoi verificare l'effetto dell'eliminazione di un criterio dell'organizzazione che impone un vincolo personalizzato creando un file JSON o YAML che definisce il criterio dell'organizzazione senza regole impostate, ad eccezione dell'ereditarietà del criterio dalla risorsa principale.

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

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

    gcloud 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 delle 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 è necessario impostare il --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 è necessario impostare il --policies.

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

I risultati sono visualizzabili anche nella console Google Cloud. Consulta Risultati del Simulatore di norme in questa pagina per scoprire come leggere i risultati.

Di seguito è riportata una risposta di esempio per una simulazione delle norme dell'organizzazione. Questa simulazione prevede un vincolo personalizzato che limita la creazione di risorse del cluster Google Kubernetes Engine in cui l'autorizzazione binaria non è abilitata. In questo caso, se la modifica proposta venisse applicata, due risorse del cluster violerebbero 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

Testare una modifica a un vincolo gestito

Console

  1. Nella console Google Cloud, vai alla pagina Norme dell'organizzazione.

Vai a Criteri dell'organizzazione

  1. Nel selettore di progetti, seleziona il progetto, la cartella o l'organizzazione per cui vuoi modificare il criterio dell'organizzazione.

  2. La pagina Criteri dell'organizzazione mostra un elenco filtrabile dei vincoli dei criteri dell'organizzazione disponibili per questa risorsa.

  3. Seleziona dall'elenco il vincolo gestito per il quale vuoi aggiornare il criterio dell'organizzazione. Nella pagina Dettagli criterio, puoi visualizzare la fonte di questo criterio dell'organizzazione, la valutazione efficace del criterio in questa risorsa e ulteriori dettagli sulla limitazione gestita.

  4. Per aggiornare il criterio dell'organizzazione per questa risorsa, fai clic su Gestisci criterio.

  5. Nella pagina Modifica criterio, seleziona Ignora criterio della risorsa padre.

  6. Seleziona Aggiungi una regola.

  7. In Applicazione, seleziona se l'applicazione di questo criterio dell'organizzazione deve essere attiva o disattivata.

  8. Facoltativamente, per rendere la norma dell'organizzazione condizionale su un tag, fai clic su Aggiungi condizione. Se aggiungi una regola condizionale a un criterio dell'organizzazione, devi aggiungere almeno una regola non condizionale, altrimenti il criterio non può essere salvato. Per maggiori dettagli, consulta Impostazione di un criterio dell'organizzazione con tag.

  9. Fai clic su Testa modifiche.

Viene visualizzata la pagina Cronologia simulazioni, con un elenco delle simulazioni eseguite da te negli ultimi 14 giorni. Per ulteriori informazioni, consulta Risultati del Simulatore di norme in questa pagina.

gcloud

  1. Per testare una modifica a una limitazione gestita, crea un file JSON o YAML che definisce la limitazione gestita che vuoi testare.

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

    Sostituisci quanto segue:

    • RESOURCE_TYPE con organizations, folders o projects.

    • RESOURCE_ID con l'ID organizzazione, l'ID cartella, l'ID progetto o il numero di progetto, a seconda del tipo di risorsa specificato in RESOURCE_TYPE.

    • CONSTRAINT_NAME con il nome del vincolo gestito che vuoi testare. Ad esempio, iam.managed.disableServiceAccountKeyCreation.

    • ENFORCEMENT_STATE con true per applicare questo criterio dell'organizzazione se impostato o false per disattivarlo se impostato.

    Facoltativamente, per rendere il criterio dell'organizzazione condizionale su un tag, aggiungi un blocco condition a rules. Se aggiungi una regola condizionale a un criterio dell'organizzazione, devi aggiungere almeno una regola incondizionale, altrimenti il criterio non può essere salvato. Per maggiori dettagli, consulta Impostazione di un criterio dell'organizzazione con tag.

    Per testare l'eliminazione di un criterio dell'organizzazione che applica un vincolo gestito, il file JSON o YAML che definisce il criterio dell'organizzazione non deve avere regole impostate, ad eccezione dell'ereditarietà del criterio dalla risorsa padre.

    Ad esempio, il seguente criterio dell'organizzazione simulerebbe l'eliminazione di un vincolo gestito iam.managed.disableServiceAccountKeyCreation esistente.

    name: organizations/ORGANIZATION_ID/policies/iam.managed.disableServiceAccountKeyCreation
    spec:
      inheritFromParent: true
    
  2. Esegui il comando policy-intelligence simulate orgpolicy:

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

    Sostituisci quanto segue:

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

    • POLICY_PATH con il percorso completo del file YAML del criterio dell'organizzazione.

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

    I risultati sono visualizzabili anche nella console Google Cloud. Consulta Risultati del Simulatore di norme in questa pagina per scoprire come leggere i risultati.

Risultati di Policy Simulator

Policy Simulator riporta i risultati di una modifica di un vincolo personalizzato o di una policy dell'organizzazione come un elenco di violazioni della policy simulata. La console Google Cloud memorizza i risultati delle simulazioni generate da te negli ultimi 14 giorni.

Per visualizzare i risultati della simulazione, vai alla pagina Cronologia simulazioni.

Vai a Cronologia delle simulazioni

Seleziona una simulazione per visualizzarne i dettagli. Nella pagina Report sulla simulazione, puoi vedere l'anteprima delle violazioni, che elenca il numero totale di violazioni causate dal nuovo vincolo personalizzato o dal criterio dell'organizzazione, il numero di risorse controllate nell'ambito della simulazione e l'ora in cui la simulazione è stata completata.

Se hai simulato un vincolo personalizzato, puoi fare clic su Dettagli vincolo per visualizzare la configurazione specifica simulata. Se hai simulato un criterio dell'organizzazione, la scheda Dettagli criteri mostra la configurazione simulata.

Tutte le violazioni sono elencate nella tabella delle risorse. Ogni risorsa che viola il nuovo vincolo personalizzato o il criterio dell'organizzazione è elencata con un link alla voce della risorsa in Cloud Asset Inventory. Le risorse di progetti, cartelle e organizzazioni vengono visualizzate con la somma totale delle risorse sottostanti nella gerarchia che violano il nuovo vincolo personalizzato o i criteri dell'organizzazione.

Applicare una modifica dei 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. Puoi visualizzare tutti i risultati di Policy Simulator nella console Google Cloud, indipendentemente da come sono stati generati. Se il report della simulazione include modifiche a non più di un criterio dell'organizzazione, puoi applicare il criterio dell'organizzazione direttamente tramite i risultati della simulazione. Per applicare le modifiche di test in più criteri dell'organizzazione, utilizza Google Cloud CLI.

Console

  1. Per applicare un vincolo personalizzato ai risultati di Policy Simulator, vai alla pagina Cronologia delle simulazioni.

    Vai a Cronologia delle simulazioni

  2. Seleziona il report di simulazione per il vincolo personalizzato o il criterio dell'organizzazione che vuoi applicare.

  3. Se questo report di simulazione include una limitazione personalizzata, fai clic su Salva limitazione.

  4. Se questo report di simulazione include modifiche a non più di un criterio dell'organizzazione, puoi applicare il criterio dell'organizzazione come criterio di prova per monitorare il comportamento in produzione senza introdurre rischi selezionando Imposta criterio di prova. Viene visualizzata la pagina Dettagli delle norme per le nuove norme dell'organizzazione.

    Puoi applicare immediatamente il criterio dell'organizzazione facendo clic su e poi su Imposta criterio.

gcloud

  1. Per applicare un vincolo personalizzato, devi configurarlo in modo da renderlo disponibile per i criteri dell'organizzazione. Per impostare una limitazione personalizzata, 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 delle limitazioni personalizzate. Ad esempio, /home/user/customconstraint.yaml.

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

  2. Per impostare il criterio dell'organizzazione, 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 del criterio dell'organizzazione.

    L'applicazione del criterio può richiedere fino a 15 minuti.

Salvare i risultati della simulazione

Console

Se utilizzi la console Google Cloud, puoi salvare i risultati di Policy Simulator come file CSV.

  1. Per salvare i risultati di Policy Simulator, vai alla pagina Cronologia simulazioni.

    Vai a Cronologia delle simulazioni

  2. Seleziona il report sulla simulazione che vuoi salvare.

  3. Fai clic su Esporta i risultati completi.

gcloud

Se utilizzi lgcloud CLI, puoi salvare i risultati di 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 il risultato di un 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