Backend-mTLS mit verwalteter Arbeitslastidentität einrichten

In diesem Dokument wird beschrieben, wie Sie eine verwaltete Arbeitslastidentität für den Backend-Dienst eines Load Balancers konfigurieren. Nachdem Sie eine verwaltete Identität zugewiesen haben, können sich der Load Balancer und seine Back-Ends gegenseitig über Backend-mTLS authentifizieren.

So konfigurieren Sie das Backend-mTLS mit einer verwalteten Arbeitslastidentität:

  1. Konfigurieren Sie einen CA-Pool (Certificate Authority Service) zum Ausstellen von X.509-Zertifikaten für verwaltete Arbeitslastidentitäten.
  2. Konfigurieren Sie eine vertrauenswürdige Domain, indem Sie einen Workload Identity-Pool mit einem Namespace, einer verwalteten Identität, einer Attestrichtlinie, einer Inline-Ressource für die Zertifikatausstellung und einer Inline-Ressource für die Vertrauenskonfiguration erstellen.1
  3. Binden Sie die CA mit der Inline-Konfiguration für die Zertifikatausstellung an den Workload Identity-Pool.
  4. Verwaltete Arbeitslastidentitäten autorisieren, um Zertifikate vom CA-Pool anzufordern.
  5. Erstellen Sie den Load-Balancer und hängen Sie die verwaltete Identität an den zugehörigen Back-End-Dienst an.

1 Sie müssen eine Inline-Vertrauenskonfiguration erstellen, nur wenn sich der Load Balancer und seine Back-Ends in verschiedenen Vertrauensbereichen befinden. In diesem Beispiel gehören sowohl der Load Balancer als auch die Backends zur selben Vertrauensdomäne. Daher ist die Konfiguration der Inline-Vertrauenskonfigurationsressource optional.

Informationen zum Erstellen einer verwalteten Identität für die Back-Ends finden Sie unter Übersicht über verwaltete Arbeitslastidentitäten.

Hinweis

  1. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  2. Lesen Sie das Dokument Backend-mTLS mit verwalteten Arbeitslastidentitäten – Übersicht.

  3. Weitere Informationen zur Zertifikatsausstellung mit dem Certificate Authority Service

  4. Enable the IAM, Certificate Authority Service, Compute Engine, Certificate Manager, and Network Security APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable iam.googleapis.com privateca.googleapis.com compute.googleapis.com certificatemanager.googleapis.com  networksecurity.googleapis.com

  5. Konfigurieren Sie die Google Cloud CLI so, dass das Projekt verwendet wird, das für Abrechnung und Kontingente auf die Zulassungsliste gesetzt wurde.

    gcloud config set billing/quota_project PROJECT_ID
    

    Ersetzen Sie PROJECT_ID durch die ID des Projekts, das der Zulassungsliste für die Vorschau der verwalteten Arbeitslastidentität hinzugefügt wurde.

  6. Erstellen Sie eine verwaltete Identität für das Backend. Weitere Informationen finden Sie unter Übersicht über Managed Workload Identity.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen verwalteter Arbeitslastidentitäten und zum Bereitstellen verwalteter Zertifikate für Arbeitslastidentitäten benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

CA Service so konfigurieren, dass Zertifikate für verwaltete Arbeitslastidentitäten ausgestellt werden

Sie können CA-Pools verwenden, um eine Stamm-CA einzurichten. Der CA-Pool stellt die X.509-Zertifikate für verwaltete Arbeitslastidentitäten aus.

Stamm-CA-Pool erstellen

Erstellen Sie den Stamm-CA-Pool im Enterprise-Tarif mit dem gcloud privateca pools create-Befehl. Diese Ebene ist für die langlebige Ausgabe von Zertifikaten mit geringem Volumen vorgesehen.

gcloud privateca pools create ROOT_CA_POOL_ID \
    --location=REGION \
    --project=PROJECT_ID \
    --tier=enterprise

Ersetzen Sie Folgendes:

  • ROOT_CA_POOL_ID: eine eindeutige ID für den Stammzertifizierungsstellen-Pool

  • REGION: die Region, in der sich der Stamm-CA-Pool befindet

  • PROJECT_ID: die Projekt-ID

Weitere Informationen zu CA-Pools finden Sie unter CA-Pool erstellen.

Stamm-CA erstellen

Erstellen Sie mit dem Befehl gcloud privateca roots create eine Stamm-CA im Stamm-CA-Pool.

Führen Sie den folgenden Befehl aus, um eine Stamm-CA zu erstellen:

gcloud privateca roots create ROOT_CA_ID \
    --pool=ROOT_CA_POOL_ID \
    --subject="CN=ROOT_CA_CN, O=ROOT_CA_ORGANIZATION" \
    [--key-algorithm="KEY_ALGORITHM"] \
    --max-chain-length=1 \
    --location=REGION \
    --project=PROJECT_ID \
    --auto-enable

Ersetzen Sie Folgendes:

  • ROOT_CA_ID: Ein eindeutiger Name für die Stammzertifizierungsstelle. Der Name der Zertifizierungsstelle darf bis zu 64 Zeichen lang sein und darf nur alphanumerische Zeichen in Groß- und Kleinschreibung, Unterstriche oder Bindestriche enthalten. Der CA-Name muss innerhalb der Region eindeutig sein.
  • ROOT_CA_POOL_ID: die ID des Stammzertifizierungsstellen-Pools.
  • ROOT_CA_CN: der Name der Stammzertifizierungsstelle
  • ROOT_CA_ORGANIZATION: die Organisation der Stamm-CA.
  • KEY_ALGORITHM: Der Algorithmus, der zum Erstellen eines Cloud KMS-Schlüssels verwendet werden soll. Dieses Flag ist optional. Wenn Sie dieses Flag nicht angeben, wird standardmäßig der Schlüsselalgorithmus rsa-pkcs1-4096-sha256 verwendet.
  • REGION: die Region, in der sich der Stamm-CA-Pool befindet.
  • PROJECT_ID: Projekt-ID.

Weitere Informationen zu Root-CAs finden Sie unter Root-CA erstellen.

Verwaltete Arbeitslastidentitäten erstellen

Wenn Sie verwaltete Arbeitslastidentitäten verwenden,kann Google Cloud automatisch X.509-Zertifikate aus dem Certificate Authority Service bereitstellen und verwalten. Workload-Identitäten werden in einem Workload Identity-Pool definiert und in administrativen Grenzen, sogenannten Namespaces, organisiert.

Erstellen Sie einen Workload Identity-Pool.

Sie müssen einen Pool im Modus TRUST_DOMAIN erstellen, um verwaltete Arbeitslastidentitäten zu erstellen. Verwenden Sie den Befehl gcloud iam workload-identity-pools create, um einen Workload Identity-Pool für verwaltete Workload-Identitäten zu erstellen.

gcloud iam workload-identity-pools create WORKLOAD_IDENTITY_POOL_ID \
    --location="global" \
    --mode="TRUST_DOMAIN"

Ersetzen Sie WORKLOAD_IDENTITY_POOL_ID durch die eindeutige ID für den Pool. Die ID muss zwischen 4 und 32 Zeichen lang sein, nur kleingeschriebene alphanumerische Zeichen und Bindestriche enthalten und mit einem alphanumerischen Zeichen beginnen und enden. Nachdem Sie einen Workload Identity-Pool erstellt haben, können Sie seine ID nicht mehr ändern.

Verwenden Sie den Befehl gcloud iam workload-identity-pools describe, um zu prüfen, ob Ihr Workload Identity-Pool im Modus TRUST_DOMAIN erstellt wurde.

gcloud iam workload-identity-pools describe WORKLOAD_IDENTITY_POOL_ID \
    --location="global"

Die Ausgabe sieht etwa so aus:

mode: TRUST_DOMAIN
name: projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID
state: ACTIVE

Diese Ausgabe enthält die folgenden Werte:

  • PROJECT_NUMBER: Die Projektnummer IhresGoogle Cloud -Projekts
  • WORKLOAD_IDENTITY_POOL_ID: die ID des Workload Identity-Pools

Namespace erstellen

Mit dem Befehl gcloud iam workload-identity-pools namespaces create können Sie einen Namespace in einem Workload Identity-Pool erstellen.

gcloud iam workload-identity-pools namespaces create NAMESPACE_ID \
    --workload-identity-pool="WORKLOAD_IDENTITY_POOL_ID" \
    --location="global"

Ersetzen Sie Folgendes:

  • NAMESPACE_ID: die eindeutige ID des Namespace. Die ID muss zwischen 2 und 63 Zeichen lang sein, nur kleingeschriebene alphanumerische Zeichen und Bindestriche enthalten und mit einem alphanumerischen Zeichen beginnen und enden. Nachdem Sie einen Namespace erstellt haben, können Sie seine ID nicht mehr ändern.
  • WORKLOAD_IDENTITY_POOL_ID: die ID des Workload Identity-Pools, die Sie zuvor erstellt haben.

Verwaltete Arbeitslastidentität erstellen

Mit dem Befehl gloud iam workload-identity-pools managed-identities create können Sie eine verwaltete Arbeitslastidentität in einem Namespace des Workload Identity-Pools erstellen.

gcloud iam workload-identity-pools managed-identities create MANAGED_IDENTITY_ID \
    --namespace="NAMESPACE_ID" \
    --workload-identity-pool="WORKLOAD_IDENTITY_POOL_ID" \
    --location="global"

Ersetzen Sie Folgendes:

  • MANAGED_IDENTITY_ID: die eindeutige ID für die verwaltete Identität. Die ID muss zwischen 2 und 63 Zeichen lang sein, nur kleingeschriebene alphanumerische Zeichen und Bindestriche enthalten und mit einem alphanumerischen Zeichen beginnen und enden. Nachdem Sie eine verwaltete Arbeitslastidentität erstellt haben, können Sie ihre ID nicht mehr ändern.
  • NAMESPACE_ID: die Namespace-ID, die Sie zuvor erstellt haben.
  • WORKLOAD_IDENTITY_POOL_ID: die ID des Workload Identity-Pools, die Sie zuvor erstellt haben.

Die ID Ihrer verwalteten Arbeitslastidentität ist die SPIFFE-Kennung, die so formatiert ist:

spiffe://WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID

Attestierungsrichtlinie erstellen

In diesem Beispiel enthält eine Attestierungsrichtlinie eine Attestierungsregel, mit der geprüft wird, ob der Backend-Dienst Teil eines bestimmten Projekts ist. Wenn die Überprüfung der Attestierungsrichtlinie erfolgreich ist, fordert IAM ein X.509-Zertifikat für die verwaltete Identität vom Certificate Authority Service an.

Führen Sie den folgenden Befehl aus, um eine Attestierungsrichtlinie zu erstellen und eine Attestierungsregel hinzuzufügen.

gcloud iam workload-identity-pools managed-identities add-attestation-rule MANAGED_IDENTITY_ID \
    --namespace=NAMESPACE_ID \
    --workload-identity-pool=WORKLOAD_IDENTITY_POOL_ID \
    --google-cloud-resource='//compute.googleapis.com/projects/PROJECT_NUMBER/type/BackendService/*' \
    --location=global

Ersetzen Sie Folgendes:

  • MANAGED_IDENTITY_ID: Die eindeutige ID für die verwaltete Identität. Die ID muss zwischen 2 und 63 Zeichen lang sein, nur kleingeschriebene alphanumerische Zeichen und Bindestriche enthalten und mit einem alphanumerischen Zeichen beginnen und enden. Nachdem Sie eine verwaltete Arbeitslastidentität erstellt haben, können Sie ihre ID nicht mehr ändern.
  • NAMESPACE_ID: Die Namespace-ID, die Sie zuvor erstellt haben.
  • WORKLOAD_IDENTITY_POOL_ID: die ID des Workload Identity-Pools, die Sie zuvor erstellt haben.
  • PROJECT_NUMBER: die Projektnummer des Google Cloud -Projekts.

Inline-Konfiguration der Zertifikatsausstellung erstellen

Damit eine Zertifizierungsstelle an einen Workload Identity-Pool gebunden werden kann, muss der Workload Identity-Pool eine Inline-Konfiguration für die Zertifikatausstellung haben.

Wenn Sie eine Inline-Konfiguration für die Zertifikatausstellung konfigurieren möchten, erstellen Sie eine Konfigurationsdatei (cic.json) im JSON-Format. Das Format der Datei ähnelt dem folgenden:

{
  "inlineCertificateIssuanceConfig": {
      "caPools": {
        "REGION": "projects/PROJECT_NUMBER/locations/REGION/caPools/ROOT_CA_POOL_ID",
      },
      ["lifetime": "CERTIFICATE_LIFETIME"],
      ["rotationWindowPercentage": ROTATION_WINDOW_PERCENTAGE],
      ["keyAlgorithm": "ALGORITHM"]
  }
}

Ersetzen Sie Folgendes:

  • REGION: die Region, in der sich die Zertifizierungsstelle befindet.

  • PROJECT_NUMBER: die Projektnummer Führen Sie den folgenden Befehl aus, um die Projektnummer des Projekts abzurufen, das durch die Variable PROJECT_ID angegeben wird:

    gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    
  • ROOT_CA_POOL_ID: die ID des Stammzertifizierungsstellen-Pools.

  • CERTIFICATE_LIFETIME: Die Lebensdauer der vom CA-Pool ausgestellten Arbeitslastzertifikate in Sekunden, z. B. 86400 s (für 24 Stunden). CERTIFICATE_LIFETIME muss ein Wert zwischen 24 Stunden und 30 Tagen sein. Wenn CERTIFICATE_LIFETIME nicht angegeben ist, beträgt die Gültigkeitsdauer des Zertifikats standardmäßig 24 Stunden. CERTIFICATE_LIFETIME ist optional.

  • ROTATION_WINDOW_PERCENTAGE: der Prozentsatz der Zertifikatslebensdauer, bei dem eine Verlängerung ausgelöst wird. Der Wert von ROTATION_WINDOW_PERCENTAGE muss zwischen 50 und 80 liegen. Der Standardwert ist 50. ROTATION_WINDOW_PERCENTAGE ist optional.

  • ALGORITHM: Der Verschlüsselungsalgorithmus, der zum Generieren des privaten Schlüssels verwendet wird. Gültige Werte für ALGORITHM sind ECDSA_P256 (Standard), ECDSA_P384, RSA_2048, RSA_3072 und RSA_4096. ALGORITHM ist optional.

Inline-Konfiguration der Vertrauensstellung erstellen

In dieser Beispielkonfiguration gehören sowohl der Load Balancer als auch das Backend zur selben Vertrauensdomäne und verwenden dasselbe Stammzertifikat. Daher ist die Konfiguration der Inline-Konfiguration der Vertrauensstellung optional. Der gemeinsame Root of Trust wird verwendet, um eine Vertrauenskette zu erstellen und die Identität der Arbeitslasten in der vertrauenswürdigen Domain zu überprüfen.

Ressourcenhierarchie für verwaltete Arbeitslastidentitäten.
Ressourcenhierarchie für verwaltete Arbeitslastidentitäten (zum Vergrößern klicken).

Standardmäßig können sich Ihre Arbeitslasten innerhalb derselben vertrauenswürdigen Domain gegenseitig mit verwalteten Workload Identities authentifizieren. Wenn Sie möchten, dass Arbeitslasten in verschiedenen vertrauenswürdigen Domains sich gegenseitig authentifizieren, müssen Sie die Vertrauensstellung im Workload Identity-Pool explizit deklarieren. Dazu erstellen Sie eine Inline-Konfiguration für Vertrauensbeziehungen, in der Zertifikate aus anderen Vertrauensdomänen erkannt und akzeptiert werden.

So erstellen Sie eine Inline-Konfiguration für die Vertrauensstellung:

  1. Laden Sie die Zertifikate herunter.

    gcloud privateca pools get-ca-certs ROOT_CA_POOL_ID \
        --output-file=CERTIFICATE_PATH \
        --location=REGION
    

    Ersetzen Sie Folgendes:

    • ROOT_CA_POOL_ID: die ID des Stammzertifizierungsstellen-Pools
    • CERTIFICATE_PATH: Der Pfad, in den das PEM-codierte Zertifikat ausgegeben werden soll.
    • REGION: die Region des Stamm-CA-Pools
  2. Erstellen Sie eine JSON-formatierte Konfigurationsdatei (tc.json), die die Inline-Konfiguration für vertrauenswürdige Quellen mit PEM-formatierten Zertifikaten enthält.

    Die Datei sieht in etwa so aus:

    {
      "inlineTrustConfig": {
        "additionalTrustBundles": {
          "TRUST_DOMAIN_NAME1": {
            "trustAnchors": [
              {
                  "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL1\n-----END CERTIFICATE-----"
              },
              {
                  "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL2\n-----END CERTIFICATE-----"
              }
            ]
          },
          "TRUST_DOMAIN_NAME2": {
            "trustAnchors": [
              {
                  "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL3\n-----END CERTIFICATE-----"
              },
              {
                  "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL4\n-----END CERTIFICATE-----"
              }
            ]
          }
        }
      }
    }
    

    Ersetzen Sie Folgendes:

    • TRUST_DOMAIN_NAME: Die Vertrauenswürdigkeitsdomain kann eine beliebige Vertrauenswürdigkeitsdomain sein (z. B. „beispiel.de“), einschließlich einer anderen (oder sogar derselben) Vertrauenswürdigkeitsdomain für den Workload Identity-Pool.

      Der Name einer vertrauenswürdigen Domain für einen Workload Identity-Pool wird so formatiert:

      WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog
      

      Ersetzen Sie im Format Folgendes:

      • WORKLOAD_IDENTITY_POOL_ID: die ID des Workload Identity-Pools
      • PROJECT_NUMBER: die Projektnummer des Projekts, das den Workload Identity-Pool enthält
    • CERTIFICATE_MATERIAL: Das CA-Zertifikat im PEM-Format, dem bei der Ausstellung von Zertifikaten in der vertrauenswürdigen Domain vertraut wird. Mit dem folgenden Befehl kann eine im PEM-Format formatierte Zertifikatsdatei in einen einzeiligen String codiert werden:

      cat trust-anchor.pem | sed 's/^[ ]*//g' | sed -z '$ s/\n$//' | tr '\n' $ | sed 's/\$/\\n/g'
      

CA an den Workload Identity-Pool binden

Nachdem Sie die CA-Hierarchie und eine Konfiguration für die Zertifikatsausstellung für die CA erstellt haben, können Sie die CA an den Workload Identity-Pool binden. Um die CA an den Workload Identity-Pool zu binden, müssen Sie den Workload Identity-Pool mit der Konfiguration der Zertifikatausstellung der CA aktualisieren. Anschließend können Sie prüfen, ob der Pool aktualisiert wurde.

Workload Identity-Pool aktualisieren

Wenn Sie eine CA an den Workload Identity-Pool binden möchten, aktualisieren Sie den Workload Identity-Pool mit der Konfiguration der Zertifikatausstellung der CA. Anschließend können Sie prüfen, ob der Pool aktualisiert wurde.

Führen Sie den folgenden Befehl aus, um den Pool zu aktualisieren:

gcloud iam workload-identity-pools update WORKLOAD_IDENTITY_POOL_ID \
    --location="global" \
    --inline-certificate-issuance-config-file=CIC_JSON_FILE_PATH \
    [--inline-trust-config-file=TC_JSON_FILE_PATH] \
    --project=PROJECT_ID

Ersetzen Sie Folgendes:

  • WORKLOAD_IDENTITY_POOL_ID ist die ID des Workload Identity-Pools.

  • CIC_JSON_FILE_PATH: der Pfad zur JSON-formatierten Konfigurationsdatei (cic.json) für die Inline-Konfiguration zur Zertifikatausstellung, die Sie zuvor erstellt haben.

  • TC_JSON_FILE_PATH: Der Pfad zur JSON-formatierten Konfigurationsdatei (tc.json) für die Inline-Konfiguration für Vertrauen, die Sie zuvor erstellt haben. Wenn sich Ihre Arbeitslasten über verschiedene vertrauenswürdige Domains hinweg authentifizieren, müssen Sie diese Datei angeben. Andernfalls können Sie --inline-trust-config weglassen.

Prüfen, ob der Workload Identity-Pool aktualisiert wurde

Führen Sie den folgenden Befehl aus, um zu prüfen, ob Ihr Workload Identity-Pool zusammen mit der Zertifikatausstellungskonfiguration und der Vertrauenskonfiguration aktualisiert wurde:

gcloud iam workload-identity-pools describe WORKLOAD_IDENTITY_POOL_ID \
    --location="global" \
    --project=PROJECT_ID

Ersetzen Sie Folgendes:

  • WORKLOAD_IDENTITY_POOL_ID ist die ID des Workload Identity-Pools.

  • PROJECT_ID: die Projekt-ID

Die Ausgabe sieht etwa so aus:

inlineCertificateIssuanceConfig:
    caPools:
      REGION: projects/PROJECT_NUMBER/locations/REGION1/caPools/ROOT_CA_POOL_ID
    keyAlgorithm: ALGORITHM
    lifetime: CERTIFICATE_LIFETIME
    rotationWindowPercentage: ROTATION_WINDOW_PERCENTAGE
inlineTrustConfig:
    additionalTrustBundles:
      TRUST_DOMAIN_NAME1:
          trustAnchors:
          - pemCertificate: |-
            -----BEGIN CERTIFICATE-----
            CERTIFICATE_MATERIAL1
            -----END CERTIFICATE-----
          - pemCertificate: |-
            -----BEGIN CERTIFICATE-----
            CERTIFICATE_MATERIAL2
            -----END CERTIFICATE-----
      TRUST_DOMAIN_NAME2:
          trustAnchors:
          - pemCertificate: |-
            -----BEGIN CERTIFICATE-----
            CERTIFICATE_MATERIAL3
            -----END CERTIFICATE-----
          - pemCertificate: |-
            -----BEGIN CERTIFICATE-----
            CERTIFICATE_MATERIAL4
            -----END CERTIFICATE-----
mode: TRUST_DOMAIN
name: projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID
state: ACTIVE

Diese Ausgabe enthält die folgenden Werte:

  • PROJECT_NUMBER: die Projektnummer
  • REGION: die Region, in der sich der Stamm-CA-Pool befindet
  • ROOT_CA_POOL_ID: die ID des Stammzertifizierungsstellen-Pools
  • ALGORITHM: Der Verschlüsselungsalgorithmus, der zum Generieren des privaten Schlüssels verwendet wird.
  • CERTIFICATE_LIFETIME: die Lebensdauer der vom CA-Pool ausgestellten Workload-Zertifikate in Sekunden
  • ROTATION_WINDOW_PERCENTAGE: Der Prozentsatz der Zertifikatslebensdauer, bei dem eine Verlängerung ausgelöst wird.
  • TRUST_DOMAIN_NAME: Die Vertrauenswürdigkeitsdomain kann eine beliebige Vertrauenswürdigkeitsdomain sein (z. B. „beispiel.de“), einschließlich einer anderen (oder sogar derselben) Vertrauenswürdigkeitsdomain für den Workload Identity-Pool.
  • CERTIFICATE_MATERIAL: Das CA-Zertifikat im PEM-Format, dem bei der Ausstellung von Zertifikaten in der vertrauenswürdigen Domain vertraut wird.
  • WORKLOAD_IDENTITY_POOL_ID: die ID des Workload Identity-Pools

Wenn inlineCertificateIssuanceConfig oder inlineTrustConfig in der Ausgabe nicht vorhanden ist, prüfen Sie, ob Sie die gcloud CLI korrekt konfiguriert haben, um das richtige Projekt für Abrechnung und Kontingent zu verwenden. Möglicherweise müssen Sie auf eine neuere Version der gcloud CLI aktualisieren.

Verwaltete Arbeitslastidentitäten autorisieren, um Zertifikate vom CA-Pool anzufordern

