Arbeitslasten über mTLS bei anderen Arbeitslasten authentifizieren

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 verwendet werden, um mTLS-Verbindungen herzustellen.

Hinweis

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 Arbeitslastidentitätszertifikate für die Authentifizierung bei anderen Arbeitslasten verwenden:

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 mTLS. 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 erhalten, die auf Schlüsselattributen wie der Instanz-ID, dem Instanznamen oder dem angehängten Dienstkonto basiert. Damit die Arbeitslasten attestiert 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. Die TRUST_DOMAIN entspricht einem Workload Identity-Pool von Identity and Access Management (IAM).

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 erhält, 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:

  1. Sicherheitsadministrator:

  2. Compute Administrator:

Verwaltete Arbeitslastidentitäten in Identity and Access Management konfigurieren

  • Folgen Sie der Anleitung unter Authentifizierung von verwalteten Arbeitslastidentitäten konfigurieren .

    Diese Anleitung beschreibt, wie Sie die folgenden Schritte ausführen:

    • Erstellen Sie einen Workload Identity-Pool.
    • Erstellen Sie Namespaces im Workload Identity-Pool. Mit den Namespaces erstellen Sie administrative Grenzen für Ihre verwalteten Arbeitslastidentitäten, 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 in diesem Namespace verwaltete Identitäten für die Microservices 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 so, dass Zertifikate für verwaltete Arbeitslastidentitäten ausgestellt werden:
      • Konfigurieren Sie den Stamm-CA-Pool.
      • Konfigurieren Sie die untergeordneten CAs.
      • Autorisieren Sie den verwalteten Workload Identity-Pool, 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 --identity, --identity-type und --identity-certificate ein.

gcloud

Verwenden Sie den gcloud alpha compute instances create Befehl um eine neue Instanz zu erstellen.

  1. Wenn Sie ein Dienstkonto für die Attestierung verwenden, geben Sie die Dienstkontoinformationen beim Erstellen der Instanz 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 alpha 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-type=IDENTITY_TYPE \
       --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 Arbeitslast Identität erhalten darf.
    • PROJECT_ID: die ID des Projekts, in dem das Dienstkonto erstellt wurde.
    • TRUST_DOMAIN: die ID für die Vertrauensdomain, im folgenden Format:
        $POOL_ID.global.$PROJECT_NUMBER.workload.id.goog
        

      Für den Wert der Vertrauensdomain 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 Richtlinie zur Arbeitslastattestierung enthält, mit der die Arbeitslast autorisiert wird, eine verwaltete Arbeitslastidentität zu bestätigen
    • WORKLOAD_IDENTIFIER: der Name der verwalteten Arbeitslastidentität, die im Namespace des Workload Identity-Pools erstellt wurde
    • IDENTITY_TYPE: das Format der Identität, mit dem Wert `SERVICE_ACCOUNT` oder `WORKLOAD_IDENTITY`

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 Arbeitslastidentität 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-certificate und geben Sie mit dem Flag --identity an, welche verwaltete Arbeitslastidentität verwendet werden soll.
  • Starten Sie die VM neu.

gcloud

Verwenden Sie den gcloud alpha compute instances update Befehl zum Aktualisieren der Konfiguration für eine Instanz.

  1. Wenn die Instanz noch kein angehängtes Dienstkonto hat, hängen Sie das Dienstkonto an die Instanz an.

  2. Aktualisieren Sie die Konfiguration für eine vorhandene Instanz, um verwaltete Arbeitslastidentitäten zu aktivieren.

    gcloud alpha 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 Instanz
    • ZONE: die Zone, in der sich die Instanz befindet.
    • TRUST_DOMAIN: die ID für die Vertrauensdomain im folgenden Format: none $POOL_ID.global.$PROJECT_NUMBER.workload.id.goog

    Für den Wert der Vertrauensdomain 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 Richtlinie zur Arbeitslastattestierung enthält, mit der die Arbeitslast autorisiert wird, eine verwaltete Arbeitslastidentität zu bestätigen + WORKLOAD_IDENTIFIER: der Name der verwalteten Arbeitslastidentität, die im Namespace des Workload Identity-Pools erstellt wurde

  3. Halten Sie die VM an.

    gcloud alpha compute instances stop INSTANCE_NAME \
       --zone=ZONE
    

    Ersetzen Sie Folgendes:

    • INSTANCE_NAME: der Name der Instanz
    • ZONE: die Zone, in der sich die Instanz befindet.
  4. Starten Sie die VM.

    gcloud alpha compute instances start INSTANCE_NAME \
       --zone=ZONE
    

    Ersetzen Sie Folgendes:

    • INSTANCE_NAME: der Name der Instanz
    • ZONE: 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, stellt die Google Cloud Infrastruktur (einschließlich des Gast-Agents) automatisch die Anmeldedaten für die Instanz bereit und verwaltet deren Rotation.

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 Arbeitslastaktualisierungsjob 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 den Berechtigungen 0644 (rw-r--r--) erstellt wurden:

  • private_key.pem: ein privater Schlüssel im PEM-Format
  • certificates.pem: ein Paket von X.509-Zertifikaten im PEM-Format, die für andere VMs als Clientzertifikatskette bereitgestellt oder als Serverzertifikatskette verwendet werden können.
  • ca_certificates.pem: ein Paket von X.509-Zertifikaten im PEM-Format, die als Trust-Anchors verwendet werden können, wenn Sie die Zertifikate von Peers prüfen.

    spiffe://POOL_ID.global.PROJECT_NUMBER.workload.id.goog
    
  • config_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-Gast-Agent die Anmeldedaten und das Vertrauens-Bundle automatisch, z. B. wenn die mTLS-Zertifikate rotiert werden.

Konfiguration der Zertifikatsausstellung und der Vertrauensstellung aktualisieren

Sie können die Konfiguration der Zertifikatsausstellung und der Vertrauenskonfiguration für eine VM ändern, die verwaltete Arbeitslastidentitäten verwendet.

Einzelne Compute Engine-VMs aktualisieren

Wenn Sie die Konfiguration der Zertifikatsausstellung und der Vertrauensstellung aktualisieren möchten, aktualisieren Sie den Workload Identity-Pool. Verwenden Sie den gcloud alpha iam workload-identity-pools update Befehl, wie im folgenden Beispiel gezeigt:

gcloud alpha 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 Zertifikatsausstellung (cic.json)
  • TC_JSON_FILE_PATH: optional: der Pfad zur neuen JSON-formatierten Konfigurationsdatei für die Vertrauensstellung (tc.json). Wenn Ihre Arbeitslasten über verschiedene Vertrauensdomains hinweg authentifiziert werden, müssen Sie diese Datei angeben. Andernfalls können Sie die Einstellung --inline-trust-config weglassen.
  • PROJECT_ID: der Name Ihres Google Cloud Projekts

Fehlerbehebung

Methoden zum Diagnostizieren und Beheben häufiger Fehler im Zusammenhang mit dem Abrufen von Anmeldedaten für Arbeitslasten finden Sie in der Dokumentation 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