Creare criteri dell'organizzazione

Questa guida spiega come creare una policy dell'organizzazione con vincoli gestiti e vincoli gestiti legacy. Se vuoi un maggiore controllo sulle policy dell'organizzazione, puoi creare vincoli personalizzati.

Per saperne di più sui vincoli e sui problemi che risolvono, consulta l'elenco di tutti i vincoli del servizio Policy dell'organizzazione.

Prima di iniziare

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per gestire le policy dell'organizzazione, chiedi all'amministratore di concederti il ruolo IAM Organization Policy Administrator (roles/orgpolicy.policyAdmin) nell'organizzazione. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Delegare l'amministrazione delle policy dell'organizzazione

Per delegare l'amministrazione delle policy dell'organizzazione a un'altra entità, aggiungi una condizione all'associazione di ruolo:

"bindings": [
  {
    "role": "roles/orgpolicy.policyAdmin",
    "members": [
      "PRINCIPAL_1",
      "PRINCIPAL_2"
    ],
    "condition": {
      "title": "TITLE",
      "description": "DESCRIPTION",
      "expression": "resource.matchTag('TAG_KEY', 'TAG_VALUE')"
    }
  }
]

Sostituisci quanto segue:

  • PRINCIPAL_1,PRINCIPAL_2: un elenco di entità a cui vuoi delegare il ruolo di amministratore delle policy dell'organizzazione.

  • TITLE: il titolo dell'espressione condizionale, ad esempio "Amministratore delle norme dell'organizzazione per gli ambienti di sviluppo".

  • DESCRIPTION: una descrizione facoltativa per l'espressione.

  • TAG_KEY: il nome con spazio dei nomi della chiave del tag, ad esempio 123456789012/environment.

  • TAG_VALUE: il nome del valore tag. Il ruolo viene concesso solo per le risorse a cui è associato questo tag, ad esempio development.

Per saperne di più sull'utilizzo delle condizioni nelle policy di autorizzazione, consulta Panoramica delle condizioni IAM.

Utilizza le regole di elenco in un criterio dell'organizzazione

Puoi impostare una policy dell'organizzazione sulla risorsa dell'organizzazione che utilizza regole di elenco per negare l'accesso a un servizio specifico. La seguente procedura descrive come impostare una policy dell'organizzazione utilizzando Google Cloud CLI. Per istruzioni su come visualizzare e impostare le policy dell'organizzazione utilizzando la console Google Cloud , vedi Applicare le policy dell'organizzazione.

Le policy dell'organizzazione che utilizzano regole di elenco non possono avere più di 500 valori consentiti o negati individuali e non possono superare i 32 kB. Se una policy dell'organizzazione viene creata o aggiornata in modo da avere più di 500 valori o superare i 32 KB, non può essere salvata correttamente e la richiesta restituirà un errore.

Configura l'applicazione sulla risorsa dell'organizzazione

Per configurare l'applicazione di un criterio in un'organizzazione utilizzando gcloud CLI, segui questi passaggi:

  1. Recupera la policy attuale sulla risorsa dell'organizzazione utilizzando il comando describe. Questo comando restituisce la policy applicata direttamente a questa risorsa:

    gcloud org-policies describe \
      CONSTRAINT_NAME --organization=ORGANIZATION_ID
    

    Sostituisci quanto segue:

    • ORGANIZATION_ID: un identificatore univoco per la risorsa organizzazione. L'ID organizzazione è formattato come numeri decimali e non può avere zeri iniziali.

    • CONSTRAINT_NAME: il vincolo per il servizio che vuoi applicare. Ad esempio, il vincolo gcp.restrictNonCmekServices limita i servizi che possono creare risorse senza chiavi di crittografia gestite dal cliente (CMEK).

    Puoi anche applicare la policy dell'organizzazione a una cartella o a un progetto con i flag --folder o --project e, rispettivamente, l'ID cartella e l'ID progetto.

    La risposta restituisce la policy dell'organizzazione corrente, se esistente. Ad esempio:

    name: projects/841166443394/policies/gcp.resourceLocations
    spec:
      etag: BwW5P5cEOGs=
      inheritFromParent: true
      rules:
      - condition:
          expression: resource.matchTagId("tagKeys/1111", "tagValues/2222")
        values:
          allowedValues:
          - in:us-east1-locations
      - condition:
          expression: resource.matchTag("123/env", "prod")
        values:
          allowedValues:
          - in:us-west1-locations
      - values:
          deniedValues:
          - in:asia-south1-locations
      updateTime: '2021-01-19T12:00:51.095Z'
    

    Se non è impostato un criterio, viene restituito un errore NOT_FOUND:

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. Imposta la policy per l'organizzazione utilizzando il comando set-policy. Questo sovrascrive qualsiasi policy associata alla risorsa.

    1. Crea un file temporaneo /tmp/policy.yaml per archiviare la policy:

      name: organizations/ORGANIZATION_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - values:
            deniedValues:
            - VALUE_A
      
    2. Esegui il comando set-policy:

      gcloud org-policies set-policy /tmp/policy.yaml
      
  3. Visualizza la policy attualmente in vigore utilizzando describe --effective. Viene restituita la policy dell'organizzazione così come viene valutata a questo punto della gerarchia delle risorse, inclusa l'ereditarietà.

    gcloud org-policies describe \
      CONSTRAINT_NAME --effective \
      --organization=ORGANIZATION_ID
    

    L'output del comando sarà:

    name: organizations/ORGANIZATION_ID/policies/CONSTRAINT_NAME
    spec:
      etag: BwVJi0OOESU=
      rules:
      - values:
          deniedValues:
          - VALUE_A
    

    Poiché questo criterio dell'organizzazione è stato impostato a livello di organizzazione, verrà ereditato da tutte le risorse secondarie che consentono l'ereditarietà.

