Questa pagina fornisce istruzioni su come proteggere i deployment delle immagini Cloud Run e Google Kubernetes Engine con Cloud Build.
Scopri come configurare Autorizzazione binaria per controllare la build e bloccare i deployment di immagini che non vengono generate in Cloud Build. Questo processo può ridurre il rischio di deployment software non autorizzato.
Prima di iniziare
Enable the Cloud Build, Binary Authorization, and Artifact Registry APIs.
Per utilizzare gli esempi a riga di comando in questa guida, installa e configura il Google Cloud SDK.
Controlla i deployment con Autorizzazione binaria
Un criterio in Autorizzazione binaria è un insieme di regole che regolano il deployment delle immagini. Puoi configurare una regola per richiedere attestazioni firmate digitalmente.
Cloud Build genera e firma le attestazioni in fase di creazione. Con
Autorizzazione binaria, puoi utilizzare l'attestatore built-by-cloud-build
per
verificare le attestazioni ed eseguire il deployment solo di immagini create da Cloud Build.
Per creare l'attestatore built-by-cloud-build
nel tuo progetto, esegui una build
quel progetto.
Per consentire il deployment solo delle immagini create da Cloud Build, esegui la seguenti passaggi:
Console
Vai alla pagina Autorizzazione binaria nella console Google Cloud:
Nella scheda Norme, fai clic su Modifica criterio.
Nella finestra di dialogo Modifica criterio, seleziona Consenti solo le immagini che sono state approvati da tutti i seguenti attestatori.
Fai clic su Aggiungi attestatori.
Nella finestra di dialogo Aggiungi attestatori, procedi nel seguente modo:
- Seleziona Aggiungi in base a nome progetto e attestatore ed esegui i seguenti passaggi:
- Nel campo Nome progetto, inserisci il progetto in cui esegui in Cloud Build.
- Fai clic sul campo Nome attestatore e tieni presente che l'attestatore
built-by-cloud-build
è disponibile. - Fai clic su
built-by-cloud-build
.
In alternativa, seleziona Aggiungi tramite ID risorsa attestatore. In ID risorsa attestatore, inserisci
projects/PROJECT_ID/attestors/built-by-cloud-build
Sostituzione di
PROJECT_ID
con il progetto in cui esegui in Cloud Build.
- Seleziona Aggiungi in base a nome progetto e attestatore ed esegui i seguenti passaggi:
Fai clic su Aggiungi 1 attestatore.
Fai clic su Save Policy (Salva criterio).
gcloud
Esporta il criterio esistente in un file utilizzando il seguente comando:
gcloud container binauthz policy export > /tmp/policy.yaml
Modifica il file dei criteri.
Modifica una delle seguenti regole:
defaultAdmissionRule
clusterAdmissionRules
istioServiceIdentityAdmissionRules
kubernetesServiceAccountAdmissionRules
Aggiungi un blocco
requireAttestationsBy
alla regola se non ne esiste uno .Nel blocco
requireAttestationsBy
, aggiungiprojects/PROJECT_ID/attestors/built-by-cloud-build
Sostituzione di
PROJECT_ID
con il progetto in cui esegui Cloud Build.Salva il file del criterio.
Importa il file di criteri.
gcloud container binauthz policy import /tmp/policy.yaml
Di seguito è riportato un esempio di file di criteri che contiene il riferimento al
built-by-cloud-build-attestor
:defaultAdmissionRule: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/PROJECT_ID/attestors/built-by-cloud-build name: projects/PROJECT_ID/policy
Sostituisci
PROJECT_ID
con l'ID progetto in cui esegui in Cloud Build.
Puoi visualizzare gli errori relativi ai criteri nei messaggi del log di Autorizzazione binaria per GKE o Cloud Run
Utilizzo della modalità dry run
In modalità dry run, Autorizzazione binaria controlla la conformità ai criteri senza bloccare effettivamente il deployment. I messaggi relativi allo stato di conformità ai criteri vengono invece registrati in Cloud Logging. Puoi utilizzare questi log per determinare se il criterio di blocco funziona correttamente e per identificare i falsi positivi.
Per attivare la simulazione:
Console
Vai alla pagina Autorizzazione binaria nella console Google Cloud.
Fai clic su Modifica criterio.
In Regola predefinita o in una regola specifica, seleziona Modalità dry run.
Fai clic su Save Policy (Salva criterio).
gcloud
Esporta il criterio di Autorizzazione binaria in un file YAML:
gcloud container binauthz policy export > /tmp/policy.yaml
In un editor di testo, imposta
enforcementMode
suDRYRUN_AUDIT_LOG_ONLY
e salva il file.Per aggiornare il criterio, importa il file eseguendo il seguente comando:
gcloud container binauthz policy import /tmp/policy.yaml
Puoi visualizzare gli errori dei criteri nei messaggi di log di Autorizzazione binaria per GKE o Cloud Run
Limitazioni
Cloud Build e Autorizzazione binaria devono essere nello stesso progetto. Se esegui la piattaforma di deployment in un altro configurare i ruoli IAM per una configurazione con più progetti e fai riferimento al progetto Cloud Build quando aggiungi attestatore
built-by-cloud-build
in Autorizzazione binaria.Cloud Build non genera attestazioni quando esegui il push delle immagini ad Artifact Registry utilizzando un passaggio di build
docker push
esplicito. Assicurati di eseguire il push ad Artifact Registry utilizzando il campoimages
nel passaggio di compilazionedocker build
. Per ulteriori informazioni suimages
, consulta Diverse modalità di archiviazione delle immagini in Artifact Registry.Devi utilizzare file di configurazione della build separati per la pipeline di build e la pipeline di deployment. Questo perché Cloud Build genera attestazioni solo dopo il completamento della pipeline di compilazione. L'Autorizzazione binaria controllerà quindi l'attestazione prima di eseguire il deployment dell'immagine.
Abilita attestazioni nei pool privati
Per impostazione predefinita, Cloud Build non genera Autorizzazione binaria
per le build in pool privati. Per generare
attestazioni, aggiungi l'opzione requestedVerifyOption: VERIFIED
alle tue
file di configurazione della build:
steps:
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build', '-t', 'us-central1-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1', '.' ]
images:
- 'us-central1-docker.pkg.dev/$PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1'
options:
requestedVerifyOption: VERIFIED
Dopo aver aggiunto requestedVerifyOption
, Cloud Build abilita
delle attestazioni e dei metadati di provenienza per i tuoi
dell'immagine.
Visualizzare i metadati dell'attestatore
Un attestatore viene creato la prima volta che esegui una compilazione in un progetto. L'ID attestatore è del tipo
projects/PROJECT_ID/attestors/built-by-cloud-build
,
dove PROJECT_ID
è l'ID progetto.
Puoi controllare i metadati dell'attestatore di build utilizzando il seguente comando:
curl -X GET -H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://binaryauthorization.googleapis.com/v1beta1/projects/PROJECT_ID/attestors/built-by-cloud-build
Sostituisci PROJECT_ID
con il progetto in cui esegui
in Cloud Build.
L'output contiene informazioni sull'attestatore e sul pubblico corrispondente chiave. Ad esempio:
name": "projects/PROJECT_ID/attestors/built-by-cloud-build", "userOwnedDrydockNote": { "noteReference": "projects/PROJECT_ID/notes/built-by-cloud-build", "publicKeys": [ { "id": "//cloudkms.googleapis.com/v1/projects/verified-builder/locations/asia/keyRings/attestor/cryptoKeys/builtByGCB/cryptoKeyVersions/1", "pkixPublicKey": { "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEMMvFxZLgIiWOLIXsaTkjTmOKcaK7\neIZrgpWHpHziTFGg8qyEI4S8O2/2wh1Eru7+sj0Sh1QxytN/KE5j3mTvYA==\n-----END PUBLIC KEY-----\n", "signatureAlgorithm": "ECDSA_P256_SHA256" } }, ... } ], "delegationServiceAccountEmail": "service-942118413832@gcp-binaryauthorization.iam.gserviceaccount.com" }, "updateTime": "2021-09-24T15:26:44.808914Z", "description": "Attestor autogenerated by build ID fab07092-30f4-4f70-caf7-4545cbc404d6"
Passaggi successivi
- Scopri di più su Autorizzazione binaria.