Configurare l'applicazione dei criteri di Autorizzazione binaria

Autorizzazione binaria per Google Distributed Cloud è una funzionalità Google Cloud che estende l'applicazione ospitata e in fase di deployment di Autorizzazione binaria ai tuoi cluster on-premise. Il caso d'uso principale per l'autorizzazione binaria su Google Distributed Cloud è proteggere i carichi di lavoro, ma l'autorizzazione binaria funziona con tutti i tipi di cluster. Segui i passaggi descritti in questa guida per applicare le regole di applicazione di un criterio di autorizzazione binaria configurato nel tuo progetto Google Cloud ai tuoi cluster. Per ulteriori informazioni sulle norme 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, assicurati di aver soddisfatto i seguenti criteri di prerequisito:

  • Registra il cluster in un parco risorse: un cluster creato con bmctl viene registrato nel progetto Google Cloud che specifichi nel campo gkeConnect.projectID del 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 Gestione del parco risorse.

  • Abilita l'API Binary Authorization nel tuo progetto Google Cloud : abilita Autorizzazione binaria Authorization nel progetto host del parco progetti.

  • Aggiungi il ruolo Valutatore criterio di autorizzazione binaria al progetto host del tuo parco progetti: per concedere il ruolo Valutatore criterio di autorizzazione binaria (roles/binaryauthorization.policyEvaluator) al service account Kubernetes nel progetto host del tuo parco progetti, esegui questo 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 viene eseguito dietro un server proxy, assicurati che il server proxy consenta le connessioni all'API Binary Authorization (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 maggiori informazioni sull'utilizzo di una configurazione proxy, vedi Installazione tramite proxy.

Una volta soddisfatti i prerequisiti, puoi attivare (o disattivare) il criterio Autorizzazione binarian 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 bmctl o gcloud CLI.

bmctl

Per abilitare Autorizzazione binaria quando crei un cluster con bmctl:

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

    ...
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: user-basic
      namespace: cluster-user-basic
    spec:
      type: user
      ...
      binaryAuthorization:
        evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"
    

    I valori consentiti per evaluationMode sono:

    • PROJECT_SINGLETON_POLICY_ENFORCE: applica le regole specificate nella policy di Autorizzazione binaria, nota anche come policy singleton di progetto, al tuo progetto Google Cloud per controllare il deployment di immagini container sul tuo cluster.

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

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

Per ulteriori informazioni sulla creazione di cluster, consulta Panoramica della creazione di cluster.

Interfaccia a riga di comando gcloud

  • Per creare un cluster utente e attivare Autorizzazione binaria, aggiungi il flag --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE quando esegui il comando gcloud container bare-metal clusters create.

    In questo modo viene creato un cluster utente che applica le regole specificate nel criterio di autorizzazione binaria, noto anche come criterio singleton di progetto. Questa policy è associata al tuo progetto Google Cloud e specifica le regole che regolano il deployment delle immagini container. Per ulteriori informazioni sull'utilizzo di gcloud CLI per creare un cluster utente, consulta Creare un cluster utente utilizzando i client API GKE On-Prem. Per ulteriori informazioni sulle norme e sulle regole di Autorizzazione binaria, consulta Panoramica di Autorizzazione binaria.

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

Se hai un cluster esistente versione 1.16 o successive, puoi attivare o disattivare l'autorizzazione binaria in qualsiasi momento utilizzando bmctl o gcloud CLI.

bmctl

  • Per attivare:

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

      ...
      ---
      apiVersion: baremetal.cluster.gke.io/v1
      kind: Cluster
      metadata:
        name: user-basic
        namespace: cluster-user-basic
      spec:
        type: user
        ...
        binaryAuthorization:
          evaluationMode: "PROJECT_SINGLETON_POLICY_ENFORCE"
      
    2. Aggiorna il cluster:

      bmctl update cluster -c CLUSTER_NAME --admin-kubeconfig=CLUSTER_KUBECONFIG
      

      Sostituisci quanto segue:

      • CLUSTER_NAME: il nome del cluster da aggiornare.
      • CLUSTER_KUBECONFIG: il percorso del file kubeconfig del cluster.
    3. Attendi che il deployment denominato binauthz-module-deployment nello spazio dei nomi binauthz-system sia pronto.

      Quando il deployment è pronto, Autorizzazione binaria applica le regole specificate nel criterio di Autorizzazione binaria, noto anche come criterio singleton del progetto. Queste norme sono associate al tuo progettoGoogle Cloud e specificano le regole che regolano il deployment delle immagini container. Per saperne di più sull'utilizzo di bmctl per aggiornare un cluster, vedi Aggiornare i cluster. Per ulteriori informazioni sulle norme e sulle regole di Autorizzazione binaria, consulta la panoramica di Autorizzazione binaria.

  • Per disattivare la funzionalità:

    Questa funzionalità può essere disattivata impostando evaluationMode su DISABLED o rimuovendo la sezione binaryAuthorization dalla specifica del cluster. Una volta apportata questa modifica, attendi qualche minuto finché il deployment denominato binauthz-module-deployment nello spazio dei nomi binauthz-system non viene rimosso.

Interfaccia a riga di comando gcloud

  • Per abilitare Autorizzazione binaria per un cluster esistente, aggiungi il flag --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE quando esegui il comando gcloud container bare-metal clusters update.

    In questo modo, un cluster utente viene aggiornato in modo che Autorizzazione binaria applichi le regole specificate nel criterio di Autorizzazione binaria, noto anche come criterio singleton del progetto. Queste norme sono associate al tuo progettoGoogle Cloud e specificano le regole che regolano il deployment delle immagini container. Per saperne di più sull'utilizzo di gcloud CLI per aggiornare un cluster utente, consulta gcloud container bare-metal clusters update nella documentazione di riferimento di gcloud CLI. Per ulteriori informazioni sulle norme e sulle regole di Autorizzazione binaria, consulta Panoramica di Autorizzazione binaria.

  • Per disattivare Autorizzazione binaria per un cluster esistente, esegui il comando gcloud container bare-metal clusters update con il flag --binauthz-evaluation-mode=DISABLED.

Risoluzione dei problemi

Se non completi tutti i prerequisiti, potresti non notare alcun segnale precoce di un problema. Se l'autorizzazione binaria inizia a non rispondere alle richieste di creazione di pod, controlla status.conditions per il ReplicaSet. Un messaggio simile al seguente indica che si è verificato un problema con la configurazione dell'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