Questa pagina spiega come creare un attestatore in Autorizzazione binaria utilizzando la console Google Cloud. In alternativa, puoi anche eseguire questi passaggi utilizzando Google Cloud CLI o l'API REST. Questa attività fa parte della configurazione di Autorizzazione binaria.
Prima di iniziare
Prima di creare attestatori, procedi nel seguente modo:
Autorizzazione binaria deve essere abilitata. Per ulteriori informazioni, consulta la sezione Attivare Autorizzazione binaria.
Il criterio deve essere configurato in modo da consentire solo le immagini verificate dagli attestatori. Per scoprire di più, consulta Configurare un criterio utilizzando la console.
Panoramica
Un attestatore è una risorsa Google Cloud che Autorizzazione binaria utilizza per verificare un'attestatore. Per saperne di più su Autorizzazione binaria, consulta la sezione Panoramica di Autorizzazione binaria.
Per creare un attestatore devi:
- Configura una coppia di chiavi PKIX da utilizzare per verificare l'identità dell'attestatore. Le coppie di chiavi asimmetriche generate da Cloud Key Management Service (Cloud KMS) sono in formato compatibile con PKIX.
- Crea l'attestatore in Autorizzazione binaria e associa la chiave pubblica che hai creato
In una configurazione per un singolo progetto, crei l'attestatore nello stesso progetto in cui configuri il criterio di Autorizzazione binaria. In una configurazione multiprogetto, molto probabilmente hai un progetto deployer 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 verificare in modo sicuro l'identità degli attestatori. Ciò garantisce che solo le parti verificate possano autorizzare un'immagine container.
In questa guida, viene utilizzato l'algoritmo di firma digitale (ELDSA) Curve Elliptic Curve per generare una coppia di chiavi PKIX. Puoi utilizzare anche le chiavi RSA o PGP per la firma. Per saperne di più sulla firma degli algoritmi, consulta Obiettivi e algoritmi chiave.
Crea una coppia di chiavi PKIX
Autorizzazione binaria consente di utilizzare coppie di chiavi PKIX asimmetriche per verificare l'identità di un attestatore. La coppia di chiavi è composta da una chiave privata, che l'attestatore utilizza per firmare le attestazioni digitali, e da una chiave pubblica, che si aggiunge all'attestatore come archiviato dal servizio Autorizzazione binaria.
Una coppia di chiavi PKIX è composta da una chiave privata, utilizzata dal firmatore per firmare le attestazioni digitali, 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 la sezione Creazione di chiavi asimmetriche. Assicurati di scegliere Segno asimmetrico come scopo della chiave quando crei la chiave.
PKIX (Cloud KMS)
Per creare la coppia di chiavi in Cloud KMS, procedi nel seguente modo:
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=1
Crea 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 asimmetrica locale e archiviarla in un file, procedi nel seguente modo:
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 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}
Crea attestatore
Il passaggio successivo consiste nel creare l'attestatore stesso e associare una nota di analisi degli artefatti 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 per l'Artifact Analysis. Ogni attestato viene archiviato come istanza di questa nota.
Per creare l'attestatore:
Vai alla pagina Autorizzazione binaria per il progetto di 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 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 Elliptic Curve P256 - SHA Digest.
PKIX (Cloud KMS)
- Fai clic su Aggiungi una chiave PKIX.
- Fai clic su Importa da Cloud KMS.
Inserisci l'ID risorsa per la versione della chiave nella finestra visualizzata. 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 posizione della chiave (
global
è l'impostazione predefinita) - 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 comando seguente:
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 creata in precedenza, espandi la sezione Impostazioni avanzate.
Deseleziona Genera automaticamente una analisi degli artefatti nota.
Inserisci il nome completo nel campo ID nota analisi artefatti. Il formato del nome è
projects/PROJECT_ID/notes/NOTE_ID
.
Fai clic su Crea.
Verifica che l'attestatore sia stato creato
Per verificare che l'attestatore sia stato creato:
Torna alla pagina Autorizzazione binaria nella console Google Cloud.
Apri la scheda Attestatori.
Configurazione con più progetti
Se utilizzi una configurazione multiprogetto, in cui sono presenti progetti separato per deployer e attestatore, è necessario impostare autorizzazioni aggiuntive sulla risorsa attestatore per consentire al progetto deployer di utilizzare le attestazioni create da questo durante il deployment.
Aggiungi un'associazione dei ruoli IAM per il progetto deployer
Devi aggiungere un'associazione dei ruoli IAM per l'account di servizio del progetto deployer all'attestatore. Questo viene utilizzato da Autorizzazione binaria quando valuta un criterio per stabilire se l'account dispone delle autorizzazioni per accedere all'attestatore.
Devi aggiungere l'associazione dei ruoli IAM dalla riga di comando perché questo passaggio non è supportato nella console Google Cloud.
Per aggiungere l'associazione dei ruoli 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 degli account di servizio per i progetti:
DEPLOYER_SERVICE_ACCOUNT="service-${DEPLOYER_PROJECT_NUMBER}@gcp-sa-binaryauthorization.iam.gserviceaccount.com"
Aggiungi l'associazione dei ruoli 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
Aggiungi un'associazione dei ruoli IAM per l'utente che ha configurato Autorizzazione binaria
Devi aggiungere un'associazione dei ruoli IAM per l'utente che aggiunge un attestatore al criterio di autorizzazione binaria nel progetto di deployment, poiché l'utente deve avere l'autorizzazione per visualizzare l'attestatore da aggiungere. Se vuoi, questa autorizzazione può essere revocata in modo sicuro dopo l'aggiunta dell'attestatore.
Devi inoltre aggiungere l'associazione dei ruoli IAM dalla riga di comando perché questo passaggio non è supportato nella console Google Cloud.
Per aggiungere l'associazione dei ruoli 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 dei ruoli 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