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

Questa pagina mostra come utilizzare il servizio Policy dell'organizzazione per richiedere che i cluster GKE utilizzino una o più policy della piattaforma basate su controlli di convalida continua (CV). Specifica le policy della piattaforma basate su controlli richieste in vincoli personalizzati. Applica quindi i vincoli personalizzati nella policy dell'organizzazione.

Costi

Questa guida utilizza i seguenti Google Cloud servizi:

  • Autorizzazione binaria, ma la convalida continua è disponibile senza costi durante la fase di anteprima
  • Le policy e i vincoli dell'organizzazione sono offerti senza costi.

Prima di iniziare

  1. Attiva Autorizzazione binaria.
  2. Configura la convalida continua con policy della piattaforma basate su controlli e almeno una policy della piattaforma basata su controlli di convalida continua.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare vincoli e applicare le policy dell'organizzazione, chiedi all'amministratore di concederti il ruolo IAM Organization Policy Administrator (roles/orgpolicy.policyAdmin) nella tua organizzazione. Google Cloud 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.

Crea un vincolo personalizzato di convalida continua

Console

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

    Vai a Policy dell'organizzazione

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

  3. Se ti viene richiesto, fai clic su Passa all'organizzazione principale. Per saperne di più sulle organizzazioni, consulta Introduzione al servizio Policy dell'organizzazione.

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

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

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

    3. Descrizione (facoltativo): una descrizione chiara del vincolo da visualizzare come messaggio di errore in caso di violazione della policy. Il campo della descrizione ha una lunghezza massima di 2000 caratteri.

  5. In Applicazione forzata, segui questi passaggi:

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

    2. In Metodo di applicazione forzata, seleziona Applica forzatamente alla creazione e all'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 restituisce true. La condizione è un'espressione nella sintassi Common Expression Language (CEL). Puoi combinare le espressioni con and (&&) e or (||) per creare una condizione complessa. CEL è un linguaggio di espressione simile a C. Per saperne di più sulla sintassi e sulla 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 una policy della piattaforma di convalida continua. La seguente condizione richiede che esista un binding della policy della piattaforma di convalida continua e che la policy 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 della policy della piattaforma. Il progetto deve appartenere alla stessa organizzazione.
        • POLICY_ID: l'ID policy della policy della piattaforma.

        La seguente condizione richiede che esistano due binding della policy della piattaforma di convalida continua e che ognuno abbia un nome di policy della piattaforma specifico.

        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 della prima policy della piattaforma. Il progetto deve appartenere alla stessa organizzazione.
        • POLICY_ID1: l'ID policy della prima policy della piattaforma.
        • PROJECT_ID2: l'ID progetto della seconda policy della piattaforma.
        • POLICY_ID2: l'ID policy della seconda policy 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 organizzazione, ad esempio 123456789.
    • CONSTRAINT_ID: un ID vincolo, ad esempio RequireBinAuthzCVPolicy.
    • CONDITION: inserisci un'espressione per verificare l'esistenza di una policy della piattaforma di convalida continua. Questo campo ha una lunghezza massima di 1000 caratteri. Il vincolo personalizzato viene applicato quando la condizione restituisce true. La condizione è un'espressione nella sintassi Common Expression Language (CEL). Puoi combinare le espressioni con and (&&) e or (||) per creare una condizione complessa. CEL è un linguaggio di espressione simile a C. Per saperne di più sulla sintassi e sulla semantica di CEL, consulta https://github.com/google/cel-spec. La seguente condizione richiede che esista un binding della policy della piattaforma di convalida continua e che la policy 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 della policy della piattaforma. Il progetto deve appartenere alla stessa organizzazione.
      • POLICY_ID: l'ID policy della policy della piattaforma.

      La seguente condizione richiede che esistano due binding della policy della piattaforma di convalida continua e che ognuno abbia un nome di policy della piattaforma specifico.

      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 della prima policy della piattaforma. Il progetto deve appartenere alla stessa organizzazione.
      • POLICY_ID1: l'ID policy della prima policy della piattaforma.
      • PROJECT_ID2: l'ID progetto della seconda policy della piattaforma.
      • POLICY_ID2: l'ID policy della seconda policy della piattaforma.

      • ACTION: l'azione da eseguire se la 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 della policy. 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 abilitare l'applicazione forzata del vincolo personalizzato che hai creato, crea una policy dell'organizzazione.

Utilizza una policy dell'organizzazione per applicare forzatamente il vincolo personalizzato

Per applicare forzatamente il nuovo vincolo personalizzato, crea una policy dell'organizzazione che faccia riferimento al vincolo e poi applica la policy dell'organizzazione.

Console

Per applicare forzatamente il vincolo:

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

    Vai a Policy dell'organizzazione

  2. Seleziona il selettore di progetti e poi l'organizzazione.

  3. Cerca e seleziona il vincolo dall'elenco.

  4. Nella pagina Dettagli policy del vincolo, fai clic su Gestisci policy.

  5. Nella pagina Modifica policy, seleziona Esegui override della policy dell'unità organizzativa principale.

  6. Fai clic su Aggiungi una regola.

  7. In Applicazione forzata, seleziona On.

  8. (Facoltativo) Fai clic su Testa modifiche per simulare l'effetto di questa policy dell'organizzazione. Per saperne di più, consulta Testa le modifiche alla policy dell'organizzazione con Policy Simulator.

  9. Per completare e applicare la policy dell'organizzazione, fai clic su Imposta policy.

gcloud

  1. Crea un file di definizione della policy 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 vincolo
  2. Applica la policy:

    gcloud org-policies set-policy ORG_POLICY_PATH
    

    Sostituisci ORG_POLICY_PATH con il percorso del file di definizione della policy.

  3. Verifica che la policy esista:

    gcloud org-policies list \
        --organization=ORGANIZATION_ID
    

    Sostituisci ORGANIZATION_ID con l'ID organizzazione.

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

    L'output è simile al seguente:

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

L'applicazione della policy può richiedere fino a 15 minuti.

Per applicare forzatamente più vincoli alle policy della piattaforma basate su controlli di convalida continua:

  • Crea un vincolo personalizzato per ogni policy basata su controlli di convalida continua.
  • Aggiorna la policy dell'organizzazione con ogni vincolo personalizzato come descritto in questa sezione.

Elimina il vincolo personalizzato

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

Console

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

    Vai a Policy dell'organizzazione

  2. Seleziona il selettore di progetti nella parte superiore della pagina.

  3. Nel selettore di progetti, seleziona la tua organizzazione.

  4. Cerca e seleziona il vincolo dall'elenco.

  5. In Dettagli vincolo, fai clic su Elimina.

  6. Fai clic su Elimina per confermare l'eliminazione del vincolo.

gcloud

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

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

Sostituisci quanto segue:

  • ORGANIZATION_ID: l'ID 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, le policy create utilizzando quel vincolo continuano a esistere, ma vengono ignorate. Non puoi creare un altro vincolo personalizzato con lo stesso nome di un vincolo personalizzato eliminato.

Passaggi successivi