Configura l'applicazione delle policy di Autorizzazione binaria

Autorizzazione binaria per Google Distributed Cloud è una Google Cloud funzionalità che estende l'applicazione ospitata e in fase di deployment di Autorizzazione binaria ai cluster utente on-premise. Il caso d'uso principale di Autorizzazione binaria su Google Distributed Cloud è proteggere i carichi di lavoro sui cluster utente. Segui i passaggi descritti in questa guida per applicare le regole di applicazione di un criterio di Autorizzazione binaria configurato nel tuo Google Cloud progetto ai cluster utente. Per saperne di più sui criteri e sulle regole di Autorizzazione binaria, consulta la panoramica di Autorizzazione binaria.

Prerequisiti

Prima di poter abilitare l'applicazione dei criteri di Autorizzazione binaria per un cluster utente, assicurati di aver soddisfatto i seguenti criteri di prerequisito:

  • Registra il cluster in un parco risorse: per un cluster creato con gkectl, il cluster viene registrato nel Google Cloud progetto specificato nel campo gkeConnect.projectID nel file di configurazione del cluster. Questo progetto è denominato progetto host del parco risorse. Per saperne di più sui parchi risorse, inclusi casi d'uso, best practice ed esempi, consulta la documentazione sulla gestione dei parchi risorse.

  • Abilita l'API Autorizzazione binaria nel tuo Google Cloud progetto: abilita il servizio Autorizzazione binaria nel progetto host del parco risorse.

  • Aggiungi il ruolo di valutatore dei criteri di Autorizzazione binaria al progetto host del parco risorse: per concedere il ruolo di valutatore dei criteri di Autorizzazione binaria (roles/binaryauthorization.policyEvaluator) al service account Kubernetes nel progetto host del parco risorse, esegui il seguente comando:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \
        --role="roles/binaryauthorization.policyEvaluator"
    

    Se il cluster è in esecuzione dietro un server proxy, assicurati che il server proxy consenta le connessioni all'API Autorizzazione binaria (binaryauthorization.googleapis.com). Questa API fornisce la convalida e il controllo del deployment basati su criteri per le immagini di cui è stato eseguito il deployment nel cluster. Per saperne di più, consulta Proxy e regole firewall proxy.

Una volta soddisfatti i prerequisiti, puoi abilitare (o disabilitare) il criterio di Autorizzazione binaria quando crei un nuovo cluster o aggiorni un cluster esistente.

Abilitare il criterio di Autorizzazione binaria durante la creazione del cluster

Puoi abilitare l'applicazione dei criteri di Autorizzazione binaria con gkectl o gcloud CLI.

gkectl

Per abilitare Autorizzazione binaria quando crei un cluster con gkectl:

  1. Prima di creare il cluster, aggiungi binaryAuthorization.evaluationMode al file di configurazione del cluster utente come mostrato nell'esempio seguente:

    ...
    binaryAuthorization:
      evaluationMode: "project_singleton_policy_enforce"
    ...
    

    I valori consentiti per evaluationMode sono:

    • project_singleton_policy_enforce: applica le regole specificate nel criteriodi Autorizzazione binaria, noto anche come criteriosingleton del progetto , al tuo Google Cloud progetto per controllare il deployment delle immagini container nel cluster.

    • disabled: disabilita l'utilizzo di Autorizzazione binaria per il cluster. Questo è il valore predefinito. Se ometti binaryAuthorization, la funzionalità è disabilitata.

  2. Apporta eventuali altre modifiche necessarie al file di configurazione del cluster, quindi esegui il comando gkectl create cluster.

Per saperne di più sulla creazione di cluster, consulta la panoramica dell'installazione di Google Distributed Cloud.

Abilitare o disabilitare il criterio di Autorizzazione binaria per un cluster esistente

Se hai un cluster esistente con versione 1.28 o successive, puoi abilitare o disabilitare Autorizzazione binaria in qualsiasi momento utilizzando gkectl o gcloud CLI.

gkectl

  • Per abilitare l'opzione:

    1. Modifica il file di configurazione del cluster per aggiungere i campi binaryAuthorization:

      ...
      binaryAuthorization:
        evaluationMode: "project_singleton_policy_enforce"
      
    2. Aggiorna il cluster:

      gkectl update cluster \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config USER_CLUSTER_CONFIG_FILE \
        --force

      Sostituisci quanto segue:

      • ADMIN_CLUSTER_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione
      • USER_CLUSTER_CONFIG_FILE: il percorso del file di configurazione del cluster utente.
    3. Attendi che il deployment denominato binauthz-module-deployment nello spazio dei nomi binauthz-system diventi pronto.

      Quando il deployment è pronto, Autorizzazione binaria applica le regole specificate nel criterio di Autorizzazione binaria, noto anche come criterio singleton del progetto. Questo criterio è associato al tuo Google Cloud progetto e specifica le regole per controllare il deployment delle immagini container. Per saperne di più sull'utilizzo di gkectl per aggiornare un cluster, consulta Aggiornare i cluster. Per saperne di più sui criteri e sulle regole di Autorizzazione binaria, consulta la panoramica di Autorizzazione binaria.

  • Per disabilitare l'opzione:

    1. Modifica il file di configurazione del cluster e rimuovi la sezione binaryAuthorization oppure imposta evaluationMode su disabled.

      ...
      binaryAuthorization:
        evaluationMode: "disabled"
      
    2. Aggiorna il cluster:

      gkectl update cluster \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config USER_CLUSTER_CONFIG_FILE \
        --force

    Dopo aver apportato questa modifica, attendi alcuni minuti finché non viene rimosso il deployment denominato binauthz-module-deployment nello spazio dei nomi binauthz-system.

Risoluzione dei problemi

Se non completi tutti i prerequisiti, potresti visualizzare un messaggio simile al seguente che indica che si è verificato un problema con la configurazione di Autorizzazione binaria:

failed to validate Binary Authorization policy

(1) Ensure the Binary Authorization API is enabled for your Google Cloud project:
    gcloud services enable binaryauthorization.googleapis.com --project=PROJECT_ID
(2) Ensure an IAM policy binding is in place granting binaryauthorization.policyEvaluator role to the binauthz-system/binauthz-agent Kubernetes service account:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[binauthz-system/binauthz-agent]" \
        --role=roles/binaryauthorization.policyEvaluator