Richiedi criteri della piattaforma basati su controlli di convalida continua per tutti i cluster GKE

Questa pagina mostra come utilizzare il servizio Organization Policy per richiedere che i cluster GKE utilizzino uno o più criteri della piattaforma basati su controlli di convalida continua (CV). Specifica i criteri della piattaforma basati su controlli obbligatori nei vincoli personalizzati. Successivamente, applica i vincoli personalizzati nel criterio dell'organizzazione.

Costi

Questa guida utilizza i seguenti servizi Google Cloud:

  • Autorizzazione binaria, ma CV è disponibile senza costi durante la fase di anteprima
  • I criteri e i vincoli dell'organizzazione sono offerti senza costi.

Prima di iniziare

  1. Attiva Autorizzazione binaria.
  2. Configura il CV con criteri della piattaforma basati su controllo e almeno un criterio della piattaforma basato su controllo CV.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare vincoli e applicare i criteri dell'organizzazione, chiedi all'amministratore di concederti il ruolo IAM Amministratore dei criteri dell'organizzazione (roles/orgpolicy.policyAdmin) nella tua organizzazione Google Cloud. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

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

Crea un vincolo personalizzato di CV

Console

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

    Vai a Criteri dell'organizzazione

  2. Nella pagina Criteri dell'organizzazione, fai clic su Vincolo personalizzato.

  3. Se ti viene richiesto, fai clic su Passa all'organizzazione principale. Per approfondire le organizzazioni, consulta Introduzione al servizio Criteri dell'organizzazione

  4. In Dettagli vincolo, inserisci le seguenti informazioni nei campi:

    1. Nome visualizzato: il nome visualizzato del vincolo, ad esempio Require a Binary Authorization continuous validation policy for all GKE clusters. Utilizza il nome visualizzato per cercare la limitazione dopo che è stata salvata. Il campo del nome visualizzato ha una lunghezza massima di 200 caratteri

    2. ID vincolo: un ID per il vincolo, ad esempio RequireBinAuthzCVPolicy.

    3. (Facoltativo) Descrizione: una descrizione semplice da parte dell'utente del del vincolo che viene visualizzato come messaggio di errore quando il criterio viene violato. Il campo della descrizione ha una lunghezza massima di 2000 caratteri.

  5. In Applicazione, segui questi passaggi:

    1. In Tipi di risorsa, inserisci container.googleaips.com/Cluster.

    2. In Metodo di applicazione forzata, seleziona Forza applicazione in fase di creazione e aggiornamento.

    3. Inserisci un'espressione nel campo Condizione. Questo campo ha una lunghezza massima di 1000 caratteri. Il vincolo personalizzato viene applicato quando la condizione ha valore true. La condizione è un'espressione nella sintassi del Common Expression Language (CEL). Puoi combinare espressioni con (&&) e o (||) per creare una condizione complessa. CEL è un linguaggio di espressione in stile C. Per saperne di più sulla sintassi e semantica di CEL, consulta https://github.com/google/cel-spec. Per inserire la condizione:

      1. Fai clic su Modifica condizione.

      2. Inserisci un'espressione per verificare l'esistenza di un Criteri della piattaforma CV. La seguente condizione richiede che una piattaforma CV l'associazione di criteri esiste e che il criterio della piattaforma ha uno specifico criterio nome:

        resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID/platforms/gke/policies/POLICY_ID")
        

        Sostituisci quanto segue:

        • PROJECT_ID: l'ID progetto del tuo criteri della piattaforma. Il progetto deve trovarsi nella stessa organizzazione.
        • POLICY_ID: l'ID criterio del tuo criteri della piattaforma.

        La seguente condizione richiede l'esistenza di due associazioni di criteri della piattaforma CV e che ciascuna abbia un nome specifico per i criteri della piattaforma.

        resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID1/platforms/gke/policies/POLICY_ID1") && resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID2/platforms/gke/policies/POLICY_ID2")
        
        • PROJECT_ID1: l'ID progetto del tuo il primo criterio della piattaforma. Il progetto deve trovarsi nella stessa organizzazione.
        • POLICY_ID1: l'ID del primo criterio della piattaforma.
        • PROJECT_ID2: l'ID progetto del secondo criterio della piattaforma.
        • POLICY_ID2: l'ID del secondo criterio della piattaforma.

        • Fai clic su Salva.

    4. In Azione, seleziona Consenti.

  6. Per creare il vincolo personalizzato, fai clic su Crea vincolo.

gcloud

  1. Crea un file YAML per il vincolo personalizzato:

    name: organizations/ORGANIZATION_ID/customConstraints/custom.CONSTRAINT_ID
    resource_types: container.googleapis.com/Cluster
    method_types:
      - CREATE
      - UPDATE
    condition: >-
      CONDITION
    action_type: ACTION
    display_name: DISPLAY_NAME
    description: DESCRIPTION
    

    Sostituisci quanto segue:

    • ORGANIZATION_ID: l'ID della tua organizzazione, ad esempio 123456789.
    • CONSTRAINT_ID: un ID vincolo, ad esempio RequireBinAuthzCVPolicy.
    • CONDITION: inserisci un'espressione per verificare l'esistenza di norme della piattaforma CV. Questo campo ha una lunghezza massima di 1000 caratteri. Il vincolo personalizzato viene applicato quando la condizione ha valore true. La condizione è un'espressione nella sintassi del Common Expression Language (CEL). Puoi combinare espressioni con (&&) e o (||) per creare una condizione complessa. CEL è un linguaggio di espressione in stile C. Per scoprire di più sulla sintassi e sulla semantica di CEL, visita la pagina https://github.com/google/cel-spec. La seguente condizione richiede che esista un'associazione di criteri della piattaforma CV e che il criterio della piattaforma abbia un nome specifico:

      resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID/platforms/gke/policies/POLICY_ID")
      

      Sostituisci quanto segue:

      • PROJECT_ID: l'ID progetto del tuo criteri della piattaforma. Il progetto deve trovarsi nella stessa organizzazione.
      • POLICY_ID: l'ID criterio del tuo criteri della piattaforma.

      La seguente condizione richiede l'esistenza di due associazioni di criteri della piattaforma CV e che ciascuna abbia un nome specifico per i criteri della piattaforma.

      resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID1/platforms/gke/policies/POLICY_ID1") && resource.binaryAuthorization.policyBindings.exists(policy, policy.name == "projects/PROJECT_ID2/platforms/gke/policies/POLICY_ID2")
      
      • PROJECT_ID1: l'ID progetto del tuo il primo criterio della piattaforma. Il progetto deve trovarsi nella stessa organizzazione.
      • POLICY_ID1: l'ID del primo criterio della piattaforma.
      • PROJECT_ID2: l'ID progetto del secondo criterio della piattaforma.
      • POLICY_ID2: l'ID criterio del tuo secondo criterio della piattaforma.

      • ACTION: l'azione da eseguire se la condizione condition è soddisfatta. Può essere ALLOW o DENY.

      • DISPLAY_NAME: un nome facile da ricordare per il vincolo, ad esempio Require a Binary Authorization continuous validation policy for all GKE clusters. Il campo del nome visualizzato ha una lunghezza massima di 200 caratteri

      • DESCRIPTION: una descrizione chiara del vincolo da visualizzare come messaggio di errore in caso di violazione del criterio. Il campo della descrizione ha una lunghezza massima di 2000 caratteri.

    • Applica il vincolo personalizzato:

      gcloud org-policies set-custom-constraint CUSTOM_CONSTRAINT_PATH
      

      Sostituisci CUSTOM_CONSTRAINT_PATH con il percorso della definizione del vincolo personalizzato.

    • Verifica che il vincolo personalizzato esista:

      gcloud org-policies list-custom-constraints \
          --organization=ORGANIZATION_ID
      

      L'output è simile al seguente:

      CUSTOM_CONSTRAINT: custom.RequireBinAuthzCVPolicy
      ACTION_TYPE: ALLOW
      METHOD_TYPES: CREATE,UPDATE
      RESOURCE_TYPES: container.googleapis.com/Cluster
      DISPLAY_NAME: This cluster requires the continuous validation policy: projects/my-project/platforms/gke/policies/my-policy
      

Per attivare l'applicazione del vincolo personalizzato che hai creato, crea un criterio dell'organizzazione.

Utilizza un criterio dell'organizzazione per applicare il vincolo personalizzato

Per applicare il nuovo vincolo personalizzato, crea un criterio dell'organizzazione che fa riferimento al vincolo e applica il criterio dell'organizzazione.

Console

Per applicare il vincolo:

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

    Vai a Criteri dell'organizzazione

  2. Scegli il selettore di progetti e scegli l'organizzazione.

  3. Cerca e seleziona la limitazione dall'elenco.

  4. Nella pagina Dettagli criteri relativa al vincolo, fai clic su Gestisci criteri.

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

  6. Fai clic su Aggiungi una regola.

  7. In Applicazione, seleziona On.

  8. (Facoltativo) Fai clic su Testa modifiche per simulare l'effetto di questo criterio dell'organizzazione. Per ulteriori informazioni, consulta Testare le modifiche ai criteri dell'organizzazione con Policy Simulator.

  9. Per completare e applicare il criterio dell'organizzazione, fai clic su Imposta criterio.

gcloud

  1. Crea un file di definizione dei criteri YAML:

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

    Sostituisci quanto segue:

    • ORGANIZATION_ID: l'ID organizzazione
    • CONSTRAINT_ID: l'ID del vincolo
  2. Applicare il criterio:

    gcloud org-policies set-policy ORG_POLICY_PATH
    

    Sostituisci ORG_POLICY_PATH con il percorso del tuo di definizione dei criteri.

  3. Verifica che il criterio esista:

    gcloud org-policies list \
        --organization=ORGANIZATION_ID
    

    Sostituisci ORGANIZATION_ID con l'ID organizzazione.

    Per un elenco degli argomenti, consulta gcloud org-policies list.

    L'output è simile al seguente:

    CONSTRAINT: custom.RequireBinAuthzCVPolicy
    LIST_POLICY: -
    BOOLEAN_POLICY: SET
    ETAG: CN622LIGEIDXnpMB-
    

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

Per applicare più vincoli ai criteri della piattaforma basati sul controllo del CV:

  • Crea un vincolo personalizzato per ogni criterio basato su controllo CV.
  • Aggiorna il criterio dell'organizzazione con ogni vincolo personalizzato come descritto in questa sezione.

Elimina il vincolo personalizzato

Puoi eliminare un vincolo personalizzato utilizzando la console Google Cloud o Google Cloud CLI.

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 dei progetti, seleziona la tua organizzazione.

  4. Cerca e seleziona il vincolo dall'elenco.

  5. In Dettagli vincolo, fai clic su Elimina.

  6. Per confermare di voler eliminare la limitazione, fai clic su Elimina.

gcloud

Per eliminare un vincolo personalizzato, utilizza org-policies delete-custom-constraint Comando gcloud CLI:

gcloud org-policies delete-custom-constraint custom.CONSTRAINT_ID \
  --organization=ORGANIZATION_ID

Sostituisci quanto segue:

  • ORGANIZATION_ID: l'ID della tua organizzazione, ad esempio 123456789

  • CONSTRAINT_NAME: il nome del vincolo personalizzato

L'output è simile al seguente:

Deleted custom constraint [organizations/123456789/customConstraints/CONSTRAINT_NAME]

Dopo aver eliminato un vincolo personalizzato, tutti i criteri creati utilizzando il vincolo continua a esistere, ma viene ignorato. Non puoi crearne un'altra vincolo personalizzato con lo stesso nome di un vincolo personalizzato eliminato.

Passaggi successivi