Einfache Prüfung auf Attestierungsignatur

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

  1. 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.
  2. Installieren Sie die Google Cloud CLI.

  3. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  4. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  5. 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 Berechtigung resourcemanager.projects.create enthält. Weitere Informationen zum Zuweisen von Rollen
    • So erstellen Sie ein Google Cloud Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch 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_ID durch den Namen Ihres Projekts in Google Cloud .

  6. Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.

  7. 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 Rollen

    gcloud services enable binaryauthorization.googleapis.com cloudkms.googleapis.com container.googleapis.com
  8. Installieren Sie die Google Cloud CLI.

  9. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  10. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  11. 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 Berechtigung resourcemanager.projects.create enthält. Weitere Informationen zum Zuweisen von Rollen
    • So erstellen Sie ein Google Cloud Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch 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_ID durch den Namen Ihres Projekts in Google Cloud .

  12. Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.

  13. 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 Rollen

    gcloud services enable binaryauthorization.googleapis.com cloudkms.googleapis.com container.googleapis.com
  14. Prüfen Sie, ob die gcloud CLI auf die neueste Version aktualisiert ist.
  15. Installieren Sie das kubectl-Befehlszeilentool
  16. 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:

  1. Erteilen Sie dem Dienst-Agent für den Binärautorisierungsdienst des Clusterprojekts die Berechtigung, auf die Richtlinie im Richtlinienprojekt zuzugreifen.

    1. 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_ID durch die Projekt-ID des Clusters.

    2. 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_ID durch die ID des Projekts, das Ihre Richtlinie enthält.

  2. Gewähren Sie dem Dienst-Agent für die Binärautorisierung des Richtlinienprojekts Zugriff auf die Attestierungen in Ihrem Attestierungsprojekt:

    1. 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_ID durch die ID des Projekts, das Ihre Richtlinie enthält.

    2. 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_ID durch 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:

  1. 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_FILE
    

    Ersetzen 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üssel
    • KEY_FILE: ein lokaler Pfad zum Speichern Ihres Cloud KMS-Schlüssels
  2. Erstellen Sie den Schlüsselbund:

    gcloud kms keyrings create ${KMS_KEYRING_NAME} \
        --location=${KMS_KEY_LOCATION} \
        --project=${KMS_KEY_PROJECT_ID}
    
  3. 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}
    
  4. Exportieren Sie das Material des öffentlichen Schlüssels in eine Datei: