Guida rapida: monitora la sicurezza dei pod con la convalida continua
Scopri come iniziare a utilizzare la convalida continua (CV) di Autorizzazione binaria con policy basati su controlli. In questo quickstart, utilizzi i seguenti controlli dei video per convalidare continuamente i pod in esecuzione per le seguenti condizioni:
- Directory attendibile: controlla che le immagini associate al pod si trovino in una o più directory attendibili specificate nelle norme.
- Aggiornamento delle immagini: controlla che le immagini del pod siano state caricate entro un numero di giorni specificato nelle norme.
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 Binary Authorization and Google Kubernetes Engine APIs:
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.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Binary Authorization and Google Kubernetes Engine APIs:
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 una policy della piattaforma
Per configurare un criterio della piattaforma GKE per i CV, 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:
Le immagini dei pod vengono archiviate nel repository Artifact Registry chiamato
us-central1-docker.pkg.dev/my-project/my-directory
.Le immagini dei pod sono state caricate nei repository Artifact Registry o Container Registry negli ultimi 30 giorno.
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 attivare la CV su un cluster, puoi creare un nuovo cluster o aggiornarne uno esistente.
Per creare un cluster con il criterio della piattaforma basato su controlli abilitato, esegui il 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
oasia-south1
POLICY_PROJECT_ID
: l'ID del progetto in cui è memorizzato il criterioPOLICY_ID
: l'ID criterioCLUSTER_PROJECT_ID
: l'ID progetto del cluster
Attendi che il cluster venga creato.
Per aggiornare un cluster esistente con i criteri basati su controlli abilitati, esegui il seguente comando.
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
oasia-south1
POLICY_PROJECT_ID
: l'ID del progetto in cui è memorizzato il criterioPOLICY_ID
: l'ID criterioCLUSTER_PROJECT_ID
: l'ID progetto del cluster
Attendi l'aggiornamento del cluster.
Esegui il deployment di un'immagine
Recupera 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
L'immagine
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
soddisfa il controllo dell'aggiornamento perché è stata caricata nel repository negli ultimi 30 giorni. Tuttavia, l'immagine non soddisfa il controllo della directory attendibile perché non si trova inus-central1-docker.pkg.dev/my-project/my-directory
. Di conseguenza, CV produce voci di logTrustedDirectoryCheck
in Cloud Logging.
Visualizza i log
La voce di log viene visualizzata in Cloud Logging entro 24 ore dal deployment del pod, ma può essere visualizzata anche in un paio di ore.
Per visualizzare il log in Cloud Logging, utilizza il seguente filtro:
logName:"binaryauthorization.googleapis.com%2Fcontinuous_validation" "policyName"
Il log del pod hello-app
è simile a quello riportato di seguito. Alcuni
campi 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, inclusi i seguenti campi:
policyName
: una norma della piattaforma utilizzata da CV al momento della violazionecheckResults
: un blocco di risultati che include i seguenti campi:explanation
: un messaggio di errorecheckSetName
: il valoredisplayName
per l'insieme di controllicheckSetIndex
: l'indice del controllo impostato nel criteriocheckName
: il nome del controllocheckIndex
: l'indice del controllo nel set di controlloverdict
: il verdetto che ha generato la voce di log, in questo casoNOT_CONFORMANT
perché il controllo non è stato soddisfatto.
Alcuni controlli possono includere informazioni aggiuntive che possono aiutarti a capire perché il controllo non è stato soddisfatto.
Poiché l'immagine ha soddisfatto il controllo dell'aggiornamento, questo non viene visualizzato nel log.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate su questa pagina, elimina il progetto Google Cloud con le risorse.
Questa sezione descrive come ripulire il monitoraggio dei CV configurato in precedenza in questa guida.
Puoi disattivare il monitoraggio CV o sia l'Autorizzazione binaria sia il monitoraggio CV nel tuo cluster.
Disattivare Autorizzazione binaria in un cluster
Per disattivare l'applicazione sia di CV sia di Autorizzazione binaria 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 posizione del clusterCLUSTER_PROJECT_ID
: l'ID progetto del cluster
Disattivare 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 posizione del clusterCLUSTER_PROJECT_ID
: l'ID progetto del cluster
Tieni presente che --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
è equivalente al flag precedente --enable-binauthz
.
Elimina il criterio
Per eliminare il criterio, esegui il seguente 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 di attestazione della firma
- Utilizzare il controllo delle firme di Sigstore
- Utilizzare il controllo SLSA
- Utilizzare il controllo della directory attendibile
- Utilizzare il controllo delle vulnerabilità
Scopri di più sul CV e su altri controlli del CV.