Attestierer mit der gcloud CLI erstellen

Auf dieser Seite wird erläutert, wie Sie mit der Google Cloud CLI einen Attestierer in der Binärautorisierung erstellen. Alternativ können Sie diese Schritte mit der Google Cloud -Konsole oder der REST API ausführen. Diese Aufgabe ist Teil der Einrichtung der Binärautorisierung.

Als Cloud Build-Nutzer können Sie stattdessen den Attestierer built-by-cloud-build verwenden, um nur von Cloud Build erstellte Images bereitzustellen.

Ein Attestierer ist eineGoogle Cloud -Ressource, mit der die Binärautorisierung eine Attestierung prüft. Weitere Informationen zu Attestierungen finden Sie in der Übersicht über die Binärautorisierung.

So erstellen Sie einen Attestierer:

  • Erstellen Sie einen Hinweis in Artefaktanalyse, um darin vertrauenswürdige Metadaten zu speichern, die für den Attestierungsvorgang verwendet werden.
  • Richten Sie ein PKIX-Schlüsselpaar (Public-Key Infrastructure, X.509) ein, mit dem die Identität des Attestierers geprüft werden kann. Asymmetrische Schlüsselpaare, die vom Cloud Key Management Service (Cloud KMS) generiert werden, haben ein PKIX-kompatibles Format.
  • Erstellen Sie den Attestierer in der Binärautorisierung und verknüpfen Sie den Hinweis mit dem öffentlichen Schlüssel, den Sie erstellt haben.

In einer Einzelprojekteinrichtung erstellen Sie den Attestierer im selben Google Cloud-Projekt, in dem Sie die Richtlinie für die Binärautorisierung konfigurieren. Eine End-to-End-Anleitung für ein einzelnes Projekt, die diese Schritte enthält, finden Sie unter Erste Schritte mit der Google Cloud CLI oder Erste Schritte mit der Google Cloud -Konsole.

Bei einer Einrichtung mit mehreren Projekten empfehlen wir, separate Projekte zu haben: ein Bereitstellerprojekt, in dem Ihre Richtlinie konfiguriert ist; ein Attestiererprojekt, in dem Ihre Attestierer gespeichert sind, und ein Attestierungsprojekt für Attestierungen. Eine End-to-End-Anleitung für mehrere Projekte, die diese Schritte enthält, finden Sie unter Mehrere Projekte einrichten.

Hinweise

Führen Sie vor dem Erstellen von Attestierern die folgenden Schritte aus:

  1. Binärautorisierung aktivieren.

  2. Binärautorisierung für die Plattform einrichten.

Projektumgebung einrichten

In diesem Abschnitt richten Sie Umgebungsvariablen ein.

Richten Sie Umgebungsvariablen zum Speichern Ihrer Projektnamen und -nummern ein: Wenn Ihr Attestiererprojekt mit Ihrem Bereitstellerprojekt identisch ist, verwenden Sie für beide Variablen dieselbe Projekt-ID.

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)"
)"

Außerdem müssen Sie die Dienstkontonamen für die Projekte abrufen:

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"

Artefaktanalyse-Hinweis erstellen

Die Binärautorisierung verwendet Artefaktanalyse, um vertrauenswürdige Metadaten zu speichern, die für den Autorisierungsvorgang verwendet werden. Für jeden von Ihnen erstellten Attestierer muss ein Artefaktanalyse-Hinweis angelegt werden. Jede Attestierung wird als Vorkommen dieses Hinweises gespeichert.

So erstellen Sie den Hinweis:

  1. Richten Sie Umgebungsvariablen zum Speichern der Hinweis-ID und einer für Menschen lesbare Beschreibung ein:

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

    Ersetzen Sie Folgendes:

    • NOTE_ID ist der interne Name des Hinweises in alphanumerischen Zeichen ohne Leerzeichen (z. B. test-attestor-note).
    • NOTE_URI ist der voll qualifizierte Pfad zur Hinweisressource.
    • DESCRIPTION: ein für Menschen lesbarer Anzeigename für den Hinweis, z. B. Test Attestor Note
  2. Erstellen Sie eine JSON-Datei, in der der Hinweis beschrieben wird:

    cat > /tmp/note_payload.json << EOF
    {
      "name": "${NOTE_URI}",
      "attestation": {
        "hint": {
          "human_readable_name": "${DESCRIPTION}"
        }
      }
    }
    EOF
    
  3. Erstellen Sie den Hinweis durch Senden einer HTTP-Anfrage an die Artifact Analysis REST API:

    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}"
    

    Um zu prüfen, ob der Hinweis erstellt wurde, führen Sie folgenden Befehl aus: