Creare attestatori utilizzando gcloud CLI

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

In qualità di utente Cloud Build, puoi invece utilizzare l'built-by-cloud-build attestatore per eseguire il deployment solo delle immagini create da Cloud Build.

Un attestatore è una risorsa Google Cloud che Autorizzazione binaria utilizza per verificare un'attestazione. Per scoprire di più sulle attestazioni, consulta la Panoramica di Autorizzazione binaria.

Per creare un attestatore:

  • Crea una nota in Artifact Analysis per archiviare i metadati attendibili utilizzati nel processo di attestazione.
  • Configura una coppia di chiavi dell'infrastruttura a chiave pubblica (X.509) (PKIX) che può essere utilizzata 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 nota e la chiave pubblica che hai creato.

In una configurazione a progetto singolo, crei l'attestatore nello stesso progetto Google Cloud in cui configuri la policy di Autorizzazione binaria. Per un tutorial end-to-end su un singolo progetto che include questi passaggi, consulta Inizia a utilizzare Google Cloud CLI o Inizia a utilizzare la console Google Cloud .

In una configurazione con più progetti, ti consigliamo di avere progetti separati: un progetto di deployment, in cui è configurata la policy, un progetto di attestazione, in cui sono archiviati gli attestatori, e un progetto di attestazione per le attestazioni. Per un tutorial end-to-end su più progetti che include questi passaggi, consulta la sezione Configurazione di più progetti.

Prima di iniziare

Prima di creare gli attestatori:

  1. Attiva Autorizzazione binaria.

  2. Configura Autorizzazione binaria per la tua piattaforma.

Configurare l'ambiente del progetto

In questa sezione, configurerai le variabili di ambiente.

Configura le variabili di ambiente per archiviare i nomi e i numeri dei progetti. Se i progetti attestatore e deployer sono lo stesso progetto, utilizza lo stesso ID progetto per entrambe le variabili.

DEPLOYER_PROJECT_ID=DEPLOYER_PROJECT_ID=
DEPLOYER_PROJECT_NUMBER="$(
    gcloud projects describe "${DEPLOYER_PROJECT_ID}" \
      --format="value(projectNumber)"
)"

ATTESTOR_PROJECT_ID=ATTESTOR_PROJECT_ID
ATTESTOR_PROJECT_NUMBER="$(
    gcloud projects describe "${ATTESTOR_PROJECT_ID}" \
    --format="value(projectNumber)"
)"

Devi anche recuperare i nomi dei account di servizio per i progetti:

DEPLOYER_SERVICE_ACCOUNT="service-${DEPLOYER_PROJECT_NUMBER}@gcp-sa-binaryauthorization.iam.gserviceaccount.com"
ATTESTOR_SERVICE_ACCOUNT="service-${ATTESTOR_PROJECT_NUMBER}@gcp-sa-binaryauthorization.iam.gserviceaccount.com"

Creare una nota Artifact Analysis

Autorizzazione binaria utilizza Artifact Analysis per archiviare i metadati attendibili utilizzati nel processo di autorizzazione. Per ogni attestatore che crei, devi creare una nota di Artifact Analysis. Ogni attestazione viene memorizzata come un'occorrenza di questa nota.

Per creare la nota, segui questi passaggi:

  1. Configura le variabili di ambiente per archiviare l'ID nota e una descrizione leggibile:

    NOTE_ID=NOTE_ID
    NOTE_URI="projects/${ATTESTOR_PROJECT_ID}/notes/${NOTE_ID}"
    DESCRIPTION=DESCRIPTION
    

    Sostituisci quanto segue:

    • NOTE_ID: il nome interno della nota in caratteri alfanumerici senza spazi, ad esempio test-attestor-note
    • NOTE_URI: il percorso completo della risorsa nota
    • DESCRIPTION: un nome visualizzato leggibile per la nota, ad esempio Test Attestor Note
  2. Crea un file JSON che descriva la nota:

    cat > /tmp/note_payload.json << EOF
    {
      "name": "${NOTE_URI}",
      "attestation": {
        "hint": {
          "human_readable_name": "${DESCRIPTION}"
        }
      }
    }
    EOF
    
  3. Crea la nota inviando una richiesta HTTP all'API REST Artifact Analysis:

    curl -X POST \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
        -H "x-goog-user-project: ${ATTESTOR_PROJECT_ID}" \
        --data-binary @/tmp/note_payload.json  \
        "https://containeranalysis.googleapis.com/v1/projects/${ATTESTOR_PROJECT_ID}/notes/?noteId=${NOTE_ID}"
    

    Per verificare che la nota sia stata creata correttamente, esegui questo comando:

    curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
        -H "x-goog-user-project: ${ATTESTOR_PROJECT_ID}" \
        "https://containeranalysis.googleapis.com/v1/projects/${ATTESTOR_PROJECT_ID}/notes/"
    

Imposta le autorizzazioni IAM sulla nota

Devi concedere un ruolo Identity and Access Management (IAM) al account di servizio del progetto attestatore nella risorsa nota di Artifact Analysis. Per farlo, aggiungi il account di servizio del progetto attestatore al ruolo containeranalysis.notes.occurrences.viewer nella policy IAM della nota.

Per aggiungere il ruolo:

  1. Genera un file JSON contenente le informazioni necessarie per impostare il ruolo IAM nella nota:

    cat > /tmp/iam_request.json << EOM
    {
      "resource": "${NOTE_URI}",
      "policy": {
        "bindings": [
          {
            "role": "roles/containeranalysis.notes.occurrences.viewer",
            "members": [
              "serviceAccount:${ATTESTOR_SERVICE_ACCOUNT}"
            ]
          }
        ]
      }
    }
    EOM
    
  2. Aggiungi il account di servizio e i ruoli di accesso richiesti alla policy IAM per la nota che hai creato:

    curl -X POST  \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "x-goog-user-project: ${ATTESTOR_PROJECT_ID}" \
        --data-binary @/tmp/iam_request.json \
        "https://containeranalysis.googleapis.com/v1/projects/${ATTESTOR_PROJECT_ID}/notes/${NOTE_ID}:setIamPolicy"
    

Utilizzo di più progetti

Se memorizzi l'attestatore in un progetto e lo esegui il deployment in un progetto separato, devi concedere il ruolo roles/binaryauthorization.attestorsVerifier alaccount di serviziot associato al progetto di deployment sull'attestatore.

Configurare le chiavi crittografiche

L'autorizzazione binaria consente di utilizzare chiavi PKIX o chiavi di crittografia post-quantistica (PQC) per verificare le attestazioni. Devi configurare un solo tipo di chiave utilizzando uno dei seguenti metodi:

Creare chiavi di crittografia post-quantistica (PQC)

Per garantire la sicurezza a lungo termine e contrastare le minacce dei futuri computer quantistici, Autorizzazione binarian supporta le chiavi che utilizzano algoritmi di crittografia post-quantistica (PQC). Questi algoritmi sono standardizzati per resistere agli attacchi di computer classici e quantistici.

  • Algoritmi supportati: Autorizzazione binaria supporta gli algoritmi di firma PQC, come ML-DSA-65 (Dilithium3), per la creazione e la verifica delle attestazioni.
  • Gestione delle chiavi:ti consigliamo di gestire le chiavi PQC utilizzando Cloud Key Management Service. Cloud KMS fornisce archiviazione e gestione sicure per queste chiavi di crittografia.

Genera una coppia di chiavi PQC

Per creare la coppia di chiavi in Cloud KMS:

  1. Per configurare le variabili di ambiente necessarie per creare la coppia di chiavi, esegui questi comandi:

        KMS_KEY_PROJECT_ID=