Nachdem Sie die Zertifizierungsstelle an den Workload Identity-Pool gebunden haben, müssen Sie verwaltete Arbeitslastidentitäten autorisieren, um Zertifikate vom CA-Pool anzufordern.

  1. Weisen Sie der Vertrauenswürdigkeitsdomain die Rolle „Anfragesteller des CA Service-Arbeitslastzertifikats“ (roles/privateca.workloadCertificateRequester) zu. Diese Rolle autorisiert die Vertrauensdomäne, Zertifikate von den CA Service-Zertifikatsketten anzufordern.

    gcloud privateca pools add-iam-policy-binding ROOT_CA_POOL_ID \
        --location=REGION \
        --role=roles/privateca.workloadCertificateRequester \
        --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID" \
        --project=PROJECT_ID
    

    Ersetzen Sie Folgendes:

    • ROOT_CA_POOL_ID: die ID für den Stamm-CA-Pool
    • REGION: die Region des Stamm-CA-Pools
    • PROJECT_NUMBER: die Projektnummer

      Führen Sie den folgenden Befehl aus, um PROJECT_NUMBER aus PROJECT_ID abzurufen:

      gcloud projects describe PROJECT_ID --format="value(projectNumber)"
      
    • WORKLOAD_IDENTITY_POOL_ID: die ID des Workload Identity-Pools

    • PROJECT_ID: die Projekt-ID

  2. Weisen Sie der Vertrauensdomain die Rolle „Leser von CA-Dienstpools“ (roles/privateca.poolReader) zu. Diese Rolle autorisiert die Vertrauensdomäne, die signierten X.509-Zertifikate aus den Zertifikatsketten der Zertifizierungsstelle abzurufen.

    gcloud privateca pools add-iam-policy-binding ROOT_CA_POOL_ID \
        --location=REGION \
        --role=roles/privateca.poolReader \
        --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID" \
        --project=PROJECT_ID
    

    Ersetzen Sie Folgendes:

    • ROOT_CA_POOL_ID: die ID des Stammzertifizierungsstellen-Pools
    • REGION: die Region des Stamm-CA-Pools
    • PROJECT_NUMBER: die Projektnummer
    • WORKLOAD_IDENTITY_POOL_ID: die ID des Workload Identity-Pools
    • PROJECT_ID: die Projekt-ID

Load-Balancer erstellen und verwaltete Identität dem Back-End-Dienst zuweisen

Eine verwaltete Identität kann nur beim Erstellen des Backend-Dienstes zugewiesen werden.

Die Schritte in diesem Abschnitt beziehen sich nur auf das Zuweisen einer verwalteten Identität zum Back-End-Dienst des Load-Balancers. Dies ist Teil der Backend-Konfiguration des Load-Balancers.

Wenn Sie einen globalen externen Application Load Balancer einrichten möchten, folgen Sie der Anleitung unter Globalen externen Application Load Balancer mit VM-Instanzgruppen-Back-Ends einrichten. Wenn Sie den Backend-Dienst des Load Balancers einrichten, müssen Sie zusätzlich Folgendes tun:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Load Balancing auf.

    Load-Balancing aufrufen

  2. Fügen Sie im Abschnitt Backend-Konfiguration die erforderlichen Details zum Erstellen eines Backend-Dienstes hinzu.

  3. Maximieren Sie den Abschnitt Erweiterte Konfigurationen.

  4. Wählen Sie im Abschnitt Backend-Authentifizierung die Option Verwaltete Identität aus.

  5. Wenn Sie dem Backend-Dienst eine verwaltete Identität zuweisen möchten, geben Sie im Feld Verwaltete Identität die verwaltete Arbeitslastidentität ein, die Sie zuvor erstellt haben.

  6. Klicken Sie auf Erstellen.

  7. Fahren Sie mit den Schritten unter Load-Balancer einrichten fort, um die Konfiguration des Load-Balancers abzuschließen.

gcloud

  1. Wenn Sie dem Backend-Dienst eine verwaltete Identität zuweisen möchten, fügen Sie das Flag --identity hinzu, wenn Sie den Befehl gcloud beta compute backend-services create verwenden.

    gcloud beta compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTPS \
        --health-checks=HEALTH_CHECK_NAME \
        --identity='//WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID' \
        --global
    

    Ersetzen Sie Folgendes:

    • BACKEND_SERVICE_NAME: der Name des Backend-Dienstes
    • HEALTH_CHECK_NAME: der Name der Systemdiagnose
    • WORKLOAD_IDENTITY_POOL_ID: ID des Workload Identity-Pools
    • PROJECT_NUMBER: die Projektnummer
    • NAMESPACE_ID: die Namespace-ID
    • MANAGED_IDENTITY_ID: die ID der verwalteten Identität

Automatisch erstellte Ressourcen

Nachdem eine verwaltete Identität für den Backend-Dienst des Load-Balancers konfiguriert wurde, werden die folgenden Ressourcen automatisch von der verwalteten Arbeitslastidentität erstellt:

  • Konfiguration für die Backend-Authentifizierung: An den Backend-Dienst des Load Balancers angehängt
  • Zertifikat der verwalteten Identität des Zertifikatmanagers: An die Backend-Authentifizierungskonfiguration angehängt
  • Konfiguration der Vertrauensstellung des Zertifikatmanagers: an die Konfiguration der Backend-Authentifizierung angehängt

In den folgenden Abschnitten wird beschrieben, wie Sie Ihre Konfiguration überprüfen, um festzustellen, ob die automatisch erstellten Ressourcen konfiguriert wurden.

Konfiguration überprüfen

Prüfen Sie Ihre Konfiguration, um festzustellen, ob die automatisch erstellten Ressourcen konfiguriert wurden.

Die automatisch erstellten Ressourcen haben das Präfix mi, das angibt, dass die Ressource von einer verwalteten Arbeitslastidentität erstellt wurde.

