Auf dieser Seite wird erläutert, wie Sie mit der Google Cloud Console einen benutzerdefinierten Attestierer in der Binärautorisierung erstellen. Alternativ können Sie diese Schritte auch mit der Google Cloud CLI oder der REST API ausführen. Diese Aufgabe ist Teil der Einrichtung der Binärautorisierung.
Cloud Build-Nutzer: Sie können stattdessen den Attestierer built-by-cloud-build
verwenden, um nur von Cloud Build erstellte Images bereitzustellen.
Hinweise
Führen Sie vor dem Erstellen von Attestierern die folgenden Schritte aus:
Übersicht
Ein Attestierer ist eine Google Cloud-Ressource, mit der die Binärautorisierung eine Attestierung prüft. Weitere Informationen zur Binärautorisierung finden Sie unter Überblick über die Binärautorisierung.
So erstellen Sie einen Attestierer:
- Richten Sie ein PKIX-Schlüsselpaar 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 ordnen Sie den von Ihnen erstellten öffentlichen Schlüssel zu.
In einer Einzelprojekteinrichtung erstellen Sie den Attestierer im selben Projekt, in dem Sie die Richtlinie für die Binärautorisierung konfigurieren. Bei einer Einrichtung mit mehreren Projekten haben Sie höchstwahrscheinlich ein Bereitstellerprojekt, in dem Ihre Richtlinie konfiguriert ist, sowie ein separates Attestiererprojekt, in dem Ihre Attestierer gespeichert sind.
Kryptografische Schlüssel einrichten
Mit der Binärautorisierung können Sie mithilfe von PKIX die Identität von Attestierern sicher prüfen. Dies gewährleistet, dass nur bestätigte Nutzer ein Container-Image autorisieren können.
In diesem Leitfaden wird der empfohlene Elliptic Curve Digital Signing Algorithm (ECDSA) verwendet, um ein PKIX-Schlüsselpaar zu erstellen. Sie können zum Signieren auch RSA- oder PGP-Schlüssel verwenden. Weitere Informationen zu Signieralgorithmen finden Sie unter Schlüsselzwecke und Algorithmen.
PKIX-Schlüsselpaar erstellen
Mit der Binärautorisierung können Sie mithilfe von asymmetrischen PKIX-Schlüsselpaaren die Identität eines Attestierers prüfen. Das Schlüsselpaar besteht aus einem privaten Schlüssel, mit dem der Attestierer Attestierungen digital signiert, und einem öffentlichen Schlüssel, den Sie dem Attestierer hinzufügen, wie er vom Binärautorisierungsdienst gespeichert wurde.
Ein PKIX-Schlüsselpaar besteht aus einem privaten Schlüssel, mit dem der Signer Attestierungen digital signiert, und einem öffentlichen Schlüssel, den Sie dem Attestierer hinzufügen. Beim Deployment verwendet die Binärautorisierung diesen öffentlichen Schlüssel, um die vom privaten Schlüssel signierte Attestierung zu prüfen.
Die in Cloud KMS erstellten und gespeicherten asymmetrischen Schlüsselpaare sind mit dem PKIX-Format konform. Informationen zum Erstellen eines Cloud KMS-Schlüssels für die Binärautorisierung finden Sie unter Asymmetrische Schlüssel erstellen. Achten Sie darauf, dass beim Erstellen des Schlüssels als Schlüsselzweck Asymmetrisches Signieren ausgewählt wird.
PKIX (Cloud KMS)
So erstellen Sie das Schlüsselpaar in Cloud KMS:
Richten Sie Umgebungsvariablen ein, die zum Erstellen des Schlüsselpaars erforderlich sind.
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
Schlüsselbund erstellen.
gcloud kms keyrings create ${KMS_KEYRING_NAME} \ --location ${KMS_KEY_LOCATION}
Erstellen Sie den Schlüssel:
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 (lokaler Schlüssel)
So erstellen Sie ein neues lokales asymmetrisches PKIX-Schlüsselpaar und speichern es in einer Datei:
Erstellen Sie den Domainschlüssel:
PRIVATE_KEY_FILE="/tmp/ec_private.pem" openssl ecparam -genkey -name prime256v1 -noout -out ${PRIVATE_KEY_FILE}
Da diese Datei einen öffentlichen und einen privaten Schlüssel enthält, müssen Sie den öffentlichen Schlüssel in eine eigene Datei extrahieren, damit Sie ihn dem Attestierer hinzufügen können:
PUBLIC_KEY_FILE="/tmp/ec_public.pem" openssl ec -in ${PRIVATE_KEY_FILE} -pubout -out ${PUBLIC_KEY_FILE}
Attestierer erstellen
Im nächsten Schritt erstellen Sie den Attestierer und verknüpfen einen Artefaktanalyse-Hinweis mit einem öffentlichen Schlüssel.
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 Attestierer:
Rufen Sie die Seite "Binärautorisierung" für das Attestiererprojekt auf.
Klicken Sie im Tab Attestierer auf Erstellen.
Klicken Sie auf Create New Attestor.
Geben Sie unter Name des Attestierers einen Namen für den Attestierer ein, z. B. build-secure oder prod-qa.
So fügen Sie dem Attestierer den öffentlichen Schlüssel hinzu:
PKIX (lokaler Schlüssel)
- Klicken Sie auf Add a PKIX Key.
- Klicken Sie auf Aus Datei importieren.
- Wechseln Sie zur zuvor gespeicherten PKIX-Schlüsseldatei und wählen Sie sie aus. Hinweis: Sie können auch einen öffentlichen Schlüssel im PEM-Format einfügen.
- Wählen Sie den Signature-Algorithmus aus. Der Beispielschlüssel in diesem Leitfaden wird mit dem Algorithmus Elliptic Curve P256 – SHA Digest generiert.
PKIX (Cloud KMS)
- Klicken Sie auf Add a PKIX Key.
- Klicken Sie auf Von Cloud KMS importieren.
Geben Sie im geöffneten Fenster die Ressourcen-ID für die Schlüsselversion ein. Die Ressourcen-ID hat folgendes Format:
projects/KMS_KEY_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/KMS_KEYRING_NAME/cryptoKeys/KMS_KEY_NAME/cryptoKeyVersions/KMS_KEY_VERSION
Dabei gilt:
- KMS_KEY_PROJECT_ID ist die ID des Projekts, in dem die Schlüssel gespeichert sind.
- KMS_KEY_LOCATION ist der Speicherort des Schlüssels (
global
ist die Standardeinstellung). - KMS_KEYRING_NAME ist der Name des Schlüsselbunds.
- KMS_KEY_NAME ist der Name des Schlüssels.
- KMS_KEY_VERSION ist die Schlüsselversion.
Wenn Sie ein Cloud KMS-Schlüsselpaar mit den Umgebungsvariablen auf dieser Seite erstellt haben, können Sie die Ressourcen-ID mit dem folgenden Befehl aufrufen:
echo projects/${KMS_KEY_PROJECT_ID}/locations/${KMS_KEY_LOCATION}/keyRings/${KMS_KEYRING_NAME}/cryptoKeys/${KMS_KEY_NAME}/cryptoKeyVersions/${KMS_KEY_VERSION}
Klicken Sie auf Senden.
Wenn Sie einen vorhandenen Hinweis verwenden möchten, den Sie zuvor erstellt haben, maximieren Sie den Abschnitt Erweiterte Einstellungen.
Deaktivieren Sie das Kästchen Artefaktanalyse-Hinweis automatisch generieren.
Geben Sie den voll qualifizierten Namen in das Feld Artefaktanalyse-Hinweis-ID ein. Der Name hat das Format
projects/PROJECT_ID/notes/NOTE_ID
.
Klicken Sie auf Erstellen.
Erstellung des Attestierers prüfen
So prüfen Sie, ob der Attestierer erstellt wurde:
Kehren Sie in der Google Cloud Console zur Seite der Binärautorisierung zurück.
Öffnen Sie den Tab Attestierer.
Mehrere Projekte einrichten
Bei einer Einrichtung mit mehreren Projekten und einem eigenen Bereitsteller- und Attestiererprojekt, sind zusätzliche Berechtigungen erforderlich. Diese müssen für die Attestiererressource festgelegt werden, damit das Bereitstellerprojekt die während dem Deployment erstellten Attestierungen verwenden kann.
IAM-Rollenbindung für das Deployment-Projekt hinzufügen
Sie müssen dem Attestierer eine IAM-Rollenbindung für das Dienstkonto des Bereitstellerprojekts hinzufügen. Dieses Konto wird von der Binärautorisierung verwendet, wenn es eine Richtlinie auswertet, um festzustellen, ob das Konto Berechtigungen zum Zugriff auf den Attestierer hat.
Fügen Sie die IAM-Rollenbindung über die Befehlszeile hinzu, da dieser Schritt in der Google Cloud Console nicht unterstützt wird.
So fügen Sie die IAM-Rollenbindung hinzu:
Richten Sie Umgebungsvariablen zum Speichern Ihrer Projektnamen und -nummern ein:
DEPLOYER_PROJECT_ID=PROJECT_ID DEPLOYER_PROJECT_NUMBER="$( gcloud projects describe "${DEPLOYER_PROJECT_ID}" \ --format="value(projectNumber)" )"
Richten Sie Umgebungsvariablen zum Speichern der Dienstkontonamen für die Projekte ein:
DEPLOYER_SERVICE_ACCOUNT="service-${DEPLOYER_PROJECT_NUMBER}@gcp-sa-binaryauthorization.iam.gserviceaccount.com"
Fügen Sie die IAM-Rollenbindung hinzu:
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
IAM-Rollenbindung für den Nutzer hinzufügen, der die Binärautorisierung einrichtet
Sie müssen eine IAM-Rollenbindung für den Nutzer hinzufügen, der der Richtlinie für Binärautorisierungen im Bereitstellerprojekt einen Attestierer hinzufügt. Der Nutzer benötigt die Berechtigung zum Aufrufen des Attestierers, der hinzugefügt werden soll. Bei Bedarf kann diese Berechtigung sicher widerrufen werden, nachdem der Attestierer hinzugefügt wurde.
Fügen Sie die IAM-Rollenbindung über die Befehlszeile hinzu, da dieser Schritt in der Google Cloud Console nicht unterstützt wird.
So fügen Sie die IAM-Rollenbindung hinzu:
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
So entfernen Sie die IAM-Rollenbindung, nachdem der Attestierer hinzugefügt wurde:
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
Nächste Schritte
- Attestierungen für Ihren Attestierer erstellen
- Aktualisieren Sie Ihre Richtlinie für die Binärautorisierung so, dass Attestierungen über die Google Cloud Console, das Google Cloud CLI und die REST API erforderlich sind.