Creare attestatori utilizzando la console Google Cloud

Questa pagina spiega come creare un attestatore personalizzato in Autorizzazione binaria utilizzando la console Google Cloud. In alternativa, puoi anche eseguire queste passaggi utilizzando Google Cloud CLI, o l'API REST. Questa attività fa parte della configurazione di Autorizzazione binaria.

Utenti di Cloud Build: puoi utilizzare invece 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, segui questi passaggi:

  1. Abilita Autorizzazione binaria.

  2. Configura Autorizzazione binaria per la tua piattaforma.

Panoramica

Un attestatore è una risorsa di Google Cloud 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 devi:

  • Imposta una coppia di chiavi PKIX che possa essere utilizzata per verificare l'identità del o l'attestatore. (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 il pubblico chiave che hai creato

In una configurazione per un singolo progetto, devi creare l'attestatore in devi configurare lo stesso progetto di Autorizzazione binaria. . In un più progetti, molto probabilmente avrai progetto deployer in cui è configurato il criterio e un server progetto attestatore in cui sono archiviati gli attestatori.

Configurazione delle chiavi di crittografia

Autorizzazione binaria consente di utilizzare le chiavi PKIX per verificare in modo sicuro l'identità degli attestatori. In questo modo viene garantito che solo le parti interessate possono autorizzare un'immagine container.

In questa guida, i suggerimenti Algoritmo di firma digitale con curva ellittica (ECDSA) per generare una coppia di chiavi PKIX. Puoi anche usare chiavi RSA o PGP per firma. Per saperne di più, consulta Scopi e algoritmi principali informazioni sugli algoritmi di firma.

Creare una coppia di chiavi PKIX

Autorizzazione binaria consente di usare criteri asimmetrici Coppie di chiavi PKIX per verificare l'identità o l'attestatore. La coppia di chiavi è composta da una chiave privata, l'attestatore utilizza una firma digitale delle attestazioni e una chiave pubblica, che aggiungi come archiviato dal servizio Autorizzazione binaria.

Una coppia di chiavi PKIX è composta da una chiave privata, che il firmatario utilizza per firmare digitalmente le attestazioni, e una chiave pubblica, che aggiungi all'attestatore. Al momento del deployment, Autorizzazione binaria utilizza questa chiave pubblica per verificare l'attestazione firmata chiave privata.

Le coppie di chiavi asimmetriche generate e archiviate in Cloud KMS è conforme al formato PKIX. Per creare chiave Cloud KMS da utilizzare con Autorizzazione binaria, consulta Creazione di chiavi asimmetriche. Accertati che scegli Segno asimmetrico come scopo della chiave quando crei la chiave.

PKIX (Cloud KMS)

Per creare la coppia di chiavi in Cloud KMS, segui questi passaggi:

  1. 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
    
  2. Crea il keyring.

    gcloud kms keyrings create ${KMS_KEYRING_NAME} \
      --location ${KMS_KEY_LOCATION}
    
  3. 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: le seguenti:

  1. Genera la chiave:

    PRIVATE_KEY_FILE="/tmp/ec_private.pem"
    openssl ecparam -genkey -name prime256v1 -noout -out ${PRIVATE_KEY_FILE}
    
  2. Poiché questo file contiene una chiave pubblica e una privata, devi estrarre la chiave pubblica in un file separato in modo da poterla aggiungere al attestatore:

    PUBLIC_KEY_FILE="/tmp/ec_public.pem"
    openssl ec -in ${PRIVATE_KEY_FILE} -pubout -out ${PUBLIC_KEY_FILE}
    

Crea l'attestatore

Il passaggio successivo è creare l'attestatore stesso e associare una Nota di Artifact Analysis e chiave pubblica.

Usi di Autorizzazione binaria Artifact Analysis per per archiviare i metadati attendibili utilizzati nel processo di autorizzazione. Per ogni attestatore devi creare un'analisi Artifact Analysis nota. Ciascuna attestazione viene archiviata come occorrenza di questo nota.

Per creare l'attestatore:

  1. Vai alla pagina Autorizzazione binaria per il progetto attestatore.

    Vai ad Autorizzazione binaria

  2. Nella scheda Attestatori, fai clic su Crea.

  3. Fai clic su Crea nuovo attestatore.

  4. In Nome attestatore, inserisci un nome per l'attestatore (ad esempio, build-secure o prod-qa).

  5. Per aggiungere la chiave pubblica all'attestatore:

    PKIX (chiave locale)

    1. Fai clic su Add a PKIX Key (Aggiungi una chiave PKIX).
    2. Fai clic su Importa da file.
    3. Individua e seleziona il file della chiave PKIX che hai salvato in precedenza. Nota:puoi anche incollare una chiave pubblica in formato PEM.
    4. Seleziona Algoritmo di firma. L'esempio chiave in questa guida viene generata con Algoritmo ellittica P256 - Digest SHA.

    PKIX (Cloud KMS)

    1. Fai clic su Add a PKIX Key (Aggiungi una chiave PKIX).
    2. Fai clic su Importa da Cloud KMS.
    3. Inserisci l'ID risorsa per la versione della chiave nella finestra che si apre. Il formato dell'ID risorsa è:

      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 le chiavi vengono memorizzate
      • 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 variabili di ambiente 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}
      
    4. Fai clic su Invia.

  6. Se vuoi utilizzare una nota esistente che precedentemente creato, espandi la sezione Impostazioni avanzate.

    1. Deseleziona Genera automaticamente un'analisi degli artefatti nota.

    2. Inserisci il nome completo nel ID nota Artifact Analysis. Il nome contiene formato projects/PROJECT_ID/notes/NOTE_ID.

  7. Fai clic su Crea.

Verificare che l'attestatore sia stato creato

Per verificare che l'attestatore sia stato creato:

  1. Torna alla pagina Autorizzazione binaria nella console Google Cloud.

  2. Apri la scheda Attestatori.

Configurazione con più progetti

Se utilizzi una configurazione multiprogetto, in cui hai un deployment e un deployment separati, progetti attestatori, è necessario impostare autorizzazioni aggiuntive per consentire al progetto di deployment di utilizzare le attestazioni create durante il deployment.

Aggiungi un'associazione del ruolo IAM per il progetto deployer

Devi aggiungere un'associazione del ruolo IAM per l'account di servizio del progetto deployer alla o l'attestatore. Viene utilizzato da Autorizzazione binaria quando valuta un criterio per determinare se l'account è autorizzato ad accedere l'attestatore.

Devi aggiungere l'associazione del ruolo IAM dalla riga di comando, poiché questo passaggio supportate nella console Google Cloud.

Per aggiungere l'associazione del ruolo IAM:

  1. 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)"
    )"
    
  2. Configura le variabili di ambiente per archiviare i nomi degli account di servizio per progetti:

    DEPLOYER_SERVICE_ACCOUNT="service-${DEPLOYER_PROJECT_NUMBER}@gcp-sa-binaryauthorization.iam.gserviceaccount.com"
    
  3. Aggiungi l'associazione del 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
    

Aggiungi un'associazione del ruolo IAM per l'utente che configura Autorizzazione binaria

Devi aggiungere un'associazione del ruolo IAM per l'utente che aggiunge un attestatore al Criterio di Autorizzazione binaria nel progetto deployer, in quanto l'utente deve disporre per visualizzare l'attestatore da aggiungere. Se vuoi, questa autorizzazione può dopo l'aggiunta dell'attestatore.

Devi anche aggiungere l'associazione del ruolo IAM dalla riga di comando, poiché questo passaggio non supportate nella console Google Cloud.

Per aggiungere l'associazione del 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 del 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