In diesem Dokument wird beschrieben, wie Sie die automatische Bereitstellung und die Lebenszyklusverwaltung verwalteter Arbeitslastidentitäten für Compute Engine einrichten. Sie konfigurieren CA-Pools so, dass Zertifikate mit Certificate Authority Service (CA) ausgestellt werden. Dies ist ein hochverfügbarer, skalierbarer Google Cloud -Dienst, der die Bereitstellung, Verwaltung und Sicherheit von CA-Diensten vereinfacht und automatisiert. Jede VM wird mit X.509-Anmeldedaten aus dem konfigurierten CA-Pool bereitgestellt. Diese Anmeldedaten können dann zum Herstellen von mTLS-Verbindungen verwendet werden.
Hinweis
- Übersicht über verwaltete Arbeitslastidentitäten ansehen
Aktivieren Sie die Compute Engine API, falls sie noch nicht aktiviert ist:
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 compute.googleapis.com
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 von VMs benötigen, die verwaltete Zertifikate für die Identitätsföderation von Arbeitslasten zur Authentifizierung bei anderen Arbeitslasten verwenden:
- Compute-Instanzadministrator (Version 1) (
roles/compute.instanceAdmin.v1) - Service Account User (
roles/iam.serviceAccountUser)
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.
Übersicht
Mit verwalteten Arbeitslastidentitäten für Compute Engine können Sie wechselseitig authentifizierte und verschlüsselte Kommunikation zwischen zwei beliebigen Compute Engine-VMs implementieren. Arbeitslastanwendungen, die auf den konfigurierten VMs ausgeführt werden, können die X.509-Anmeldedaten für mTLS pro VM verwenden. Der Gast-Agent rotiert diese mTLS-Zertifikate automatisch und aktualisiert die Anmeldedaten auf der VM.
Mit verwalteten Arbeitslastidentitäten können Sie die Identität für Ihre Arbeitslasten zentral verwalten. Compute Engine-VMs können autorisiert werden, eine Arbeitslastidentität zu empfangen, die auf Schlüsselattributen wie der Instanz-ID, dem Instanznamen oder dem angehängten Dienstkonto basiert. Damit die Arbeitslasten bestätigt werden können, muss der Compute-Administrator oder ‑Entwickler VM-Instanzen für die Arbeitslast mit einem übereinstimmenden Instanznamen, einer übereinstimmenden Instanz-ID, einem übereinstimmenden Dienstkontonamen oder einer übereinstimmenden Dienstkonto-ID erstellen.
Verwaltete Arbeitslastidentitäten entsprechen dem Open-Source-Standard Secure Production Identity Framework for Everyone (SPIFFE).
SPIFFE-IDs für Google Cloud Arbeitslasten haben das folgende Format:
spiffe://<TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_ID.
TRUST_DOMAIN entspricht einem IAM-Workload Identity-Pool.
Verwaltete Arbeitslastidentitäten werden in einem Workload Identity-Pool definiert, der als Container der obersten Ebene für Arbeitslastidentitäten mit einer gemeinsamen Vertrauensgrenze dient. In einem Workload Identity-Pool werden Identitäten in administrativen Grenzen organisiert, die als Namespaces bezeichnet werden. Damit eine Arbeitslast eine verwaltete Identität erhalten kann, müssen Sie Attestierungsrichtlinien definieren, um sie zu autorisieren. Eine Richtlinie zur Arbeitslastattestierung sorgt dafür, dass nur vertrauenswürdige Arbeitslasten eine verwaltete Identität bestätigen können.
Führen Sie die folgenden Aufgaben aus, um verwaltete Arbeitslastidentitäten für Ihre Anwendungen zu verwenden:
Sicherheitsadministrator:
- Erstellen Sie verwaltete Arbeitslastidentitäten in einem Workload Identity-Pool.
- Richtlinie zur Arbeitslastattestierung definieren.
- Certificate Authority Service so konfigurieren, dass Zertifikate für verwaltete Arbeitslastidentitäten ausgestellt werden
- Verwaltete Arbeitslastidentitäten autorisieren, um Zertifikate vom CA-Pool anzufordern
- Vertrauens- und Zertifikatsausstellungskonfiguration im Workload Identity-Pool definieren
Compute Administrator:
- Instanzen für die Verwendung von Arbeitslastidentitäten für einzelne Compute Engine-Instanzen konfigurieren
- Zugriff auf Anmeldedaten für Arbeitslasten auf einer Linux-Instanz
Verwaltete Arbeitslastidentitäten in der Identitäts- und Zugriffsverwaltung konfigurieren
Folgen Sie der Anleitung unter Authentifizierung von verwalteten Arbeitslastidentitäten konfigurieren .
In dieser Anleitung wird beschrieben, wie Sie Folgendes ausführen:
- Erstellen Sie einen Workload Identity-Pool.
- Erstellen Sie Namespaces im Workload Identity-Pool. Sie verwenden die Namespaces, um administrative Grenzen für Ihre verwalteten Arbeitslastidentitäten zu erstellen, z. B. einen Namespace für jede der Anwendungen, die Ihrer Organisation gehören.
- Erstellen Sie eine verwaltete Arbeitslastidentität in einem Namespace im Workload Identity-Pool. Sie können beispielsweise einen Namespace für eine Anwendung erstellen und verwaltete Identitäten in diesem Namespace für die Mikrodienste erstellen, die diese Anwendung unterstützen.
- Optional: Erstellen Sie ein Dienstkonto, um Attestierungsregeln basierend auf der Dienstkonto-ID zu erstellen.
- Erstellen Sie eine Attestierungsrichtlinie für Arbeitslasten, mit der Ihre Arbeitslast Anmeldedaten für die verwaltete Arbeitslastidentität erhalten kann. Compute Engine-VMs können autorisiert werden, eine verwaltete Arbeitslastidentität anhand von Schlüsselattributen wie der Instanz-ID, dem Instanznamen oder dem angehängten Dienstkonto zu empfangen.
- Konfigurieren Sie den Certificate Authority Service, um Zertifikate für verwaltete Arbeitslastidentitäten auszustellen:
- Stamm-CA-Pool konfigurieren
- Untergeordnete CAs konfigurieren
- Verwalteten Workload Identity-Pool autorisieren, um Zertifikate vom CA-Pool anzufordern
Verwaltete Arbeitslastidentitäten für einzelne Compute-Instanzen aktivieren
Sie können verwaltete Arbeitslastidentitäten für eine Compute-Instanz aktivieren, wenn Sie die Instanz erstellen oder die Konfiguration für eine vorhandene Instanz aktualisieren.
Instanzen mit aktivierten verwalteten Arbeitslastidentitäten erstellen
So erstellen Sie eine Compute-Instanz, um das Feature für verwaltete Arbeitslastidentitäten für die Instanz zu aktivieren:
- Wenn die Attestierung der Instanz für die Arbeitslastidentität auf einem Dienstkonto basiert, geben Sie dieses Dienstkonto an.
Fügen Sie die Flags
--identityund--identity-certificateein.
gcloud
Verwenden Sie den Befehl gcloud compute instances create, um eine neue Instanz zu erstellen.
Wenn Sie ein Dienstkonto für die Attestierung verwenden, geben Sie beim Erstellen der Instanz die Dienstkontoinformationen an.
Sie können dem Befehl zusätzliche Zeilen hinzufügen, um die Instanz zu konfigurieren, z. B. den Maschinentyp und das Image, anstatt die Standardwerte zu verwenden. Weitere Informationen finden Sie unter VM-Instanz erstellen und starten.
gcloud compute instances create INSTANCE_NAME \ --zone=INSTANCE_ZONE \ --service-account SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --identity=TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_IDENTIFIER \ --identity-certificate \ ...
Ersetzen Sie Folgendes:
INSTANCE_NAME: ein eindeutiger Name für die Instanz. Weitere Informationen zu gültigen Instanznamen finden Sie unter Ressourcen benennen.INSTANCE_ZONE: Die Zone, in der die Instanz erstellt wird.SERVICE_ACCOUNT_NAME: der Name des Dienstkontos, das die verwaltete Identität der Arbeitslast empfangen darf.PROJECT_ID: die ID des Projekts, in dem das Dienstkonto erstellt wurde.TRUST_DOMAIN: die ID für die Vertrauensdomäne im folgenden Format:$POOL_ID.global.$PROJECT_NUMBER.workload.id.goog
Für den Wert der Vertrauenswürdigkeitsdomain werden die folgenden Platzhalter verwendet:
POOL_ID: der Name des Workload Identity-PoolsPROJECT_NUMBER: die Projektnummer des Projekts, in dem der Workload Identity-Pool erstellt wurde
NAMESPACE: der Name des Namespace, der die Richtlinie zur Workload-Attestierung enthält, die die Workload autorisiert, eine verwaltete Workload Identity zu bestätigenWORKLOAD_IDENTIFIER: der Name der verwalteten Workload-Identität, die im Namespace des Workload Identity-Pools erstellt wurde
Aktivieren Sie die automatische Bereitstellung verwalteter Arbeitslastidentitäten mit dem Gast-Agent, indem Sie die Einstellung in der Konfigurationsdatei des Gast-Agents aktualisieren.
Verwaltete Arbeitslastidentitäten auf vorhandenen Instanzen aktivieren
Aktualisieren Sie die Instanz so, dass Folgendes konfiguriert wird, um verwaltete Arbeitslastidentitäten für eine vorhandene Compute-Instanz zu aktivieren:
- Wenn die Attestierung der Instanz für die Workload Identity auf einem Dienstkonto basiert und die Instanz noch kein angehängtes Dienstkonto hat, erstellen Sie ein Dienstkonto und hängen Sie es an die Instanz an.
- Aktivieren Sie das Feature mit dem Flag
--identity-certificateund geben Sie mit dem Flag--identityan, welche verwaltete Arbeitslastidentität verwendet werden soll. Starten Sie die VM neu.
gcloud
Verwenden Sie den Befehl gcloud compute instances update, um die Konfiguration für eine Instanz zu aktualisieren.
Wenn an die Instanz noch kein Dienstkonto angehängt ist, hängen Sie das Dienstkonto an die Instanz an.
Aktualisieren Sie die Konfiguration für eine vorhandene Instanz, um verwaltete Arbeitslastidentitäten zu aktivieren.
gcloud compute instances update INSTANCE_NAME \ --zone=ZONE \ --identity-certificate \ --identity=TRUST_DOMAIN/ns/NAMESPACE/sa/WORKLOAD_IDENTIFIER
Ersetzen Sie Folgendes:
INSTANCE_NAME: der Name der InstanzZONE: die Zone, in der sich die Instanz befindet.TRUST_DOMAIN: die ID für die Vertrauensdomäne im folgenden Format:none $POOL_ID.global.$PROJECT_NUMBER.workload.id.goog
Für den Wert der Vertrauensdomäne werden die folgenden Platzhalter verwendet: *
POOL_ID: der Name des Workload Identity-Pools *PROJECT_NUMBER: die Projektnummer des Projekts, in dem der Workload Identity-Pool erstellt wurde +NAMESPACE: der Name des Namespace, der die Workload-Attestierungsrichtlinie enthält, die die Arbeitslast autorisiert, eine verwaltete Workload-Identität zu bestätigen +WORKLOAD_IDENTIFIER: der Name der verwalteten Workload-Identität, die im Namespace des Workload Identity-Pools erstellt wurdeAktivieren Sie die automatische Bereitstellung verwalteter Arbeitslastidentitäten mit dem Gast-Agent, indem Sie die Einstellung in der Konfigurationsdatei des Gast-Agents aktualisieren.
Halten Sie die VM an.
gcloud compute instances stop INSTANCE_NAME \ --zone=ZONE
Ersetzen Sie Folgendes:
INSTANCE_NAME: der Name der InstanzZONE: die Zone, in der sich die Instanz befindet.
Starten Sie die VM.
gcloud compute instances start INSTANCE_NAME \ --zone=ZONE
Ersetzen Sie Folgendes:
INSTANCE_NAME: der Name der InstanzZONE: die Zone, in der sich die Instanz befindet.
Zugriff auf Anmeldedaten für Arbeitslasten auf einer Linux-VM
Nachdem Sie eine Compute-Instanz erstellt und gestartet haben, die verwaltete Arbeitslastidentitäten verwendet, wird die Rotation der Anmeldedaten für die Instanz automatisch von der Google Cloud -Infrastruktur (einschließlich des Gast-Agents) bereitgestellt und verwaltet.
Die Arbeitslastzertifikate, einschließlich des privaten Schlüssels und der Vertrauens-Bundles, werden in einem bestimmten Verzeichnis im Dateisystem der VM platziert: /var/run/secrets/workload-spiffe-credentials. Anwendungen können die Zertifikate, den privaten Schlüssel und das Vertrauens-Bundle direkt aus dem Dateisystem lesen, um mTLS-Verbindungen herzustellen.
Der Compute Engine-Gast-Agent im Gastbetriebssystem führt einen Aktualisierungsjob für die Arbeitslast aus und erstellt bei Bedarf das Verzeichnis /var/run/secrets/workload-spiffe-credentials. Die Verzeichnisberechtigungen sind auf 0755 (rwxr-xr-x) festgelegt.
Das Verzeichnis enthält die folgenden Dateien, die mit 0644 (rw-r--r--)-Berechtigungen erstellt wurden:
private_key.pem: Ein privater Schlüssel im PEM-Formatcertificates.pem: Ein Bundle von X.509-Zertifikaten im PEM-Format, das anderen VMs als Clientzertifikatskette präsentiert oder als Serverzertifikatskette verwendet werden kann.ca_certificates.pem: Ein Bundle von X.509-Zertifikaten im PEM-Format, die als Vertrauensanker beim Validieren der Zertifikate von Peers verwendet werden.spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.googconfig_status: Eine Logdatei mit Fehlermeldungen.
Anmeldedaten und Vertrauens-Bundle aktualisieren
Die Compute Engine-Steuerungsebene rotiert automatisch die Anmeldedaten für verwaltete Arbeitslastidentitäten und die Vertrauensanker regelmäßig.
Wenn Ihre Anwendungen über das Dateisystem auf die Anmeldedaten und das Vertrauens-Bundle für die Arbeitslast zugreifen, aktualisiert der Compute Engine-Gastagent die Anmeldedaten und das Vertrauens-Bundle automatisch, z. B. wenn die mTLS-Zertifikate rotiert werden.
Konfiguration für Zertifikatsausstellung und Vertrauen aktualisieren
Sie können die Konfiguration der Zertifikatsausstellung und der Vertrauenskonfiguration für eine VM ändern, die verwaltete Arbeitslastidentitäten verwendet.
Workload Identity-Pool-Konfigurationen für eine Gruppe von VMs aktualisieren
Wenn Sie die Konfiguration der Zertifikatsausstellung und der Vertrauenskonfiguration für eine Gruppe von VMs aktualisieren möchten, aktualisieren Sie den Workload Identity-Pool. Verwenden Sie den Befehl gcloud iam workload-identity-pools update wie im folgenden Beispiel:
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: Die ID des Workload Identity-Pools.CIC_JSON_FILE_PATH: Der Pfad zur neuen JSON-formatierten Konfigurationsdatei für die Zertifikatausstellung (cic.json).TC_JSON_FILE_PATH: Optional: Der Pfad zur neuen Vertrauenskonfigurationsdatei im JSON-Format (tc.json). Wenn Ihre Arbeitslasten über verschiedene Vertrauensbereiche hinweg authentifiziert werden, müssen Sie diese Datei angeben. Andernfalls können Sie die Einstellung--inline-trust-configweglassen.PROJECT_ID: Der Name Ihres Google Cloud -Projekts.
Aktualisierungen der Konfiguration der Zertifikatsausstellung und der Vertrauenskonfiguration des Workload Identity-Pools werden nach und nach auf die Compute Engine-VMs und MIGs ausgerollt, die am Workload Identity-Pool teilnehmen.
Fehlerbehebung
Methoden zur Diagnose und Behebung häufiger Fehler beim Abrufen von Anmeldedaten für Arbeitslasten finden Sie in der Dokumentation zur Fehlerbehebung bei der Authentifizierung von Arbeitslasten.
Informationen zur Fehlerbehebung bei falsch konfigurierten Pools oder Attestierungsrichtlinien finden Sie in den Audit-Logs für Workload Identity-Pools.
Nächste Schritte
- Weitere Informationen zu den folgenden Konzepten: