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
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Analysis, Binary Authorization, Google Kubernetes Engine APIs:
gcloud services enable binaryauthorization.googleapis.com
containeranalysis.googleapis.com container.googleapis.com - Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Analysis, Binary Authorization, Google Kubernetes Engine APIs:
gcloud services enable binaryauthorization.googleapis.com
containeranalysis.googleapis.com container.googleapis.com - Assicurati che la CLI gcloud sia aggiornata all'ultima versione.
- Installa lo strumento a riga di comando
kubectl
. - 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 utilizzi tutti i prodotti menzionati in questa guida nello stesso progetto, 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 a progetti, cartelle e organizzazioni.
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 i 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:
Se il progetto in cui esegui il cluster è diverso da quello in cui risiede il criterio, devi concedere all'agente di servizio di Autorizzazione binaria del progetto del cluster l'autorizzazione per accedere al criterio nel progetto del criterio.
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.Consenti a CV di valutare il criterio nel 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.
Se il tuo progetto Artifact Analysis è diverso dal tuo Progetto del criterio di Autorizzazione binaria:
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.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 progetto in cui esegui Artifact Analysis.
Crea un criterio relativo alla piattaforma
Per creare un criterio della piattaforma CV con un controllo di vulnerabilità: segui questi passaggi:
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 del cliente. - CV tratta i dati sulle vulnerabilità in memoria negli Stati Uniti quando sono soddisfatte le seguenti condizioni:
- La CV è attivata 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)
- 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 delle norme.
- POLICY_PROJECT_ID: l'ID del progetto di norme.
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 dei CV con i 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 posizione, ad esempious-central1
oasia-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 i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
CLUSTER_NAME
: il nome di un cluster.LOCATION
: la posizione, ad esempious-central1
oasia-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 in modo da utilizzare il monitoraggio dei video con criteri della piattaforma basati solo su controlli. Se nel cluster è già attivata l'applicazione dei criteri relativi ai progetti singoli, l'esecuzione di questo comando la disattiva. Ti consigliamo invece di aggiornare il cluster con l'applicazione forzata e il monitoraggio dei CV abilitati.
Prima di utilizzare uno qualsiasi dei dati di comando riportati di seguito, effettua le seguenti sostituzioni:
CLUSTER_NAME
: il nome del clusterLOCATION
: la località, ad esempious-central1
oasia-south1
POLICY_PROJECT_ID
: l'ID del progetto in cui è archiviato il criterioPOLICY_ID
: l'ID criterioCLUSTER_PROJECT_ID
: l'ID progetto del cluster
Esegui il seguente comando:
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 i dati dei comandi riportati di seguito, effettua le seguenti sostituzioni:
CLUSTER_NAME
: il nome di un clusterLOCATION
: la località, ad esempious-central1
oasia-south1
POLICY_PROJECT_ID
: l'ID del progetto in cui è archiviato il criterioPOLICY_ID
: l'ID criterioCLUSTER_PROJECT_ID
: l'ID progetto del cluster
Esegui il seguente comando:
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 i parametri di controllo 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 del CV
Puoi cercare le voci di Cloud Logging per trovare errori di configurazione del CV e violazioni della convalida dei criteri della piattaforma CV.
CV registra gli errori e le violazioni 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 i criteri della piattaforma che hai attivato, non vengono visualizzate voci nei log.
Per visualizzare le voci di log del CV degli ultimi sette giorni, esegui il seguente 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
voce, il valore checkType
indica il controllo. I valori di ogni controllo sono
come segue:
ImageFreshnessCheck
SigstoreSignatureCheck
SimpleSigningAttestationCheck
SlsaCheck
TrustedDirectoryCheck
VulnerabilityCheck
Log di esempio
L'esempio seguente di voce di log CV descrive un'immagine non conforme che viola un controllo della directory attendibile:
{
"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
In questa sezione viene descritto come eseguire la pulizia del monitoraggio del 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 sia di CV sia di Autorizzazione di binari nel tuo cluster, esegui il seguente 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 clusterLOCATION
: la località del clusterCLUSTER_PROJECT_ID
: l'ID progetto del cluster
Disabilita il monitoraggio dei criteri basato su controlli in un cluster
Per disattivare la verifica con criteri basati su controlli nel cluster e riattivare 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 clusterLOCATION
: la località del clusterCLUSTER_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 basato su controlli per disattivare il controllo dei criteri basato su controlli.
gcloud beta container binauthz policy delete POLICY_ID \
--platform=gke \
--project="POLICY_PROJECT_ID"
Sostituisci quanto segue:
POLICY_ID
: l'ID del criterioPOLICY_PROJECT_ID
: l'ID progetto del criterio
Passaggi successivi
- Utilizzare il controllo dell'aggiornamento delle immagini
- Utilizzare il semplice controllo dell'attestazione della firma
- Utilizzare il controllo delle firme Sigstore
- Utilizzare il controllo SLSA
- Utilizzare il controllo della directory attendibile
- Utilizza il controllo delle vulnerabilità
- Visualizza log CV