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:
- Konfigurieren Sie einen CA-Pool (Certificate Authority Service) zum Ausstellen von X.509-Zertifikaten für verwaltete Arbeitslastidentitäten.
- 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
- Binden Sie die CA mit der Inline-Konfiguration für die Zertifikatausstellung an den Workload Identity-Pool.
- Verwaltete Arbeitslastidentitäten autorisieren, um Zertifikate vom CA-Pool anzufordern.
- 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
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_IDwith 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_IDwith your Google Cloud project name.
Lesen Sie das Dokument Backend-mTLS mit verwalteten Arbeitslastidentitäten – Übersicht.
Weitere Informationen zur Zertifikatsausstellung mit dem Certificate Authority Service
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 theserviceusage.services.enablepermission. Learn how to grant roles.gcloud services enable iam.googleapis.com
privateca.googleapis.com compute.googleapis.com certificatemanager.googleapis.com networksecurity.googleapis.com 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_IDdurch die ID des Projekts, das der Zulassungsliste für die Vorschau der verwalteten Arbeitslastidentität hinzugefügt wurde.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:
-
So erstellen und konfigurieren Sie verwaltete Arbeitslastidentitäten:
-
IAM Workload Identity Pool Admin (
roles/iam.workloadIdentityPoolAdmin) - Service Account Admin (
roles/iam.serviceAccountAdmin)
-
IAM Workload Identity Pool Admin (
-
So erstellen und konfigurieren Sie CA-Pools:
CA Service Admin (
roles/privateca.admin) -
Zum Erstellen von Load-Balancer-Ressourcen wie
TargetHTTPSProxy: Administrator für Compute-Load-Balancer (roles/compute.loadBalancerAdmin) -
So verwenden Sie Zertifikatmanager-Ressourcen:
Zertifikatmanager-Inhaber (
roles/certificatemanager.owner) -
So erstellen Sie Sicherheits- und Netzwerkkomponenten:
-
Compute-Netzwerkadministrator (
roles/compute.networkAdmin) -
Compute-Sicherheitsadministrator (
roles/compute.securityAdmin)
-
Compute-Netzwerkadministrator (
-
Zum Erstellen eines Projekts (optional):
Project Creator (
roles/resourcemanager.projectCreator)
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-PoolREGION: die Region, in der sich der Stamm-CA-Pool befindetPROJECT_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 StammzertifizierungsstelleROOT_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üsselalgorithmusrsa-pkcs1-4096-sha256verwendet.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 -ProjektsWORKLOAD_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 VariablePROJECT_IDangegeben 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_LIFETIMEmuss ein Wert zwischen 24 Stunden und 30 Tagen sein. WennCERTIFICATE_LIFETIMEnicht angegeben ist, beträgt die Gültigkeitsdauer des Zertifikats standardmäßig 24 Stunden.CERTIFICATE_LIFETIMEist optional.ROTATION_WINDOW_PERCENTAGE: der Prozentsatz der Zertifikatslebensdauer, bei dem eine Verlängerung ausgelöst wird. Der Wert vonROTATION_WINDOW_PERCENTAGEmuss zwischen 50 und 80 liegen. Der Standardwert ist 50.ROTATION_WINDOW_PERCENTAGEist optional.ALGORITHM: Der Verschlüsselungsalgorithmus, der zum Generieren des privaten Schlüssels verwendet wird. Gültige Werte fürALGORITHMsindECDSA_P256(Standard),ECDSA_P384,RSA_2048,RSA_3072undRSA_4096.ALGORITHMist 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.
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:
Laden Sie die Zertifikate herunter.
gcloud privateca pools get-ca-certs ROOT_CA_POOL_ID \ --output-file=CERTIFICATE_PATH \ --location=REGIONErsetzen Sie Folgendes:
ROOT_CA_POOL_ID: die ID des Stammzertifizierungsstellen-PoolsCERTIFICATE_PATH: Der Pfad, in den das PEM-codierte Zertifikat ausgegeben werden soll.REGION: die Region des Stamm-CA-Pools
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-PoolsPROJECT_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_IDist 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-configweglassen.
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_IDist 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 ProjektnummerREGION: die Region, in der sich der Stamm-CA-Pool befindetROOT_CA_POOL_ID: die ID des Stammzertifizierungsstellen-PoolsALGORITHM: Der Verschlüsselungsalgorithmus, der zum Generieren des privaten Schlüssels verwendet wird.CERTIFICATE_LIFETIME: die Lebensdauer der vom CA-Pool ausgestellten Workload-Zertifikate in SekundenROTATION_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.
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_IDErsetzen Sie Folgendes:
ROOT_CA_POOL_ID: die ID für den Stamm-CA-PoolREGION: die Region des Stamm-CA-PoolsPROJECT_NUMBER: die ProjektnummerFühren Sie den folgenden Befehl aus, um
PROJECT_NUMBERausPROJECT_IDabzurufen:gcloud projects describe PROJECT_ID --format="value(projectNumber)"
WORKLOAD_IDENTITY_POOL_ID: die ID des Workload Identity-PoolsPROJECT_ID: die Projekt-ID
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_IDErsetzen Sie Folgendes:
ROOT_CA_POOL_ID: die ID des Stammzertifizierungsstellen-PoolsREGION: die Region des Stamm-CA-PoolsPROJECT_NUMBER: die ProjektnummerWORKLOAD_IDENTITY_POOL_ID: die ID des Workload Identity-PoolsPROJECT_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
Rufen Sie in der Google Cloud Console die Seite Load Balancing auf.
Fügen Sie im Abschnitt Backend-Konfiguration die erforderlichen Details zum Erstellen eines Backend-Dienstes hinzu.
Maximieren Sie den Abschnitt Erweiterte Konfigurationen.
Wählen Sie im Abschnitt Backend-Authentifizierung die Option Verwaltete Identität aus.
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.
Klicken Sie auf Erstellen.
Fahren Sie mit den Schritten unter Load-Balancer einrichten fort, um die Konfiguration des Load-Balancers abzuschließen.
gcloud
Wenn Sie dem Backend-Dienst eine verwaltete Identität zuweisen möchten, fügen Sie das Flag
--identityhinzu, wenn Sie den Befehlgcloud beta compute backend-services createverwenden.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' \ --globalErsetzen Sie Folgendes:
BACKEND_SERVICE_NAME: der Name des Backend-DienstesHEALTH_CHECK_NAME: der Name der SystemdiagnoseWORKLOAD_IDENTITY_POOL_ID: ID des Workload Identity-PoolsPROJECT_NUMBER: die ProjektnummerNAMESPACE_ID: die Namespace-IDMANAGED_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-IDHEALTH_CHECK_NAME: der Name der SystemdiagnoseBACKEND_SERVICE_NAME: der Name des Backend-Dienstes.PORT_NAME: der PortnameREGION: die Region, in der sich der Stamm-CA-Pool befindetWORKLOAD_IDENTITY_POOL_ID: die ID des Workload Identity-PoolsPROJECT_NUMBER: die ProjektnummerNAMESPACE_ID: die Namespace-IDMANAGED_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-PoolsPROJECT_NUMBER: die ProjektnummerNAMESPACE_ID: die Namespace-IDMANAGED_IDENTITY_ID: die ID der verwalteten IdentitätCERTIFICATE_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-PoolsPROJECT_NUMBER: die ProjektnummerNAMESPACE_ID: die Namespace-IDMANAGED_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 dargestellt), sowie alle zusätzlichen Trust-Bundles, die durch das Feld WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.googadditionalTrustBundles 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-IDCERTIFICATE_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-PoolsPROJECT_NUMBER: die ProjektnummerMANAGED_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
- Authentifizierung von verwalteten Arbeitslastidentitäten für Compute Engine konfigurieren
- Arbeitslasten über mTLS bei anderen Arbeitslasten authentifizieren