Auf dieser Seite erfahren Sie, wie Sie die einfache Prüfung auf Attestierungssignatur für die kontinuierliche Validierung (CV) der Binärautorisierung verwenden. Die Prüfung verifiziert die Attestierungen von Container-Images, die mit Pods verknüpft sind, die in einem GKE-Cluster (Google Kubernetes Engine) ausgeführt werden, in dem CV aktiviert ist.
Kosten
In diesem Leitfaden werden die folgenden Google Cloud -Dienste verwendet:
- Binärautorisierung, aber CV ist in der Vorschauphase kostenlos.
- GKE
- Cloud Key Management Service
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.
Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind
- Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
-
Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Weitere Informationen zum Zuweisen von Rollen
-
So erstellen Sie ein Google Cloud Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch einen Namen für das Google Cloud Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch den Namen Ihres Projekts in Google Cloud .
-
Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.
Aktivieren Sie die APIs für Binärautorisierung, Cloud Key Management Service und Google Kubernetes Engine:
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollengcloud services enable binaryauthorization.googleapis.com
cloudkms.googleapis.com container.googleapis.com -
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Erstellen Sie ein Google Cloud Projekt oder wählen Sie eines aus.
Rollen, die zum Auswählen oder Erstellen eines Projekts erforderlich sind
- Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
-
Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Projektersteller“ (
roles/resourcemanager.projectCreator), die die Berechtigungresourcemanager.projects.createenthält. Weitere Informationen zum Zuweisen von Rollen
-
So erstellen Sie ein Google Cloud Projekt:
gcloud projects create PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch einen Namen für das Google Cloud Projekt, das Sie erstellen. -
Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:
gcloud config set project PROJECT_ID
Ersetzen Sie
PROJECT_IDdurch den Namen Ihres Projekts in Google Cloud .
-
Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.
Aktivieren Sie die APIs für Binärautorisierung, Cloud Key Management Service und Google Kubernetes Engine:
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollengcloud services enable binaryauthorization.googleapis.com
cloudkms.googleapis.com container.googleapis.com - Prüfen Sie, ob die gcloud CLI auf die neueste Version aktualisiert ist.
- Installieren Sie das
kubectl-Befehlszeilentool - Wenn sich Ihre Richtlinien für die Binärautorisierung und GKE-Cluster in verschiedenen Projekten befinden, muss die Binärautorisierung in beiden Projekten aktiviert sein.
Erforderliche Rollen
In diesem Abschnitt erfahren Sie, wie Sie Rollen für diese Prüfung festlegen.
Übersicht
Wenn Sie alle in dieser Anleitung erwähnten Produkte im selben Projekt ausführen, müssen Sie keine Berechtigungen festlegen. Die Binärautorisierung konfiguriert die Rollen korrekt, wenn Sie sie aktivieren. Wenn Sie die Produkte in verschiedenen Projekten ausführen, müssen Sie Rollen festlegen, wie in diesem Abschnitt beschrieben.
Damit der Dienst-Agent für die Binärautorisierung in jedem Projekt die erforderlichen Berechtigungen zur Auswertung der einfachen CV-Prüfung auf Attestierungsignatur hat, bitten Sie Ihren Administrator, dem Dienst-Agent für die Binärautorisierung in jedem Projekt die folgenden IAM-Rollen zu gewähren:
-
Wenn sich Ihr Clusterprojekt vom Richtlinienprojekt unterscheidet:
Bewerter für Richtlinien für Binärautorisierungen (
roles/binaryauthorization.policyEvaluator) im Dienst-Agent für die Binärautorisierung für das Clusterprojekt, um auf das Richtlinienprojekt zuzugreifen -
Wenn sich Ihr Attestierungsprojekt von Ihrem Richtlinienprojekt unterscheidet:
Betrachter von Container Analysis-Vorkommen (
roles/containeranalysis.occurrences.viewer) für den Dienst-Agent für Binärautorisierungen des Richtlinienprojekts, damit er auf das Attestierungsprojekt zugreifen kann
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Ihr Administrator kann möglicherweise auch dem Dienst-Agent für die Binärautorisierung in jedem Projekt die erforderlichen Berechtigungen über benutzerdefinierte Rollen oder andere vordefinierte Rollen erteilen.
Rollen mit der gcloud CLI gewähren
Damit der Dienst-Agent für die Binärautorisierung in jedem Projekt die erforderlichen Berechtigungen zur Auswertung der CV-Prüfung auf Attestierungsignatur hat, müssen Sie ihm in jedem Projekt die folgenden IAM-Rollen zuweisen:
Erteilen Sie dem Dienst-Agent für den Binärautorisierungsdienst des Clusterprojekts die Berechtigung, auf die Richtlinie im Richtlinienprojekt zuzugreifen.
Rufen Sie den Dienst-Agent für die Binärautorisierung des Clusterprojekts ab:
PROJECT_NUMBER=$(gcloud projects list --filter="projectId:CLUSTER_PROJECT_ID" \ --format="value(PROJECT_NUMBER)") CLUSTER_SERVICE_ACCOUNT="service-$PROJECT_NUMBER@gcp-sa-binaryauthorization.iam.gserviceaccount.com"Ersetzen Sie
CLUSTER_PROJECT_IDdurch die Projekt-ID des Clusters.CV die Bewertung der Richtlinie im Cluster erlauben:
gcloud projects add-iam-policy-binding POLICY_PROJECT_ID \ --member="serviceAccount:$CLUSTER_SERVICE_ACCOUNT" \ --role='roles/binaryauthorization.policyEvaluator'Ersetzen Sie
POLICY_PROJECT_IDdurch die ID des Projekts, das Ihre Richtlinie enthält.
Gewähren Sie dem Dienst-Agent für die Binärautorisierung des Richtlinienprojekts Zugriff auf die Attestierungen in Ihrem Attestierungsprojekt:
Rufen Sie den Dienst-Agent für die Binärautorisierung des Richtlinienprojekts ab:
PROJECT_NUMBER=$(gcloud projects list \ --filter="projectId:POLICY_PROJECT_ID" \ --format="value(PROJECT_NUMBER)") SERVICE_ACCOUNT="service-$PROJECT_NUMBER@gcp-sa-binaryauthorization.iam.gserviceaccount.com"Ersetzen Sie
POLICY_PROJECT_IDdurch die ID des Projekts, das Ihre Richtlinie enthält.Weisen Sie die Rolle zu:
gcloud projects add-iam-policy-binding ATTESTATION_PROJECT_ID \ --member="serviceAccount:$SERVICE_ACCOUNT" \ --role='roles/containeranalysis.occurrences.viewer'Ersetzen Sie
ATTESTATION_PROJECT_IDdurch die ID des Projekts, das Ihre Attestierungen enthält.
Ein Schlüsselpaar erstellen
In diesem Abschnitt erstellen Sie ein asymmetrisches ECDSA-Schlüsselpaar (Elliptic Curve Digital Signature Algorithm).
Signieren Sie das Image mit dem privaten Schlüssel, um die Attestierung zu erstellen. Sie fügen den öffentlichen Schlüssel in eine Plattformrichtlinie ein. Wenn CV die Attestierung prüft, verwendet er den öffentlichen Schlüssel, um die Attestierung zu verifizieren.
Sie können entweder den Cloud Key Management Service oder lokale Schlüssel verwenden. Wir empfehlen jedoch, für die Produktion Cloud KMS-Schlüssel zu verwenden.
PKIX Cloud KMS
So erstellen Sie das Schlüsselpaar in Cloud KMS:
Richten Sie Umgebungsvariablen ein, die zum Erstellen des Schlüsselpaars erforderlich sind. Dazu empfehlen wir, die Platzhalter im folgenden Befehl auszufüllen und dann den Befehl auszuführen.
KMS_KEY_PROJECT_ID=KMS_KEY_PROJECT_ID KMS_KEYRING_NAME=KMS_KEYRING_NAME KMS_KEY_NAME=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 KEY_FILE=KEY_FILEErsetzen Sie Folgendes:
KMS_KEY_PROJECT_ID: Ihre Projekt-ID.KMS_KEYRING_NAME: ein Name für Ihren Cloud KMS-Schlüsselbund.KMS_KEY_NAME: ein Name für Ihren Cloud KMS-SchlüsselKEY_FILE: ein lokaler Pfad zum Speichern Ihres Cloud KMS-Schlüssels
Erstellen Sie den Schlüsselbund:
gcloud kms keyrings create ${KMS_KEYRING_NAME} \ --location=${KMS_KEY_LOCATION} \ --project=${KMS_KEY_PROJECT_ID}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} \ --project=${KMS_KEY_PROJECT_ID}Exportieren Sie das Material des öffentlichen Schlüssels in eine Datei: