Creare attestatori utilizzando l'API REST

Questa pagina spiega come creare un attestatore personalizzato in Autorizzazione binaria utilizzando l'API REST.

In alternativa, puoi eseguire questi passaggi utilizzando il Google Cloud CLI o la Google Cloud console. Questa attività fa parte della configurazione di Autorizzazione binaria.

Utenti di Cloud Build: potete invece utilizzare l'attestatore built-by-cloud-build per eseguire il deployment solo delle immagini create da Cloud Build.

Panoramica

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

Per creare un attestatore, devi:

  • 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.) Puoi anche utilizzare coppie di chiavi PGP anziché chiavi PKIX.
  • Crea l'attestatore stesso 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 in cui configuri il criterio di Autorizzazione binaria . Google Cloud In una configurazione multi-progetto, molto probabilmente hai un progetto di deployment in cui è configurato il criterio e un progetto attestatore separato in cui sono archiviati gli attestatori.

Prima di iniziare

  1. Attiva Autorizzazione binaria.

  2. Configura Autorizzazione binaria per la tua piattaforma.

Imposta il progetto predefinito

Imposta il progetto predefinito Google Cloud se non l'hai già fatto:

PROJECT_ID=PROJECT_ID
gcloud config set project ${PROJECT_ID}

Configura l'ambiente

Imposta 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)"
)"
ATTESTOR_PROJECT_ID=${PROJECT_ID}
ATTESTOR_PROJECT_NUMBER="$(
    gcloud projects describe "${ATTESTOR_PROJECT_ID}" \
    --format="value(projectNumber)"
)"

Se il progetto attestatore e il progetto di deployment sono lo stesso progetto, utilizza lo stesso ID progetto per entrambe le variabili.

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"

Crea una nota di 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 note. Ogni attestazione viene archiviata come occorrenza di questa nota.

Per creare una nota di Artifact Analysis:

  1. Imposta le variabili di ambiente per archiviare l'ID della 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. In un editor di testo, crea un file JSON in /tmp/note_payload.json che descriva la nota di Artifact Analysis:

    cat > /tmp/note_payload.json << EOM
    {
      "name": "${NOTE_URI}",
      "attestation": {
        "hint": {
          "human_readable_name": "${DESCRIPTION}"
        }
      }
    }
    EOM
    
  3. Crea la nota inviando una richiesta HTTP all'API REST di 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 per la nota

Devi anche impostare le autorizzazioni per la nota di Artifact Analysis che hai creato in modo che sia accessibile all'account di servizio del progetto attestatore. Per farlo, aggiorna il criterio IAM per la nota in modo da assegnare il ruolo containeranalysis.notes.occurrences.viewer all'account.

Per impostare le autorizzazioni:

  1. Genera un file JSON che contenga le informazioni necessarie per impostare il criterio IAM per la 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 al criterio 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"
    

Configura le chiavi di crittografia

Autorizzazione binaria ti consente di utilizzare le chiavi PKIX per verificare in modo sicuro l'identità del firmatario che ha creato un' attestazione. In questo modo, solo le parti verificate possono autorizzare un'immagine container. In alternativa a PKIX, puoi anche utilizzare le chiavi PGP.

Crea una coppia di chiavi PKIX

Autorizzazione binaria ti consente di utilizzare coppie di chiavi PKIX asimmetriche per verificare un' attestazione. La coppia di chiavi è costituita da una chiave privata, che il firmatario utilizza per firmare digitalmente le attestazioni, e da una chiave pubblica, che aggiungi all'attestatore. In un secondo momento, l'applicazione di Autorizzazione binaria utilizza la chiave pubblica nell'attestatore per verificare che l'attestazione sia stata creata dal firmatario.

In questa guida, per generare una coppia di chiavi PKIX viene utilizzato l'algoritmo di firma digitale con curva ellittica (ECDSA) consigliato . Puoi anche utilizzare chiavi RSA o PGP per la firma. Per ulteriori informazioni sugli algoritmi di firma, consulta