Erstellung der Konfiguration der Backend-Authentifizierung und der verwalteten Identität überprüfen

Verwenden Sie den gcloud beta compute backend-services describe-Befehl, um den Backend-Dienst zu beschreiben und so die Erstellung der Backend-Authentifizierungskonfiguration und der verwalteten Identität zu prüfen.

gcloud beta compute backend-services describe BACKEND_SERVICE_NAME --global

Die Ausgabe sieht etwa so aus:

affinityCookieTtlSec: 0
connectionDraining:
  drainingTimeoutSec: 0
creationTimestamp: '2025-11-06T02:15:43.680-08:00'
description: ''
enableCDN: false
fingerprint: lTZwas8aylg=
healthChecks:
- https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/healthChecks/HEALTH_CHECK_NAME
id: '719352032'
kind: compute#backendService
loadBalancingScheme: EXTERNAL_MANAGED
name: BACKEND_SERVICE_NAME
port: 80
portName: PORT_NAME
protocol: HTTPS
selfLink: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME
sessionAffinity: NONE
timeoutSec: 30
tlsSettings:
  authenticationConfig: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/global/backendAuthenticationConfigs/mi-bac-423b651f-d549-4a9f-a4f2-g2bcaa7108bd
  identity: //WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID

Diese Ausgabe enthält die folgenden Werte:

  • PROJECT_ID: die Projekt-ID
  • HEALTH_CHECK_NAME: der Name der Systemdiagnose
  • BACKEND_SERVICE_NAME: der Name des Backend-Dienstes.
  • PORT_NAME: der Portname
  • REGION: die Region, in der sich der Stamm-CA-Pool befindet
  • WORKLOAD_IDENTITY_POOL_ID: die ID des Workload Identity-Pools
  • PROJECT_NUMBER: die Projektnummer
  • NAMESPACE_ID: die Namespace-ID
  • MANAGED_IDENTITY_ID: die ID der verwalteten Identität

Die Konfiguration der Backend-Authentifizierung wird automatisch erstellt und an das Feld backendService.tlsSettings.authenticationConfig angehängt. Die Backend-Authentifizierungskonfiguration, die mit dem Präfix mi beginnt, wird im folgenden Abschnitt als MI_BACKEND_AUTHENTICATION_CONFIG_ID bezeichnet.

Die verwaltete Arbeitslastidentität ist auch an das Feld backendService.tlsSettings.identity angehängt. Sie hat folgendes Format:

//WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID

Erstellung des vom Zertifikatmanager verwalteten Identitätszertifikats und der Vertrauensstellungskonfiguration des Zertifikatmanagers prüfen

Verwenden Sie den Befehl gcloud network-security backend-authentication-configs describe, um zu prüfen, ob das vom Zertifikatmanager verwaltete Identitätszertifikat und die Vertrauensstellungskonfiguration des Zertifikatmanagers an die Ressource für die Konfiguration der Backend-Authentifizierung angehängt sind.

gcloud network-security backend-authentication-configs describe MI_BACKEND_AUTHENTICATION_CONFIG_ID \
    --location=global

Die Ausgabe sieht etwa so aus:

clientCertificate: projects/PROJECT_NUMBER/locations/global/certificates/mi-crt-181fa461-3b53-40fa-8515-507d47337c5d
createTime: '2025-11-06T10:15:56.237734973Z'
etag: xwyxl1VYVoh4QIwf3nhKhAVXgcuOqoN7xdqAiS8Esvs
name: projects//locations/global/backendAuthenticationConfigs/mi-bac-477b381f-d349-4a8f-a6f2-f2bbaa7109bd
trustConfig: projects/PROJECT_NUMBER/locations/global/trustConfigs/mi-tc-e4f05160-f20f-4109-aae3-4c1a68891742
updateTime: '2025-11-06T10:16:01.964275141Z'

Die clientCertificate und die trustConfig werden automatisch von der verwalteten Arbeitslastidentität erstellt und an die Backend-Authentifizierungskonfigurationsressource angehängt.

Die clientCertificate, die mit dem Präfix mi beginnt, wird im folgenden Abschnitt als MI_CLIENT_CERTIFICATE_ID bezeichnet.

Die trustConfig, die mit dem Präfix mi beginnt, wird im folgenden Abschnitt als MI_TRUST_CONFIG_ID bezeichnet.

Prüfen, ob das Certificate Manager-Zertifikat ein Zertifikat für verwaltete Identitäten ist

Wenn Sie die Details des vom Zertifikatmanager verwalteten Identitätszertifikats aufrufen möchten, verwenden Sie den Befehl gcloud certificate-manager certificates describe.

gcloud certificate-manager certificates describe MI_CLIENT_CERTIFICATE_ID

Die Ausgabe sieht etwa so aus:

createTime: '2025-11-06T10:15:46.187892797Z'
expireTime: '2025-11-07T22:55:47Z'
extendedKeyUsage:
  clientAuth: true
managedIdentity:
  identity: //WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
  state: ACTIVE
