Utilizza il controllo delle vulnerabilità

Questa pagina mostra come utilizzare la convalida continua (CV) di Autorizzazione binaria controllo della vulnerabilità per per monitorare le vulnerabilità associate ai pod in esecuzione Cluster Google Kubernetes Engine (GKE) abilitati per CV.

Costi

Questa guida utilizza i seguenti servizi Google Cloud:

  • Artifact Analysis
  • Autorizzazione binaria, ma CV è disponibile senza costi durante la fase di anteprima
  • GKE

Per generare una stima dei costi basata sull'utilizzo previsto, utilizza Calcolatore prezzi.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Installa Google Cloud CLI.
  3. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  4. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  5. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  6. Abilita le API Artifact Analysis, Binary Authorization, Google Kubernetes Engine.

    gcloud services enable binaryauthorization.googleapis.com containeranalysis.googleapis.com container.googleapis.com
  7. Installa Google Cloud CLI.
  8. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  9. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  10. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  11. Abilita le API Artifact Analysis, Binary Authorization, Google Kubernetes Engine.

    gcloud services enable binaryauthorization.googleapis.com containeranalysis.googleapis.com container.googleapis.com
  12. Assicurati che gcloud CLI sia aggiornato all'ultima versione.
  13. Installa lo strumento a riga di comando kubectl.
  14. Se i criteri di Autorizzazione binaria e i cluster GKE si trovano in progetti diversi, assicurati che Autorizzazione binaria sia abilitata in entrambi i progetti.

Ruoli obbligatori

Questa sezione mostra come impostare i ruoli per questo controllo.

Panoramica

Se pubblichi tutti i prodotti menzionati in questa guida nello stesso non devi impostare alcuna autorizzazione. Autorizzazione binaria configura i ruoli correttamente quando lo abiliti. Se pubblichi i prodotti in in progetti diversi, devi impostare i ruoli come descritto in questa sezione.

per garantire che l'agente di servizio di Autorizzazione binaria in ogni progetto disponga delle autorizzazioni necessarie autorizzazioni necessarie per valutare il controllo delle vulnerabilità dei CV, chiedi all'amministratore di concedere all'agente di servizio di Autorizzazione binaria in ciascun progetto seguenti ruoli IAM:

  • Se il progetto del cluster è diverso dal progetto dei criteri: Valutatore criteri di autorizzazione binaria (roles/binaryauthorization.policyEvaluator) sull'agente di servizio di Autorizzazione binaria del progetto cluster, affinché possa accedere al progetto dei criteri
  • Se il progetto artefatto è diverso dal progetto di criteri: Visualizzatore occorrenze Container Analysis (roles/containeranalysis.occurrences.viewer) sull'agente di servizio di Autorizzazione binaria del progetto di criteri, affinché possa accedere alle informazioni sulla vulnerabilità

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

L'amministratore potrebbe anche essere in grado di fornire all'agente di servizio di Autorizzazione binaria in ciascun progetto le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.

Concedi ruoli utilizzando gcloud CLI

Per garantire che gli account di servizio in ogni progetto dispongano delle risorse necessarie autorizzazioni per valutare questo controllo, concedi agli account di servizio in ogni progetto i seguenti ruoli IAM:

  1. Se il progetto in cui esegui il cluster è diverso da quello in cui si trova il criterio, devi concedere l'autorizzazione per il cluster all'agente di servizio di Autorizzazione binaria del progetto per accedere al criterio per il progetto dei criteri.

    1. Ottieni l'agente di servizio di Autorizzazione binaria del progetto cluster:

      PROJECT_NUMBER=$(gcloud projects list \
        --filter="projectId:CLUSTER_PROJECT_ID" \
        --format="value(PROJECT_NUMBER)")
      CLUSTER_SERVICE_ACCOUNT="service-$PROJECT_NUMBER@gcp-sa-binaryauthorization.iam.gserviceaccount.com"
      

      Sostituisci CLUSTER_PROJECT_ID con l'ID progetto nel cluster.

    2. Consenti a CV di valutare il criterio sul cluster:

      gcloud projects add-iam-policy-binding POLICY_PROJECT_ID \
          --member="serviceAccount:$CLUSTER_SERVICE_ACCOUNT" \
          --role='roles/binaryauthorization.policyEvaluator'
      

      Sostituisci POLICY_PROJECT_ID con l'ID del contenente il criterio.

  2. Se il tuo progetto Artifact Analysis è diverso dal tuo Progetto del criterio di Autorizzazione binaria:

    1. Recupera l'agente di servizio di Autorizzazione binaria del progetto di criteri:

      PROJECT_NUMBER=$(gcloud projects list \
        --filter="projectId:POLICY_PROJECT_ID" \
        --format="value(PROJECT_NUMBER)")
      SERVICE_ACCOUNT="service-$PROJECT_NUMBER@gcp-sa-binaryauthorization.iam.gserviceaccount.com"
      

      Sostituisci POLICY_PROJECT_ID con l'ID del contenente il criterio.

    2. Concedi il ruolo:

      gcloud projects add-iam-policy-binding VULNERABILITY_PROJECT_ID \
          --member="serviceAccount:$SERVICE_ACCOUNT" \
          --role='roles/containeranalysis.occurrences.viewer'
      

      Sostituisci VULNERABILITY_PROJECT_ID con l'ID del in cui eseguirai Artifact Analysis.

Crea un criterio relativo alla piattaforma

Per creare un criterio della piattaforma CV con un controllo di vulnerabilità: procedi nel seguente modo:

  1. Crea il file YAML dei criteri della piattaforma:

    cat > /tmp/my-policy.yaml <<EOF
    
    gkePolicy:
      checkSets:
      - checks:
        - vulnerabilityCheck:
            maximumFixableSeverity: MEDIUM
            maximumUnfixableSeverity: HIGH
            allowedCves:
              - CVE_ALLOWED
            blockedCves:
              - CVE_BLOCKED
            containerAnalysisVulnerabilityProjects: projects/VULNERABILITY_PROJECT
          displayName: My vulnerability check
        displayName: My vulnerability check set
    EOF
    

Limitazione di responsabilità per la classificazione dei dati:

  • I dati sulle vulnerabilità raccolti dai progetti specificati in containerAnalysisVulnerabilityProjects sono considerati Dati dei clienti.
  • CV elabora i dati sulle vulnerabilità in memoria negli Stati Uniti quando sono soddisfatte le seguenti condizioni:
    • CV è abilitata su un cluster.
    • Un criterio associato al cluster contiene un controllo vulnerabilityCheck.
    • Gli account di servizio appropriati dispongono dell'autorizzazione IAM per accedere ai dati sulle vulnerabilità in containerAnalysisVulnerabilityProjects.
  • I dettagli di conformità alle norme risultanti dalla valutazione delle norme vengono archiviati ed elaborati come Dati di servizio.

Per ulteriori informazioni, consulta l'[Addendum per il trattamento dei dati Cloud (clienti)}(https://cloud.google.com/terms/data-processing-addendum)

  1. Crea il criterio della piattaforma:

Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

  • POLICY_ID: un ID criterio della piattaforma di tua scelta. Se il criterio si trova in un altro progetto, puoi utilizzare il nome completo della risorsa: projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID.
  • POLICY_PATH: un percorso al file del criterio.
  • POLICY_PROJECT_ID: l'ID progetto del criterio.

Esegui la persone che seguo :

Linux, macOS o Cloud Shell

gcloud beta container binauthz policy create POLICY_ID \
    --platform=gke \
    --policy-file=POLICY_PATH \
    --project=POLICY_PROJECT_ID

Windows (PowerShell)

