In questa pagina viene spiegato come creare un attestatore personalizzato in Autorizzazione binaria mediante la console Google Cloud . In alternativa, puoi eseguire questi passaggi anche utilizzando Google Cloud CLI, o l'API REST. Questa attività fa parte della configurazione di Autorizzazione binaria.
Utenti di Cloud Build: in alternativa, potete utilizzare l'attestatore built-by-cloud-build
per eseguire il deployment solo delle immagini create da Cloud Build.
Prima di iniziare
Prima di creare gli attestatori:
Panoramica
Un attestatore è una Google Cloud risorsa che Autorizzazione binaria utilizza per verificare un'attestazione. Per saperne di più su Autorizzazione binaria, consulta la panoramica di Autorizzazione binaria.
Per creare un attestatore:
- Configura una coppia di chiavi che può essere utilizzata prima per firmare un'immagine, creando un'attestazione, e poi per verificare l'immagine, durante il deployment. Le coppie di chiavi PKIX sono coppie di chiavi generate da Cloud Key Management Service (Cloud KMS) in formato compatibile con PKIX.
- Crea l'attestatore stesso in Autorizzazione binaria e associa la chiave pubblica che hai creato.
In una configurazione a progetto singolo, crei l'attestatore nello stesso progetto in cui configuri il criterio di Autorizzazione binaria binaria. In una configurazione con più progetti, molto probabilmente hai un progetto di deployment in cui è configurato il criterio e un progetto attestatore separato in cui sono archiviati gli attestatori.
Configurare le chiavi di crittografia
Autorizzazione binaria consente di utilizzare le chiavi PKIX per firmare in modo sicuro un'immagine e poi verificarla. In questo modo, solo le parti verificate possono autorizzare un'immagine container. Per utilizzare l'attestazione, configura le chiavi asimmetriche, ad esempio le chiavi PKIX (Public-Key Infrastructure X.509), per verificare in modo sicuro l'identità degli attestatori. Quando viene eseguito il deployment di un'immagine, Autorizzazione binaria controlla l'attestazione dell'immagine, firmata con la chiave privata, utilizzando la chiave pubblica nell'attestatore.
In questa guida, per generare una coppia di chiavi PKIX viene utilizzato l'algoritmo di firma digitale a curva ellittica (ECDSA) consigliato. Puoi anche utilizzare le chiavi RSA o PGP per la firma. Per ulteriori informazioni sugli algoritmi di firma, consulta Finalità e algoritmi delle chiavi.
Creare una coppia di chiavi PKIX
Autorizzazione binaria consente di utilizzare coppie di chiavi PKIX asimmetriche per firmare e verificare un'immagine.
Una coppia di chiavi PKIX è costituita da una chiave privata, che il firmatario utilizza per firmare digitalmente le attestazioni, e da una chiave pubblica, che aggiungi all'attestatore. Al momento del deployment, Autorizzazione binaria utilizza questa chiave pubblica per verificare l'attestazione firmata dalla chiave privata.
Le coppie di chiavi asimmetriche generate e archiviate in Cloud KMS sono conformi al formato PKIX. Per creare una chiave Cloud KMS da utilizzare con Autorizzazione binaria, consulta Creazione di chiavi asimmetriche. Assicurati di scegliere Firma asimmetrica come scopo della chiave quando crei la chiave.
PKIX (Cloud KMS)
Per creare la coppia di chiavi in Cloud KMS:
Configura le variabili di ambiente necessarie per creare la coppia di chiavi.
KMS_KEY_PROJECT_ID=${PROJECT_ID} KMS_KEYRING_NAME=my-binauthz-keyring KMS_KEY_NAME=my-binauthz-kms-key-name KMS_KEY_LOCATION=global KMS_KEY_PURPOSE=asymmetric-signing KMS_KEY_ALGORITHM=ec-sign-p256-sha256 KMS_PROTECTION_LEVEL=software KMS_KEY_VERSION=1Crea il keyring.
gcloud kms keyrings create ${KMS_KEYRING_NAME} \ --location ${KMS_KEY_LOCATION}Crea la chiave:
gcloud kms keys create ${KMS_KEY_NAME} \ --location ${KMS_KEY_LOCATION} \ --keyring ${KMS_KEYRING_NAME} \ --purpose ${KMS_KEY_PURPOSE} \ --default-algorithm ${KMS_KEY_ALGORITHM} \ --protection-level ${KMS_PROTECTION_LEVEL}
PKIX (chiave locale)
Per generare una nuova coppia di chiavi PKIX asimmetriche locali e archiviarla in un file:
Genera la chiave:
PRIVATE_KEY_FILE="/tmp/ec_private.pem" openssl ecparam -genkey -name prime256v1 -noout -out ${PRIVATE_KEY_FILE}Poiché questo file contiene una chiave pubblica e una chiave privata, devi estrarre la chiave pubblica in un file separato in modo da poterla aggiungere all'attestatore:
PUBLIC_KEY_FILE="/tmp/ec_public.pem" openssl ec -in ${PRIVATE_KEY_FILE} -pubout -out ${PUBLIC_KEY_FILE}
Creare l'attestatore
Il passaggio successivo consiste nel creare l'attestatore stesso e nell'associare una nota di Artifact Analysis e una chiave pubblica.
Autorizzazione binaria utilizza Artifact Analysis per archiviare i metadati attendibili utilizzati nel processo di autorizzazione. Per ogni attestatore creato, devi creare una nota di Artifact Analysis. Ogni attestazione viene archiviata come occorrenza di questa nota.
Per creare l'attestatore:
Vai alla pagina Autorizzazione binaria per il progetto attestatore.
Nella scheda Attestatori, fai clic su Crea.
Fai clic su Crea nuovo attestatore.
In Nome attestatore, inserisci un nome per l'attestatore (ad esempio, build-secure o prod-qa).
Per aggiungere la chiave pubblica all'attestatore:
PKIX (chiave locale)
- Fai clic su Aggiungi una chiave PKIX.
- Fai clic su Importa da file.
- Individua e seleziona il file della chiave PKIX che hai salvato in precedenza. Nota: puoi anche incollare una chiave pubblica in formato PEM.
- Seleziona l'algoritmo di firma. La chiave di esempio in questa guida viene generata con l'algoritmo Curva ellittica P256 - Digest SHA.
PKIX (Cloud KMS)
- Fai clic su Aggiungi una chiave PKIX.
- Fai clic su Importa da Cloud KMS.
Nella finestra che si apre, inserisci l'ID risorsa per la versione della chiave. Il formato dell'ID risorsa è il seguente:
projects/KMS_KEY_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/KMS_KEYRING_NAME/cryptoKeys/KMS_KEY_NAME/cryptoKeyVersions/KMS_KEY_VERSION
dove:
- KMS_KEY_PROJECT_ID è l'ID del progetto in cui sono archiviate le chiavi
- KMS_KEY_LOCATION è la località della chiave (
globalè il valore predefinito) - KMS_KEYRING_NAME è il nome del keyring
- KMS_KEY_NAME è il nome della chiave
- KMS_KEY_VERSION è la versione della chiave
Se hai creato una coppia di chiavi Cloud KMS utilizzando le variabili di ambiente di esempio in questa pagina, puoi visualizzare l'ID risorsa con il seguente comando:
echo projects/${KMS_KEY_PROJECT_ID}/locations/${KMS_KEY_LOCATION}/keyRings/${KMS_KEYRING_NAME}/cryptoKeys/${KMS_KEY_NAME}/cryptoKeyVersions/${KMS_KEY_VERSION}Fai clic su Invia.
Se vuoi utilizzare una nota esistente che hai creato in precedenza, espandi la sezione Impostazioni avanzate.
Deseleziona Genera automaticamente una nota di Artifact Analysis nota.
Inserisci il nome completo nel campo ID nota di Artifact Analysis. Il nome ha il formato
projects/PROJECT_ID/notes/NOTE_ID.
Fai clic su Crea.
Verificare che l'attestatore sia stato creato
Per verificare che l'attestatore sia stato creato:
Torna alla pagina Autorizzazione binaria nella Google Cloud console.
Apri la scheda Attestatori.
Configurazione con più progetti
Se utilizzi una configurazione con più progetti, in cui hai progetti di deployment e attestatori separati, devi impostare autorizzazioni aggiuntive sulla risorsa attestatore affinché il progetto di deployment possa utilizzare le attestazioni create durante il deployment.
Aggiungere un'associazione di ruolo IAM per il progetto di deployment
Devi aggiungere un'associazione di ruolo IAM per il account di servizio del progetto di deployment all'attestatore. Questa viene utilizzata da Autorizzazione binaria quando valuta un criterio per determinare se l'account dispone delle autorizzazioni per accedere all'attestatore.
Devi aggiungere l'associazione di ruolo IAM dalla riga di comando, poiché questo passaggio non è supportato nella Google Cloud console.
Per aggiungere l'associazione di ruolo IAM:
Configura le variabili di ambiente per archiviare i nomi e i numeri dei progetti.
DEPLOYER_PROJECT_ID=PROJECT_ID DEPLOYER_PROJECT_NUMBER="$( gcloud projects describe "${DEPLOYER_PROJECT_ID}" \ --format="value(projectNumber)" )"Configura le variabili di ambiente per archiviare i nomi dei account di servizio per i progetti:
DEPLOYER_SERVICE_ACCOUNT="service-${DEPLOYER_PROJECT_NUMBER}@gcp-sa-binaryauthorization.iam.gserviceaccount.com"Aggiungi l'associazione di ruolo IAM:
gcloud --project ATTESTOR_PROJECT_ID \ beta container binauthz attestors add-iam-policy-binding \ "projects/ATTESTOR_PROJECT_ID/attestors/ATTESTOR" \ --member="serviceAccount:${DEPLOYER_SERVICE_ACCOUNT}" \ --role=roles/binaryauthorization.attestorsVerifier
Aggiungere un'associazione di ruolo IAM per l'utente che configura Autorizzazione binaria
Devi aggiungere un'associazione di ruolo IAM per l'utente che aggiunge un attestatore al criterio di Autorizzazione binaria nel progetto di deployment, poiché l'utente deve disporre dell'autorizzazione per visualizzare l'attestatore da aggiungere. Se vuoi, questa autorizzazione può essere revocata in sicurezza dopo l'aggiunta dell'attestatore.
Devi anche aggiungere l'associazione di ruolo IAM dalla riga di comando, poiché questo passaggio non è supportato nella Google Cloud console.
Per aggiungere l'associazione di ruolo IAM:
gcloud --project ATTESTOR_PROJECT_ID \
beta container binauthz attestors add-iam-policy-binding \
"projects/ATTESTOR_PROJECT_ID/attestors/ATTESTOR" \
--member=ADMIN_EMAIL_ACCOUNT \
--role=roles/binaryauthorization.attestorsViewer
Per rimuovere l'associazione di ruolo IAM dopo l'aggiunta dell'attestatore:
gcloud --project ATTESTOR_PROJECT_ID \
beta container binauthz attestors remove-iam-policy-binding \
"projects/ATTESTOR_PROJECT_ID/attestors/ATTESTOR" \
--member=ADMIN_EMAIL_ACCOUNT \
--role=roles/binaryauthorization.attestorsViewer
Passaggi successivi
- Scopri come creare attestazioni per l'attestatore.
- Aggiorna il criterio di Autorizzazione binaria per richiedere le attestazioni utilizzando la Google Cloud console, il Google Cloud CLI e l'API REST.