L'applicazione completa delle modifiche alle policy dell'organizzazione può richiedere fino a 15 minuti.

Configurare l'applicazione per un sottoalbero della gerarchia

I vincoli con regole di elenco accettano valori definiti in modo esplicito per determinare quali risorse devono essere consentite o negate. Alcuni vincoli possono accettare anche valori che utilizzano il prefisso under:, che specifica un sottoalbero con quella risorsa come radice. L'utilizzo del prefisso under: su un valore consentito o negato fa sì che il criterio dell'organizzazione agisca su quella risorsa e su tutte le relative risorse secondarie. Per informazioni sui vincoli che consentono l'utilizzo del prefisso under:, consulta la pagina Vincoli delle policy dell'organizzazione.

Un valore che utilizza il prefisso under: è chiamato stringa secondaria della gerarchia. Una stringa di sottoalbero della gerarchia specifica il tipo di risorsa a cui si applica. Ad esempio, l'utilizzo di una stringa di sottoalbero di projects/PROJECT_ID quando si imposta il vincolo constraints/compute.storageResourceUseRestrictions consentirà o negherà l'utilizzo dello spazio di archiviazione Compute Engine per PROJECT_ID e tutti i relativi elementi secondari.

  1. Recupera la policy attuale sulla risorsa dell'organizzazione utilizzando il comando describe:

    gcloud org-policies describe \
      CONSTRAINT_NAME \
      --organization=ORGANIZATION_ID
    

    Sostituisci quanto segue:

    • ORGANIZATION_ID è un identificatore univoco per la risorsa dell'organizzazione.

    • CONSTRAINT_NAME è il vincolo per il servizio che vuoi applicare.

    Puoi anche applicare la policy dell'organizzazione a una cartella o a un progetto con i flag --folder o --project e, rispettivamente, l'ID cartella e l'ID progetto.

    Se non è impostato un criterio, viene restituito un errore NOT_FOUND:

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. Imposta la policy sul progetto utilizzando il comando set-policy. Il prefisso under: imposta il vincolo per negare la risorsa denominata e tutte le relative risorse secondarie.

    1. Crea un file temporaneo /tmp/policy.yaml per archiviare la policy:

      name: organizations/ORGANIZATION_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - values:
            deniedValues:
            - under:folders/VALUE_A
      
    2. Esegui il comando set-policy:

      gcloud org-policies set-policy /tmp/policy.yaml
      

    Dove:

    • under: è un prefisso che indica che ciò che segue è una stringa dell'albero secondario.

    • folders/VALUE_A è l'ID cartella della risorsa radice che vuoi negare. Questa risorsa e tutti i relativi elementi secondari nella gerarchia delle risorse verranno negati.

    Puoi anche applicare il prefisso under: a organizzazioni e progetti, come nei seguenti esempi:

    • under:organizations/VALUE_X

    • under:projects/VALUE_Y

  3. Visualizza la policy attualmente in vigore utilizzando describe --effective.

    gcloud org-policies describe \
      CONSTRAINT_NAME --effective \
      --organization=ORGANIZATION_ID
    

    L'output del comando sarà:

    name: organizations/ORGANIZATION_ID/policies/CONSTRAINT_NAME
    spec:
      rules:
      - values:
          deniedValues:
          - under:folders/VALUE_A
    

    Ora la policy restituisce un valore che nega l'accesso alla cartella VALUE_A e a tutte le relative risorse figlio.

L'applicazione completa delle modifiche alle policy dell'organizzazione può richiedere fino a 15 minuti.

Unire la policy dell'organizzazione in un progetto

Puoi impostare una policy dell'organizzazione su una risorsa, che verrà unita a qualsiasi policy ereditata dalla risorsa padre. Queste norme unite verranno poi valutate per creare nuove norme effettive in base alle regole di ereditarietà.

  1. Recupera la policy attuale sulla risorsa utilizzando il comando describe:

    gcloud org-policies describe \
      CONSTRAINT_NAME \
      --project=PROJECT_ID
    

    Sostituisci quanto segue:

    • PROJECT_ID: l' identificatore univoco del tuo progetto.

    • CONSTRAINT_NAME: il vincolo per il servizio che vuoi applicare.

    Se non è impostato un criterio, viene restituito un errore NOT_FOUND:

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. Visualizza la policy effettiva corrente utilizzando il comando describe --effective:

    gcloud org-policies describe \
      CONSTRAINT_NAME --effective \
      --project=PROJECT_ID
    

    L'output del comando includerà un valore negato ereditato dalla risorsa dell'organizzazione:

    name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
    spec:
      rules:
      - values:
          deniedValues:
          - VALUE_A
    
  3. Imposta la policy sul progetto utilizzando il comando set-policy.

    1. Crea un file temporaneo /tmp/policy.yaml per archiviare la policy:

      name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
      spec:
        inheritFromParent: true
        rules:
        - values:
            deniedValues:
            - VALUE_B
            - VALUE_C
      
    2. Esegui il comando set-policy:

      gcloud org-policies set-policy /tmp/policy.yaml
      
  4. Utilizza di nuovo il comando describe --effective per visualizzare la policy aggiornata:

    gcloud org-policies describe \
      CONSTRAINT_NAME --effective \
      --project=PROJECT_ID
    

    L'output del comando includerà il risultato effettivo dell'unione del criterio della risorsa e di quello della risorsa padre:

    name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
    spec:
      rules:
      - values:
          deniedValues:
            - VALUE_A
            - VALUE_B
            - VALUE_C
    

L'applicazione completa delle modifiche alle policy dell'organizzazione può richiedere fino a 15 minuti.

Ripristinare il comportamento predefinito del vincolo

Puoi utilizzare il comando reset per reimpostare la policy in modo che utilizzi il comportamento predefinito del vincolo. Per un elenco di tutti i vincoli disponibili e dei relativi valori predefiniti, consulta Vincoli delle policy dell'organizzazione. L'esempio seguente presuppone che il comportamento predefinito del vincolo sia quello di consentire tutti i valori.

  1. Recupera la policy effettiva del progetto per visualizzare la policy unita corrente:

    gcloud org-policies describe \
      CONSTRAINT_NAME --effective \
      --project=PROJECT_ID
    

    Sostituisci PROJECT_ID con l'identificatore univoco del tuo progetto. L'output del comando sarà:

    name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
    spec:
      rules:
      - values:
          deniedValues:
          - VALUE_A
          - VALUE_B
          - VALUE_C
    
  2. Reimposta la policy dell'organizzazione utilizzando il comando reset.

    gcloud org-policies reset CONSTRAINT_NAME \
        --project=PROJECT_ID
    
  3. Recupera la policy effettiva per verificare il comportamento predefinito:

    gcloud org-policies describe \
      CONSTRAINT_NAME --effective \
      --project=PROJECT_ID
    

    L'output del comando consentirà tutti i valori:

    name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
    spec:
      rules:
      - allowAll: true
    

L'applicazione completa delle modifiche alle policy dell'organizzazione può richiedere fino a 15 minuti.

Eliminare una policy dell'organizzazione

Puoi eliminare una policy dell'organizzazione da una risorsa. Una risorsa senza un criterio dell'organizzazione impostato erediterà qualsiasi criterio della risorsa padre. Se elimini la policy dell'organizzazione nella risorsa organizzazione, la policy effettiva sarà il comportamento predefinito del vincolo.

I passaggi seguenti descrivono come eliminare una policy dell'organizzazione in un'organizzazione.

  1. Elimina la policy nella risorsa dell'organizzazione utilizzando il comando delete:

    gcloud org-policies delete \
      CONSTRAINT_NAME \
      --organization=ORGANIZATION_ID
    

    Sostituisci ORGANIZATION_ID con l'identificatore univoco della risorsa dell'organizzazione. L'output del comando sarà:

    Deleted policy
    [organizations/ORGANIZATION_ID/policies/CONSTRAINT_NAME].
    {}
    
  2. Recupera la policy effettiva dell'organizzazione per verificare che non venga applicata:

    gcloud org-policies describe \
      CONSTRAINT_NAME --effective \
      --organization=ORGANIZATION_ID
    

    L'output del comando sarà:

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

I passaggi seguenti descrivono come eliminare un criterio dell'organizzazione in un progetto:

  1. Elimina la policy in un progetto utilizzando il comando delete:

    gcloud org-policies delete \
      CONSTRAINT_NAME \
      --project=PROJECT_ID
    

    Dove PROJECT_ID è l'identificatore univoco del tuo progetto. L'output del comando sarà:

    Deleted policy
    [projects/PROJECT_ID/policies/CONSTRAINT_NAME].
    {}
    
  2. Recupera il criterio effettivo per il progetto per verificare che non sia applicato:

    gcloud org-policies describe \
      CONSTRAINT_NAME --effective \
      --project=PROJECT_ID
    

    L'output del comando sarà:

    name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
    spec:
      rules:
      - allowAll: true
    

L'applicazione completa delle modifiche alle policy dell'organizzazione può richiedere fino a 15 minuti.

Utilizzare regole booleane nei criteri dell'organizzazione

Configura l'applicazione sulla risorsa dell'organizzazione

La seguente procedura descrive come impostare una policy dell'organizzazione con regole booleane utilizzando Google Cloud CLI. Per istruzioni su come visualizzare e impostare le policy dell'organizzazione utilizzando la console Google Cloud , vedi Applicare le policy dell'organizzazione.

  1. Recupera la policy attuale sulla risorsa dell'organizzazione utilizzando il comando describe:

    gcloud org-policies describe \
      CONSTRAINT_NAME \
      --organization=ORGANIZATION_ID
    

    Sostituisci ORGANIZATION_ID con l'identificatore univoco della risorsa dell'organizzazione. Puoi anche applicare la policy dell'organizzazione a una cartella o a un progetto con i flag --folder o --project e, rispettivamente, l'ID cartella e l'ID progetto.

    Se non è impostato un criterio, viene restituito un errore NOT_FOUND:

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. Imposta la policy sul progetto utilizzando il comando set-policy.

    1. Crea un file temporaneo /tmp/policy.yaml per archiviare la policy:

      name: organizations/ORGANIZATION_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - enforce: true
      
    2. Esegui il comando set-policy:

      gcloud org-policies set-policy /tmp/policy.yaml
      
  3. Visualizza la policy attualmente in vigore utilizzando describe --effective:

    gcloud org-policies describe \
      CONSTRAINT_NAME --effective \
      --organization=ORGANIZATION_ID
    

    L'output del comando sarà:

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

L'applicazione completa delle modifiche alle policy dell'organizzazione può richiedere fino a 15 minuti.

Ignorare la policy dell'organizzazione per un progetto

Per ignorare la policy dell'organizzazione per un progetto, imposta una policy che disattivi l'applicazione del vincolo a tutte le risorse nella gerarchia sottostante il progetto.

  1. Recupera la policy attuale sulla risorsa per dimostrare che è vuota.

    gcloud org-policies describe \
      CONSTRAINT_NAME \
      --project=PROJECT_ID
    

    Dove PROJECT_ID è l'identificatore univoco del tuo progetto.

    Se non è impostato un criterio, viene restituito un errore NOT_FOUND:

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. Recupera la policy effettiva sul progetto, che conferma che il vincolo viene applicato a questo progetto.

    gcloud org-policies describe \
      CONSTRAINT_NAME --effective \
      --project=PROJECT_ID
    

    L'output del comando sarà:

    name: projects/PROJECT_ID/policies/BOOLEAN_CONSTRAINT
    spec:
      rules:
      - enforce: true
    
  3. Imposta la policy sul progetto utilizzando il comando set-policy.

    1. Crea un file temporaneo /tmp/policy.yaml per archiviare la policy:

      name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - enforce: false
      
    2. Esegui il comando set-policy:

      gcloud org-policies set-policy /tmp/policy.yaml
      
  4. Recupera il criterio effettivo per dimostrare che non viene più applicato al progetto.

    gcloud org-policies describe \
      CONSTRAINT_NAME --effective \
      --project=PROJECT_ID
    

    L'output del comando sarà:

    name: organizations/ORGANIZATION_ID/policies/BOOLEAN_CONSTRAINT
    spec:
      rules:
      - enforce: false
    

L'applicazione completa delle modifiche alle policy dell'organizzazione può richiedere fino a 15 minuti.

Eliminare una policy dell'organizzazione

Puoi eliminare una policy dell'organizzazione da una risorsa. Una risorsa senza un criterio dell'organizzazione impostato erediterà qualsiasi criterio della risorsa padre. Se elimini la policy dell'organizzazione nella risorsa dell'organizzazione, la policy effettiva sarà il comportamento predefinito dei vincoli.

I passaggi seguenti descrivono come eliminare una policy dell'organizzazione in un'organizzazione e un progetto.

  1. Elimina la policy dalla risorsa dell'organizzazione utilizzando il comando delete:

    gcloud org-policies delete