Guida rapida: monitora la sicurezza dei pod con la convalida continua
Scopri come iniziare a utilizzare la convalida continua (CV) di Autorizzazione binaria con le norme basate sui controlli. In questa guida rapida, utilizzi i seguenti controlli�� CV per convalidare continuamente i pod in esecuzione per le seguenti condizioni:
- Directory attendibile: Verifica che le immagini associate al pod si trovino in una o più directory attendibili che specifichi nelle norme.
- Aggiornamento delle immagini: verifica che le immagini del pod siano state caricate entro un numero di giorni specificato nella norma.
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 senza costi per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Crea o seleziona un Google Cloud progetto.
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto
(
roles/resourcemanager.projectCreator), che contiene l'autorizzazioneresourcemanager.projects.create. Scopri come concedere i ruoli.
-
Creare un progetto Google Cloud :
gcloud projects create PROJECT_ID
Sostituisci
PROJECT_IDcon un nome per il progetto Google Cloud che stai creando. -
Seleziona il progetto Google Cloud che hai creato:
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_IDcon il nome del progetto Google Cloud .
-
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .
Abilita le API Autorizzazione binaria e Google Kubernetes Engine:
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.gcloud services enable container.googleapis.com
binaryauthorization.googleapis.com -
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Crea o seleziona un Google Cloud progetto.
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto
(
roles/resourcemanager.projectCreator), che contiene l'autorizzazioneresourcemanager.projects.create. Scopri come concedere i ruoli.
-
Creare un progetto Google Cloud :
gcloud projects create PROJECT_ID
Sostituisci
PROJECT_IDcon un nome per il progetto Google Cloud che stai creando. -
Seleziona il progetto Google Cloud che hai creato:
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_IDcon il nome del progetto Google Cloud .
-
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .
Abilita le API Autorizzazione binaria e Google Kubernetes Engine:
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.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.
Creare una policy della piattaforma
Per configurare una policy della piattaforma GKE CV, procedi nel seguente modo:
Crea il file YAML della policy 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 EOFQuesta policy verifica la presenza delle seguenti condizioni:
Le immagini dei pod sono archiviate nel repository Artifact Registry denominato
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 giorni.
Crea la policy della piattaforma:
gcloud beta container binauthz policy create POLICY_ID \ --platform=gke \ --policy-file=/tmp/my-policy.yaml \ --project=POLICY_PROJECT_IDSostituisci quanto segue:
POLICY_ID: un ID a tua sceltaPOLICY_PROJECT_ID: l'ID progetto della policy
Crea o aggiorna un cluster
Per abilitare CV su un cluster, puoi creare un nuovo cluster o aggiornare un cluster esistente.
Per creare un cluster con il criterio della piattaforma basato sul controllo abilitato, esegui questo 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 posizione, ad esempio:us-central1oasia-south1POLICY_PROJECT_ID: l'ID del progetto in cui è archiviata la policyPOLICY_ID: l'ID della policyCLUSTER_PROJECT_ID: l'ID progetto del cluster
Attendi la creazione del cluster.
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_IDSostituisci quanto segue:
CLUSTER_NAME: il nome del clusterLOCATION: la posizione, ad esempio:us-central1oasia-south1POLICY_PROJECT_ID: l'ID del progetto in cui è archiviata la policyPOLICY_ID: l'ID della policyCLUSTER_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_NAMEEsegui il deployment di un'immagine:
kubectl run hello-app \ --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0L'immagine
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0supera il controllo di aggiornamento perché è stata caricata nel repository negli ultimi 30 giorni. Tuttavia, l'immagine non supera il controllo della directory attendibile perché non si trova inus-central1-docker.pkg.dev/my-project/my-directory. Di conseguenza, CV produce voci di logTrustedDirectoryCheckin Cloud Logging.
Visualizzare 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 d'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 che CV utilizzava quando ha identificato la violazionecheckResults: un blocco di risultati che include i seguenti campi:explanation: un messaggio di errorecheckSetName: il valore didisplayNameper il set di controllicheckSetIndex: l'indice del controllo impostato nella policycheckName: il nome del controllocheckIndex: l'indice del controllo nel set di controlliverdict: il verdetto che ha generato la voce di log, in questo casoNOT_CONFORMANTperché 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 superato il controllo di aggiornamento, quest'ultimo non viene visualizzato nel log.
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, elimina il progetto Google Cloud con le risorse.
Questa sezione descrive come eseguire la pulizia del monitoraggio CV che hai configurato in precedenza in questa guida.
Puoi disattivare il monitoraggio di CV o sia Autorizzazione binaria che CV nel tuo cluster.
Disabilita Autorizzazione binaria in un cluster
Per disattivare l'applicazione sia di CV che di Autorizzazione binaria nel tuo cluster, 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 posizione del clusterCLUSTER_PROJECT_ID: l'ID progetto del cluster
Disabilita il monitoraggio delle policy basato sui controlli in un cluster
Per disabilitare CV 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 la policy
Per eliminare la policy, esegui questo comando. Non è necessario eliminare la policy della piattaforma basata su controlli per disabilitare il controllo delle policy basato su controlli.
gcloud beta container binauthz policy delete POLICY_ID \
--platform=gke \
--project="POLICY_PROJECT_ID"
Sostituisci quanto segue:
POLICY_ID: l'ID della policyPOLICY_PROJECT_ID: l'ID progetto della policy
Passaggi successivi
- Utilizzare il controllo dell'aggiornamento delle immagini
- Utilizzare il semplice controllo dell'attestazione della firma
- Utilizzare il controllo della firma 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.