name: projects/PROJECT_ID/locations/global/certificates/mi-crt-181fa461-3b53-40fa-8515-507d47337c5d
pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE-----
scope: CLIENT_AUTH
updateTime: '2025-11-06T10:15:49.427339950Z'
usedBy:
- name: //networksecurity.googleapis.com/projects/PROJECT_NUMBER/locations/global/backendAuthenticationConfigs/mi-bac-477b381f-d349-4a8f-a6f2-f2bbaa7109bd

Diese Ausgabe enthält die folgenden Werte:

  • WORKLOAD_IDENTITY_POOL_ID: die ID des Workload Identity-Pools
  • PROJECT_NUMBER: die Projektnummer
  • NAMESPACE_ID: die Namespace-ID
  • MANAGED_IDENTITY_ID: die ID der verwalteten Identität
  • CERTIFICATE_MATERIAL: Das X.509-SVID in einem PEM-codierten Format.

Das von Certificate Manager verwaltete Identitätszertifikat hat die Eigenschaft managedIdentity, die es als Zertifikat für verwaltete Identitäten kennzeichnet. In der von Certificate Manager verwalteten Identitätszertifikatsressource wird die X.509-SVID in einem PEM-codierten Format gespeichert.

Der Bereich des von Certificate Manager verwalteten Identitätszertifikats ist CLIENT_AUTH. Das bedeutet, dass dieses Zertifikat als Clientzertifikat in Backend-mTLS verwendet wird.

Prüfen Sie, ob die SPIFFE-ID Teil des SAN im X.509-SVID ist.

Das X.509-SVID enthält die SPIFFE-ID, die als URI im SAN-Feld codiert ist. Diese SPIFFE-ID entspricht der verwalteten Identität im Workload Identity-Pool.

Führen Sie den folgenden Befehl aus, um das Zertifikat in einem für Menschen lesbaren Format auszugeben:

openssl x509 -text -noout \
<<< "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE-----"

Die Ausgabe sieht in etwa so aus (gekürzt):

Certificate:
    Data:
        Version: 3 (0x2)
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: O = example.com, CN = Example CA
        Validity
            Not Before: Nov  6 10:15:48 2025 GMT
            Not After : Nov  7 10:15:47 2025 GMT
        Subject:
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
        X509v3 extensions:
            X509v3 Subject Alternative Name: critical
                URI:spiffe://WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID

Diese Ausgabe enthält die folgenden Werte:

  • WORKLOAD_IDENTITY_POOL_ID: die ID des Workload Identity-Pools
  • PROJECT_NUMBER: die Projektnummer
  • NAMESPACE_ID: die Namespace-ID
  • MANAGED_IDENTITY_ID: die ID der verwalteten Identität

Prüfen, ob die Trust-Konfiguration von Certificate Manager das Feld spiffeTrustStore enthält

Die Vertrauenskonfiguration des Zertifikatsmanagers enthält ein Feld mit dem Namen spiffeTrustStores. Das Feld spiffeTrustStores enthält das Trust-Bundle, das mit der Trust-Domain des Workload Identity-Pools verknüpft ist (in der Ausgabe durch WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog dargestellt), sowie alle zusätzlichen Trust-Bundles, die durch das Feld additionalTrustBundles in der Inline-Trust-Konfiguration des Workload Identity-Pools angegeben werden.

Wenn Sie die Details der Vertrauenskonfiguration des Zertifikatmanagers aufrufen möchten, verwenden Sie den Befehl gcloud certificate-manager trust-configs describe.

gcloud certificate-manager certificates describe MI_TRUST_CONFIG_ID

Ersetzen Sie MI_TRUST_CONFIG_ID durch die automatisch von der verwalteten Identität erstellte Vertrauenskonfiguration.

In der folgenden Beispielausgabe ist der Host example.com die zusätzliche vertrauenswürdige Domain, auf die sich das Vertrauen erstreckt.

createTime: '2025-11-06T10:15:50.048030758Z'
etag: kDoKfm5W6Il2HPvduKZWpuYpyrKrNVq4jqMEICE-6rQ
name: projects/PROJECT_ID/locations/global/trustConfigs/mi-tc-e4f05160-f20f-4109-aae3-4c1a68891742
spiffeTrustStores:
  example.com:
    trustAnchors:
    - pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL1\n-----END CERTIFICATE-----
  WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog:
    trustAnchors:
    - pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL2\n-----END CERTIFICATE-----
updateTime: '2025-11-07T08:25:15.760754841Z'

Diese Ausgabe enthält die folgenden Werte:

  • PROJECT_ID: die Projekt-ID
  • CERTIFICATE_MATERIAL: Das CA-Zertifikat im PEM-Format, dem bei der Ausstellung von Zertifikaten in der vertrauenswürdigen Domain vertraut wird.
  • WORKLOAD_IDENTITY_POOL_ID: die ID des Workload Identity-Pools
  • PROJECT_NUMBER: die Projektnummer
  • MANAGED_IDENTITY_ID: die ID der verwalteten Identität

Weitere Informationen zur Vertrauenskonfiguration von Certificate Manager finden Sie unter Vertrauenskonfiguration von Certificate Manager.

Nächste Schritte