Impostazione di un criterio dell'organizzazione con tag

I tag forniscono un modo per consentire o negare in modo condizionale i criteri a seconda che una risorsa abbia un tag specifico. Puoi utilizzare i tag e l'applicazione condizionale dei criteri dell'organizzazione per fornire un controllo centralizzato delle risorse nella gerarchia.

Prima di iniziare

Per ulteriori informazioni su cosa sono i tag e sul loro funzionamento, consulta la Panoramica dei tag.

Per istruzioni dettagliate su come utilizzare i tag, consulta Creazione e gestione dei tag.

Impostazione di un criterio dell'organizzazione con tag

Per utilizzare i tag per determinare dove deve essere applicato un criterio dell'organizzazione, devi specificare una condizione nel file YAML dei criteri dell'organizzazione. Puoi impostare la condizione in modo che corrisponda a una determinata coppia chiave-valore del tag, richiedendo l'impostazione di un determinato valore di tag per l'applicazione del criterio dell'organizzazione.

La maggior parte dei criteri dell'organizzazione viene valutata e applicata quando una risorsa viene creata o aggiornata. Non è possibile collegare un tag a una risorsa prima che venga creata, di conseguenza i criteri dell'organizzazione condizionali non possono valutare i tag su una risorsa durante la creazione, ma solo sui tag ereditati dalle risorse padre.

I tag vengono valutati per le risorse dell'organizzazione, della cartella e del progetto. La maggior parte delle risorse sotto i progetti nella gerarchia delle risorse non viene valutata dai criteri dell'organizzazione, con alcune eccezioni, ad esempio i servizi Cloud Run. Per informazioni su particolari vincoli dei criteri dell'organizzazione, consulta Vincoli dei criteri dell'organizzazione.

Esempio di criterio di elenco

L'esempio seguente mostra come impostare un file dei criteri dell'organizzazione che applichi il vincolo gcp.resourceLocations. Questo criterio dell'organizzazione utilizza valori condizionali e incondizionali, impostati all'interno dello stesso file di criteri.

Console

Per impostare il criterio dell'organizzazione, segui questi passaggi:

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

    Vai a Criteri dell'organizzazione

  2. Dal selettore dei progetti, seleziona il progetto per cui vuoi impostare il criterio dell'organizzazione.

  3. Nella pagina Criteri dell'organizzazione, seleziona un vincolo dall'elenco. Viene visualizzata la pagina Dettagli criterio per tale vincolo.

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

  5. Nella pagina Modifica criterio, seleziona Sostituisci criterio del padre.

  6. In Applicazione delle norme, seleziona un'opzione di applicazione:

    • Per unire e valutare insieme i criteri dell'organizzazione, seleziona Unisci con padre. Per ulteriori informazioni sull'ereditarietà e sulla gerarchia delle risorse, consulta Informazioni sulla valutazione della gerarchia.

    • Per eseguire l'override dei criteri ereditati da una risorsa padre, seleziona Sostituisci.

  7. Fai clic su Aggiungi regola.

  8. In Valori del criterio, scegli se questo criterio dell'organizzazione deve consentire tutti i valori, negare tutti i valori o specificare un insieme personalizzato di valori.

  9. Facoltativamente, per rendere condizionale il criterio dell'organizzazione a un tag, fai clic su Aggiungi condizione.

    1. Nel campo Titolo, inserisci un nome per la condizione.

    2. Nel campo Descrizione, inserisci una descrizione per la condizione. La descrizione fornisce contesto sui tag richiesti e sull'impatto che hanno sulle risorse.

    3. Puoi utilizzare il Generatore di condizioni per creare una condizione che richiede un determinato tag per applicare il vincolo.

      1. Nella casella Tipo di condizione, seleziona Tag.

      2. Seleziona l'operatore per la tua condizione. Per associare un intero tag, utilizza l'operatore matches. Per associare una chiave tag e un valore tag, utilizza l'operatore corrisponde a ID.

      3. Se hai selezionato l'operatore matches, inserisci il nome del tag con spazio dei nomi. Se hai selezionato l'operatore corrisponde all'ID, inserisci gli ID chiave e valore.

      4. Puoi creare più condizioni facendo clic su Aggiungi. Se aggiungi un'altra condizione, puoi impostare la logica condizionale in modo che le richieda tutte selezionando And. Puoi impostare la logica condizionale in modo che richieda che solo una delle condizioni sia vera attivando/disattivando Or.

      5. Puoi eliminare un'espressione facendo clic sulla grande X a destra dei campi della condizione.

      6. Dopo aver modificato le condizioni, fai clic su Salva.

      La figura seguente mostra un esempio di configurazione di un criterio dell'organizzazione che include condizioni.

      Esempio dell'UI delle condizioni del criterio dell'organizzazione.

    4. L'editor di condizioni può essere utilizzato per creare un'espressione condizionale in modo programmatico. Verrà inoltre mostrato un rendering programmatico dell'insieme di condizioni attuali.

      1. Puoi utilizzare l'Editor condizioni per applicare l'operatore logico !. Ad esempio, la query !resource.matchTag('ORGANIZATION_ID/location', 'us-west1') applicherà il vincolo del criterio dell'organizzazione a qualsiasi risorsa priva del tag us-west1.
  10. Per applicare il criterio, fai clic su Imposta criterio.

gcloud

Per impostare il criterio dell'organizzazione, esegui questo comando:

gcloud org-policies set-policy POLICY_PATH

Dove POLICY_PATH è il percorso completo del file JSON dei criteri dell'organizzazione, che dovrebbe avere il seguente aspetto:

{
  "name":"RESOURCE_TYPE/RESOURCE_ID/policies/gcp.resourceLocations",
  "spec":{
    "rules":[
       {
        // As there is no condition specified, this allowedValue is enforced
        // unconditionally.
        "values":{
          "allowedValues": ["us-east1-locations"]
        },
      },
     {
        // This condition applies to the values block.
        "condition":{
          "expression":"resource.matchTag('ORGANIZATION_ID/location', 'us-west1')"
        },
        "values":{
          "allowedValues": ["us-west1-locations"]
        }
      }
    ]
  }
}

Dove:

  • RESOURCE_TYPE è organizations, folders o projects.

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

  • ORGANIZATION_ID è l'organizzazione principale della chiave tag.

Per il criterio dell'organizzazione riportato sopra, alla risorsa e a tutte le relative risorse figlio verrà applicato in modo forzato il vincolo gcp.resourceLocations, solo allowedValues di us-east1-locations. Per tutte queste risorse che hanno il tag location: us-west1 verrà applicato in modo forzato il vincolo gcp.resourceLocations, con allowedValues di us-east1-locations e us-west1-locations.

In questo modo, è possibile applicare sia insiemi condizionali che incondizionati di valori per un vincolo in un singolo criterio dell'organizzazione.

Esempio di criterio booleano

L'esempio seguente mostra come impostare un file dei criteri dell'organizzazione che applichi il vincolo compute.disableSerialPortAccess. Questo criterio dell'organizzazione specifica che tutte le porte seriali sono accessibili alle risorse, ma utilizza una condizione per limitare l'accesso alla porta seriale solo alle risorse che hanno il tag corrispondente.

Console

Per impostare il criterio dell'organizzazione, segui questi passaggi:

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

    Vai a Criteri dell'organizzazione

  2. Dal selettore dei progetti, scegli il progetto per cui vuoi impostare il criterio dell'organizzazione.

  3. Seleziona un vincolo dall'elenco nella pagina Criteri dell'organizzazione. Viene visualizzata la pagina Dettagli criterio per tale vincolo.

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

  5. Nella pagina Modifica criterio, seleziona Sostituisci criterio del padre.

  6. Fai clic su Aggiungi regola.

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

  8. Facoltativamente, per rendere condizionale il criterio dell'organizzazione a un tag, fai clic su Aggiungi condizione. Tieni presente che se aggiungi una regola condizionale a un criterio dell'organizzazione, devi aggiungere solo una regola senza condizioni, altrimenti il criterio non potrà essere salvato.

    1. Nel campo Titolo, inserisci un nome per la condizione.

    2. Nel campo Descrizione, inserisci una descrizione per la condizione. La descrizione fornisce contesto sui tag richiesti e sull'impatto che hanno sulle risorse.

    3. Puoi utilizzare il Generatore di condizioni per creare una condizione che richiede un determinato tag per applicare il vincolo.

      1. Nella casella Tipo di condizione, seleziona Tag.

      2. Seleziona l'operatore per la tua condizione. Per associare un intero tag, utilizza l'operatore matches. Per associare una chiave tag e un valore tag, utilizza l'operatore corrisponde a ID.

      3. Se hai selezionato l'operatore matches, inserisci il nome del tag con spazio dei nomi. Se hai selezionato l'operatore corrisponde all'ID, inserisci gli ID chiave e valore.

      4. Puoi creare più condizioni facendo clic su Aggiungi. Se aggiungi un'altra condizione, puoi impostare la logica condizionale in modo che le richieda tutte selezionando And. Puoi impostare la logica condizionale in modo che richieda che solo una delle condizioni sia vera attivando/disattivando Or.

      5. Puoi eliminare un'espressione facendo clic sulla grande X a destra dei campi della condizione.

      6. Dopo aver modificato le condizioni, fai clic su Salva.

      7. Un criterio dell'organizzazione a cui è applicata una condizione deve avere una sola regola senza condizioni. Fai clic su Aggiungi regola e indica se l'applicazione di questo criterio dell'organizzazione deve essere attivata o disattivata per impostazione predefinita.

      La figura seguente mostra un esempio di configurazione di un criterio dell'organizzazione che include condizioni.

      Esempio dell'UI delle condizioni del criterio dell'organizzazione.

    4. L'editor di condizioni può essere utilizzato per creare un'espressione condizionale in modo programmatico. Verrà inoltre mostrato un rendering programmatico dell'insieme di condizioni attuali.

      1. Puoi utilizzare l'Editor condizioni per applicare l'operatore logico !. Ad esempio, la query !resource.matchTag('ORGANIZATION_ID/location', 'us-west1') applicherà il vincolo del criterio dell'organizzazione a qualsiasi risorsa priva del tag us-west1.
  9. Per completare e applicare il criterio dell'organizzazione, fai clic su Salva.

gcloud

Per impostare il criterio dell'organizzazione, esegui questo comando:

gcloud org-policies set-policy POLICY_PATH

Dove POLICY_PATH è il percorso completo del file JSON dei criteri dell'organizzazione, che dovrebbe avere il seguente aspetto:

{
  "name": "RESOURCE_TYPE/RESOURCE_ID/policies/gcp.disableSerialPortAccess",
  "spec": {
    "rules": [
      {
        "condition": {
          "expression": "resource.matchTag(\"ORGANIZATION_ID/disableSerialAccess\", \"yes\")"
        },
        "enforce": true
      },
      {
        "enforce": false
      }
    ]
  }
}

Dove:

  • RESOURCE_TYPE è organizations, folders o projects.

  • RESOURCE_ID è l'ID organizzazione, l'ID cartella, l'ID progetto o il numero di progetto.

  • ORGANIZATION_ID è l'organizzazione principale della chiave tag.

Per il criterio dell'organizzazione sopra indicato, alla risorsa e a tutte le relative risorse figlio verrà applicato in modo forzato il vincolo gcp.disableSerialPortAccess. Tutte le risorse con il tag disableSerialAccess: yes verranno negate dal criterio dell'organizzazione. Per qualsiasi risorsa che non ha il tag disableSerialAccess: yes non verrà applicato il vincolo.

Aggiungere vincoli al criterio dell'organizzazione in modo condizionale

Puoi utilizzare i tag per aggiungere vincoli dei criteri dell'organizzazione alle risorse in modo condizionale, in base ai tag associati. Puoi aggiungere più condizioni all'interno dello stesso criterio dell'organizzazione, per avere un controllo granulare sulle risorse a cui vuoi che venga applicato il criterio dell'organizzazione.

Common Expression Language, o CEL, è il linguaggio di espressione utilizzato per specificare le espressioni condizionali. Un'espressione condizionale è composta da una o più istruzioni che vengono unite utilizzando operatori logici (&&, || o !). Per ulteriori informazioni, consulta la specifica CEL e la relativa definizione della lingua.

Prendi in considerazione un criterio dell'organizzazione per limitare le località in cui è possibile creare le risorse in base ai tag applicati a queste risorse. Per farlo, crea un criterio dell'organizzazione che applichi il vincolo gcp.resourceLocations e utilizza le condizioni per restringere l'applicazione solo a determinate risorse.

Inizia creando un file temporaneo, /tmp/policy.yaml, che contenga il criterio dell'organizzazione:

name: organizations/ORGANIZATION_ID/policies/gcp.resourceLocations
spec:
    rules:
    - condition:
        expression: "resource.matchTag('ORGANIZATION_ID/location', 'us-east')"
      values:
        allowedValues:
        - in:us-east1-locations
    - condition:
        expression: "resource.matchTag('ORGANIZATION_ID/location', 'us-west')"
      values:
        allowedValues:
        - in:us-west1-locations
    - values:
        deniedValues:
        - in:asia-south1-locations

Dove ORGANIZATION_ID è l'organizzazione principale della chiave tag.

Nell'esempio precedente, qualsiasi risorsa a cui è associato il tag location: us-east sarà limitata alle località all'interno del gruppo di valori us-east1-locations. Qualsiasi risorsa a cui è associato il tag location: us-west verrà limitata alle località all'interno del gruppo di valori us-west1-locations. Tutte le risorse dell'organizzazione verranno bloccate dalle località all'interno del gruppo di valori asia-south1-locations.

Quindi, imposta il criterio utilizzando il comando set-policy:

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

Limitazione delle risorse senza tag

Puoi utilizzare i tag e i criteri condizionali dell'organizzazione per limitare le risorse che non utilizzano un determinato tag. Se imposti un criterio dell'organizzazione su una risorsa che limita i servizi e lo rende condizionale alla presenza di un tag, non è possibile utilizzare risorse figlio discese da quella risorsa, a meno che non siano state contrassegnate con tag. In questo modo, le risorse devono essere configurate in conformità con il piano di governance prima di poter essere utilizzate.

Per limitare le risorse di organizzazioni, cartelle o progetti senza tag, puoi utilizzare l'operatore logico ! in una query condizionale quando crei il criterio dell'organizzazione.

Ad esempio, per consentire l'utilizzo di sqladmin.googleapis.com solo nei progetti che hanno il tag sqladmin=enabled, puoi creare un criterio dell'organizzazione che nega sqladmin.googleapis.com sui progetti privi del tag sqladmin=enabled.

  1. Crea un tag che identifichi se alle risorse è stata applicata la governance adeguata. Ad esempio, potresti creare un tag con la chiave sqlAdmin e il valore enabled per indicare che questa risorsa deve consentire l'utilizzo dell'API Cloud SQL Admin. Ad esempio:

    Creazione di una chiave e un valore del tag

  2. Fai clic sul nome del tag appena creato. Per creare una condizione, devi avere il nome con spazio dei nomi della chiave tag, indicato in Percorso chiave tag nei passaggi successivi.

  3. Crea un criterio dell'organizzazione Limita l'utilizzo del servizio delle risorse a livello della risorsa dell'organizzazione per negare l'accesso all'API Cloud SQL Admin. Ad esempio:

    Creazione di un criterio dell'organizzazione per la limitazione delle risorse

  4. Aggiungi una condizione al criterio dell'organizzazione sopra riportato, specificando che il criterio viene applicato in assenza del tag di governance. L'operatore logico NOT non è supportato dal generatore di condizioni, quindi questa condizione deve essere incorporata nell'editor delle condizioni. Ad esempio:

    Creare un criterio dell'organizzazione condizionale

    !resource.matchTag("012345678901/sqlAdmin", "enabled")

Ora, il tag sqlAdmin=enabled deve essere associato a un progetto o ereditato da questi ultimi affinché gli sviluppatori possano utilizzare l'API Cloud SQL Admin con il progetto.

Ereditarietà dei criteri dell'organizzazione

L'elenco dei vincoli dei criteri dell'organizzazione abilitati mediante tag verranno uniti al criterio dell'organizzazione esistente, in base alle normali regole di ereditarietà. Queste regole condizionali si applicano solo se la condizione è vera.

I vincoli booleani dei criteri dell'organizzazione abilitati mediante tag sostituiranno il criterio dell'organizzazione esistente. Inoltre, poiché i criteri booleani possono avere solo due stati, vero o falso, tutte le dichiarazioni condizionali devono essere opposte all'istruzione di non condizione per evitare che più tag entrino in conflitto tra loro.

Ad esempio, considera un criterio dell'organizzazione che applica il vincolo disableSerialPortAccess. Il valore incondizionato, ovvero il valore utilizzato se nessuna condizione lo sostituisce, è true. Pertanto, qualsiasi altra dichiarazione condizionale per questo criterio deve essere impostata su false per non essere in conflitto.

Passaggi successivi

Per ulteriori informazioni su come utilizzare i tag, consulta la pagina Creazione e gestione dei tag.

Per saperne di più su come creare e gestire i vincoli dei criteri dell'organizzazione, consulta Utilizzo dei vincoli.