gcloud beta container binauthz policy create POLICY_ID `
    --platform=gke `
    --policy-file=POLICY_PATH `
    --project=POLICY_PROJECT_ID

Windows (cmd.exe)

gcloud beta container binauthz policy create POLICY_ID ^
    --platform=gke ^
    --policy-file=POLICY_PATH ^
    --project=POLICY_PROJECT_ID

Abilita CV

Puoi creare un nuovo cluster o aggiornarne uno esistente per utilizzare il monitoraggio CV con criteri della piattaforma basati su controlli.

Crea un cluster che utilizza il monitoraggio CV

In questa sezione creerai un cluster che utilizza solo CV il monitoraggio con criteri della piattaforma basati su controlli.

Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

  • CLUSTER_NAME: il nome di un cluster.
  • LOCATION: la località, ad esempio us-central1 o asia-south1.
  • POLICY_PROJECT_ID: l'ID del progetto in cui è archiviato il criterio.
  • POLICY_ID: l'ID del criterio.
  • CLUSTER_PROJECT_ID: l'ID progetto del cluster.

Esegui la persone che seguo :

Linux, macOS o Cloud Shell

gcloud beta container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --binauthz-evaluation-mode=POLICY_BINDINGS \
    --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID \
    --project=CLUSTER_PROJECT_ID

Windows (PowerShell)

gcloud beta container clusters create CLUSTER_NAME `
    --location=LOCATION `
    --binauthz-evaluation-mode=POLICY_BINDINGS `
    --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID `
    --project=CLUSTER_PROJECT_ID

Windows (cmd.exe)

gcloud beta container clusters create CLUSTER_NAME ^
    --location=LOCATION ^
    --binauthz-evaluation-mode=POLICY_BINDINGS ^
    --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID ^
    --project=CLUSTER_PROJECT_ID

Crea un cluster che utilizza l'applicazione forzata e il monitoraggio delle conversioni

In questa sezione creerai un cluster che utilizza Applicazione dei criteri project-singleton e monitoraggio delle conversioni con criteri della piattaforma basati su controlli:

Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

  • CLUSTER_NAME: il nome di un cluster.
  • LOCATION: la località, ad esempio us-central1 o asia-south1.
  • POLICY_PROJECT_ID: l'ID del progetto in cui è archiviato il criterio.
  • POLICY_ID: l'ID del criterio.
  • CLUSTER_PROJECT_ID: l'ID progetto del cluster.

Esegui la persone che seguo :

Linux, macOS o Cloud Shell

gcloud beta container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --binauthz-evaluation-mode=POLICY_BINDINGS_AND_PROJECT_SINGLETON_POLICY_ENFORCE \
    --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID \
    --project=CLUSTER_PROJECT_ID

Windows (PowerShell)

gcloud beta container clusters create CLUSTER_NAME `
    --location=LOCATION `
    --binauthz-evaluation-mode=POLICY_BINDINGS_AND_PROJECT_SINGLETON_POLICY_ENFORCE `
    --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID `
    --project=CLUSTER_PROJECT_ID

Windows (cmd.exe)

gcloud beta container clusters create CLUSTER_NAME ^
    --location=LOCATION ^
    --binauthz-evaluation-mode=POLICY_BINDINGS_AND_PROJECT_SINGLETON_POLICY_ENFORCE ^
    --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID ^
    --project=CLUSTER_PROJECT_ID

Aggiorna un cluster per utilizzare il monitoraggio CV

In questa sezione aggiorni un cluster per utilizzare il monitoraggio CV solo con criteri della piattaforma basati su controlli. Se il cluster ha già applicazione del criterio project-singleton abilitata; l'esecuzione di questo comando disabilita li annotino. Valuta invece la possibilità di aggiornare il cluster con applicazione forzata Monitoraggio CV abilitato.

Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

  • CLUSTER_NAME: il nome del cluster
  • LOCATION: la località, ad esempio us-central1 o asia-south1
  • POLICY_PROJECT_ID: l'ID del progetto in cui è archiviato il criterio
  • POLICY_ID: l'ID del criterio
  • CLUSTER_PROJECT_ID: l'ID progetto del cluster

Esegui la persone che seguo :

Linux, macOS o Cloud Shell

gcloud beta container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --binauthz-evaluation-mode=POLICY_BINDINGS \
    --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID \
    --project=CLUSTER_PROJECT_ID

Windows (PowerShell)

gcloud beta container clusters update CLUSTER_NAME `
    --location=LOCATION `
    --binauthz-evaluation-mode=POLICY_BINDINGS `
    --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID `
    --project=CLUSTER_PROJECT_ID

Windows (cmd.exe)

gcloud beta container clusters update CLUSTER_NAME ^
    --location=LOCATION ^
    --binauthz-evaluation-mode=POLICY_BINDINGS ^
    --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID ^
    --project=CLUSTER_PROJECT_ID

Aggiorna un cluster per utilizzare l'applicazione forzata e il monitoraggio delle conversioni

In questa sezione aggiorni un cluster in modo che utilizzi il criterio di singleton progetto applicazione delle norme e monitoraggio delle conversioni con una piattaforma basata su controlli criteri.

Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:

  • CLUSTER_NAME: il nome di un cluster
  • LOCATION: la località, ad esempio us-central1 o asia-south1
  • POLICY_PROJECT_ID: l'ID del progetto in cui è archiviato il criterio
  • POLICY_ID: l'ID del criterio
  • CLUSTER_PROJECT_ID: l'ID progetto del cluster

Esegui la persone che seguo :

Linux, macOS o Cloud Shell

gcloud beta container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --binauthz-evaluation-mode=POLICY_BINDINGS_AND_PROJECT_SINGLETON_POLICY_ENFORCE \
    --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID \
    --project=CLUSTER_PROJECT_ID

Windows (PowerShell)

gcloud beta container clusters update CLUSTER_NAME `
    --location=LOCATION `
    --binauthz-evaluation-mode=POLICY_BINDINGS_AND_PROJECT_SINGLETON_POLICY_ENFORCE `
    --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID `
    --project=CLUSTER_PROJECT_ID

Windows (cmd.exe)

gcloud beta container clusters update CLUSTER_NAME ^
    --location=LOCATION ^
    --binauthz-evaluation-mode=POLICY_BINDINGS_AND_PROJECT_SINGLETON_POLICY_ENFORCE ^
    --binauthz-policy-bindings=name=projects/POLICY_PROJECT_ID/platforms/gke/policies/POLICY_ID ^
    --project=CLUSTER_PROJECT_ID

Testa il controllo delle vulnerabilità

Per verificare che il controllo sia configurato correttamente, aggiorna il criterio e modifica il valore Controlla i parametri per forzare una violazione. Ad esempio, potresti aggiungere una specifica CVE in blockedCves, quindi esegui il deployment di un'immagine che presenta la vulnerabilità.

Visualizza i log per le voci CV

Puoi cercare le voci di Cloud Logging per trovare gli errori di configurazione CV e violazioni dei criteri della piattaforma CV.

Errori e violazioni dei log CV in Cloud Logging entro 24 ore. In genere, puoi visualizzare le voci entro poche ore.

Visualizza i log degli errori di configurazione CV

Per visualizzare i log degli errori di configurazione CV, esegui questo comando:

gcloud logging read \
     --order="desc" \
     --freshness=7d \
     --project=CLUSTER_PROJECT_ID \
    'logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation" "configErrorEvent"'

L'output seguente mostra un errore di configurazione in cui un CV criterio della piattaforma non trovato:

{
  "insertId": "141d4f10-72ea-4a43-b3ec-a03da623de42",
  "jsonPayload": {
    "@type": "type.googleapis.com/google.cloud.binaryauthorization.v1beta1.ContinuousValidationEvent",
    "configErrorEvent": {
      "description": "Cannot monitor cluster 'us-central1-c.my-cluster': Resource projects/123456789/platforms/gke/policies/my-policy does not exist."
    }
  },
  "resource": {
    "type": "k8s_cluster",
    "labels": {
      "cluster_name": "my-cluster",
      "location": "us-central1-c",
      "project_id": "my-project"
    }
  },
  "timestamp": "2024-05-28T15:31:03.999566Z",
  "severity": "WARNING",
  "logName": "projects/my-project/logs/binaryauthorization.googleapis.com%2Fcontinuous_validation",
  "receiveTimestamp": "2024-05-28T16:30:56.304108670Z"
}

Visualizza le violazioni dei criteri della piattaforma CV

Se nessuna immagine viola le norme relative alla piattaforma che hai attivato, nessuna voce vengono visualizzate nei log.

Per visualizzare le voci di log CV relative agli ultimi sette giorni, esegui questo comando :

gcloud logging read \
     --order="desc" \
     --freshness=7d \
     --project=CLUSTER_PROJECT_ID \
    'logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation" "policyName"'

Sostituisci CLUSTER_PROJECT_ID con l'ID progetto del cluster.

Tipi di controlli

I log CV controllano le informazioni sulle violazioni per checkResults. Nella , il valore checkType indica il controllo. I valori di ogni controllo sono come segue:

  • ImageFreshnessCheck
  • SigstoreSignatureCheck
  • SimpleSigningAttestationCheck
  • SlsaCheck
  • TrustedDirectoryCheck
  • VulnerabilityCheck

Log di esempio

La voce di logging CV di esempio che segue descrive un'immagine non conforme che viola un controllo delle directory attendibili:

{
  "insertId": "637c2de7-0000-2b64-b671-24058876bb74",
  "jsonPayload": {
    "podEvent": {
      "endTime": "2022-11-22T01:14:30.430151Z",
      "policyName": "projects/123456789/platforms/gke/policies/my-policy",
      "images": [
        {
          "result": "DENY",
          "checkResults": [
            {
              "explanation": "TrustedDirectoryCheck at index 0 with display name \"My trusted directory check\" has verdict NOT_CONFORMANT. Image is not in a trusted directory",
              "checkSetName": "My check set",
              "checkSetIndex": "0",
              "checkName": "My trusted directory check",
              "verdict": "NON_CONFORMANT",
              "checkType": "TrustedDirectoryCheck",
              "checkIndex": "0"
            }
          ],
          "image": "gcr.io/my-project/hello-app:latest"
        }
      ],
      "verdict": "VIOLATES_POLICY",
      "podNamespace": "default",
      "deployTime": "2022-11-22T01:06:53Z",
      "pod": "hello-app"
    },
    "@type": "type.googleapis.com/google.cloud.binaryauthorization.v1beta1.ContinuousValidationEvent"
  },
  "resource": {
    "type": "k8s_cluster",
    "labels": {
      "project_id": "my-project",
      "location": "us-central1-a",
      "cluster_name": "my-test-cluster"
    }
  },
  "timestamp": "2022-11-22T01:44:28.729881832Z",
  "severity": "WARNING",
  "logName": "projects/my-project/logs/binaryauthorization.googleapis.com%2Fcontinuous_validation",
  "receiveTimestamp": "2022-11-22T03:35:47.171905337Z"
}

Esegui la pulizia

Questa sezione descrive come eseguire la pulizia del monitoraggio CV configurate in precedenza in questa guida.

Puoi disabilitare il monitoraggio degli errori o entrambe le funzionalità di Autorizzazione binaria e CV nel tuo cluster.

Disabilita Autorizzazione binaria in un cluster

Per disattivare l'applicazione forzata di CV e di Autorizzazione binaria in esegui questo comando:

gcloud beta container clusters update CLUSTER_NAME \
    --binauthz-evaluation-mode=DISABLED \
    --location=LOCATION \
    --project=CLUSTER_PROJECT_ID

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster
  • LOCATION: la località del cluster
  • CLUSTER_PROJECT_ID: l'ID progetto del cluster

Disabilita il monitoraggio dei criteri basato su controlli in un cluster

a disabilitare la correzione CV con criteri basati su controllo nel cluster riattiva l'applicazione utilizzando il criterio di applicazione di Autorizzazione binaria, esegui il seguente comando:

gcloud beta container clusters update CLUSTER_NAME  \
    --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE \
    --location=LOCATION \
    --project="CLUSTER_PROJECT_ID"

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster
  • LOCATION: la località del cluster
  • CLUSTER_PROJECT_ID: l'ID progetto del cluster

Tieni presente che --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE è equivalente al precedente flag --enable-binauthz.

Elimina il criterio

Per eliminare il criterio, esegui questo comando. Non è necessario eliminare il criterio della piattaforma basata sui controlli per disabilitare il controllo dei criteri basati sui controlli.

gcloud beta container binauthz policy delete POLICY_ID \
    --platform=gke \
    --project="POLICY_PROJECT_ID"

Sostituisci quanto segue:

  • POLICY_ID: l'ID del criterio
  • POLICY_PROJECT_ID: l'ID progetto del criterio

Passaggi successivi