Guida rapida: monitora la sicurezza dei pod con la convalida continua
Scopri come iniziare a utilizzare la convalida continua (CV) di Autorizzazione binaria con criteri basati sui controlli. In questo rapida, utilizzerai i seguenti controlli CV per convalidare continuamente i pod in esecuzione per condizioni:
- Directory attendibile: Controlla che le immagini associate al pod risiedano in una o più immagini attendibili che hai specificato nel criterio.
- Aggiornamento delle immagini: Controlla che le immagini del pod siano state caricate entro un certo numero di giorni in cui specificare nel criterio.
Prima di iniziare
- 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.
- 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.
-
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Binary Authorization and Google Kubernetes Engine.
gcloud services enable container.googleapis.com
binaryauthorization.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.
-
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Binary Authorization and Google Kubernetes Engine.
gcloud services enable container.googleapis.com
binaryauthorization.googleapis.com - 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.
Crea un criterio relativo alla piattaforma
Per configurare un criterio della piattaforma CV GKE, procedi nel seguente modo:
Crea il file YAML dei criteri della piattaforma:
cat << EOF > /tmp/my-policy.yaml gkePolicy: checkSets: - checks: - trustedDirectoryCheck: trustedDirPatterns: - us-central1-docker.pkg.dev/my-project/my-directory displayName: My trusted directory check - imageFreshnessCheck: maxUploadAgeDays: 30 displayName: My image freshness check displayName: My trusted directory and image freshness check set EOF
Questo criterio verifica le seguenti condizioni:
I pod vengono archiviate nel repository Artifact Registry denominato
us-central1-docker.pkg.dev/my-project/my-directory
.I pod in Artifact Registry o Repository di Container Registry negli ultimi 30 giorni.
Crea il criterio della piattaforma:
gcloud beta container binauthz policy create POLICY_ID \ --platform=gke \ --policy-file=/tmp/my-policy.yaml \ --project=POLICY_PROJECT_ID
Sostituisci quanto segue:
POLICY_ID
: un ID a tua sceltaPOLICY_PROJECT_ID
: l'ID progetto del criterio
Crea o aggiorna un cluster
Per abilitare CV su un cluster, puoi creare un nuovo cluster oppure aggiornare un cluster esistente.
Per creare un cluster con il criterio della piattaforma basato sui controlli abilitato, esegui seguente comando:
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_IDSostituisci quanto segue:
CLUSTER_NAME
: il nome del clusterLOCATION
: la località, ad esempio:us-central1
oppureasia-south1
POLICY_PROJECT_ID
: l'ID del progetto in cui il criterio viene archiviatoPOLICY_ID
: l'ID del criterioCLUSTER_PROJECT_ID
: l'ID progetto del cluster
Attendi che il cluster venga creato.
Per aggiornare un cluster esistente con criteri basati su controllo abilitati, esegui .
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
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del clusterLOCATION
: la località, ad esempio:us-central1
oppureasia-south1
POLICY_PROJECT_ID
: l'ID del progetto in cui il criterio viene archiviatoPOLICY_ID
: l'ID del criterioCLUSTER_PROJECT_ID
: l'ID progetto del cluster
Attendi che il cluster venga aggiornato.
Esegui il deployment di un'immagine
Ottieni la credenziale per
kubectl
:gcloud container clusters get-credentials CLUSTER_NAME
Esegui il deployment di un'immagine:
kubectl run hello-app \ --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Immagine
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
soddisfa il controllo di aggiornamento perché è stato caricato nel repository negli ultimi 30 giorni. ma l'immagine non soddisfa i requisiti controllo della directory perché non è inus-central1-docker.pkg.dev/my-project/my-directory
. Di conseguenza, il CV produceTrustedDirectoryCheck
log in Cloud Logging.
Visualizza i log
La voce di log viene visualizzata in Cloud Logging entro 24 ore dall'avvio del pod. ma può essere visualizzato in un paio d'ore.
Per visualizzare il log in Cloud Logging, utilizza il filtro seguente:
logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation" "policyName"
Il log per il pod hello-app
è simile a quello riportato di seguito. Alcune
potrebbero essere diversi a seconda dell'ID progetto, del nome del cluster e così via.
{
"insertId": "637c2de7-0000-2b64-b671-24058876bb74",
"jsonPayload": {
"podEvent": {
"endTime": "2022-11-22T01:14:30.430151Z",
"policyName": "projects/1234567890/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": "Default check set",
"checkSetIndex": "0",
"checkName": "My trusted directory check",
"verdict": "NON_CONFORMANT",
"checkType": "TrustedDirectoryCheck",
"checkIndex": "0"
}
],
"image": "us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0"
}
],
"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-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"
}
La voce di log mostra informazioni sulla violazione delle norme, tra cui seguenti campi:
policyName
: un criterio della piattaforma utilizzato da CV quando è stato rilevato ha identificato la violazionecheckResults
: un blocco di risultati che include i seguenti campi:explanation
: un messaggio di errorecheckSetName
: il valoredisplayName
per il set di controllicheckSetIndex
: l'indice del set di controlli nel criteriocheckName
: il nome dell'assegnocheckIndex
: l'indice del controllo nel set di controlliverdict
: l'esito che ha generato la voce di log, in questo casoNOT_CONFORMANT
perché la verifica non è stata soddisfatta.
Alcuni controlli possono includere informazioni aggiuntive che possono aiutarti a capire perché. la verifica non è stata soddisfatta.
Poiché l'immagine soddisfaceva il controllo di aggiornamento, quest'ultimo non vengono visualizzate nel log.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi per le risorse utilizzate in questa pagina, elimina il progetto Google Cloud Google Cloud.
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 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 clusterLOCATION
: la località del clusterCLUSTER_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 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 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 criterioPOLICY_PROJECT_ID
: l'ID progetto del criterio
Passaggi successivi
- Utilizzare il controllo di aggiornamento delle immagini
- Utilizzare il semplice controllo dell'attestazione della firma
- Utilizzare il controllo della firma di Sigstore
- Utilizzare il controllo SLSA
- Utilizzare il controllo della directory attendibile
- Utilizza il controllo delle vulnerabilità
Scopri di più sui CV e altri controlli CV.