Authentifizierung für Terraform

In diesem Dokument wird beschrieben, wie Sie sich bei Google Cloud authentifizieren, wenn Sie Terraform verwenden.

Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) sind die empfohlene Methode zur Authentifizierung beiGoogle Cloud , wenn Sie Terraform verwenden. ADC ist eine Strategie, die von den Google-Authentifizierungsbibliotheken verwendet wird, um Anmeldedaten automatisch basierend auf der Anwendungsumgebung zu finden. Wenn Sie ADC verwenden, kann Terraform in einer Entwicklungs- oder Produktionsumgebung ausgeführt werden, ohne dass sich die Authentifizierung beiGoogle Cloud -Diensten und APIs ändert. Informationen dazu, wo ADC nach Anmeldedaten sucht und in welcher Reihenfolge dies geschieht, finden Sie unter Funktionsweise von Standardanmeldedaten für Anwendungen.

Authentifizierung bei der Verwendung von Terraform in einer lokalen Entwicklungsumgebung

Wenn Sie Terraform in einer lokalen Entwicklungsumgebung verwenden, z. B. auf einer Entwicklungs-Workstation, können Sie sich mit den Anmeldedaten authentifizieren, die mit Ihrem Nutzerkonto oder Dienstkonto verknüpft sind.

Mit einem Nutzerkonto authentifizieren

Verwenden Sie die Google Cloud CLI, um ADC mit einem Nutzerkonto zu konfigurieren:

  1. Installieren Sie die Google Cloud CLI. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:

    gcloud init

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

  2. Wenn Sie eine lokale Shell verwenden, erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Nutzerkonto:

    gcloud auth application-default login

    Wenn Sie Cloud Shell verwenden, müssen Sie das nicht tun.

    Wenn ein Authentifizierungsfehler zurückgegeben wird und Sie einen externen Identitätsanbieter (IdP) verwenden, prüfen Sie, ob Sie sich mit Ihrer föderierten Identität in der gcloud CLI angemeldet haben.

    Ein Anmeldebildschirm wird angezeigt. Nach der Anmeldung werden Ihre Anmeldedaten in der lokalen Anmeldedatendatei für ADC gespeichert.

Mit Dienstkonto-Identitätsübernahme authentifizieren

Sie können die Identitätsübernahme des Dienstkontos verwenden, um eine lokale ADC-Datei einzurichten. Terraform verwendet diese Anmeldedaten automatisch.

  1. Sie benötigen die IAM-Rolle Dienstkonto-Token-Ersteller (roles/iam.serviceAccountTokenCreator) für das Dienstkonto, dessen Identität Sie übernehmen. Weitere Informationen finden Sie unter Erforderliche Rollen.

  2. Verwenden Sie die Identitätsübernahme des Dienstkontos, um eine lokale ADC-Datei zu erstellen. Führen Sie dazu folgenden Befehl aus:

    gcloud auth application-default login --impersonate-service-account SERVICE_ACCT_EMAIL
    

Wenn Sie Nutzern erlauben möchten, eine gemeinsame primäre Authentifizierungsquelle und ein variables Dienstkonto pro Umgebung zu verwenden, legen Sie das Feld impersonate_service_account in Ihrer Terraform-Konfigurationsdatei fest:

provider "google" {
  impersonate_service_account = "SERVICE_ACCT_EMAIL"
}

Authentifizierung beim Ausführen von Terraform auf Google Cloud

Wenn Sie Terraform in einer cloudbasierten Entwicklungsumgebung wie Cloud Shell ausführen, verwendet das Tool die bei der Anmeldung angegebenen Anmeldedaten für die Authentifizierung. Google Cloud

Wenn Sie Terraform mit Google Cloud -Diensten wie Compute Engine, App Engine und Cloud Run-Funktionen verwenden, können Sie Ressourcen ein nutzerverwaltetes Dienstkonto zuweisen. Im Allgemeinen wird das Anhängen eines Dienstkontos unterstützt, wenn die Ressourcen dieses Dienstes ausgeführt oder Anwendungscode enthalten können. Wenn Sie ein Dienstkonto an eine Ressource anhängen, kann der Code, der auf der Ressource ausgeführt wird, dieses Dienstkonto als Identität verwenden.

Zum Anhängen von Anmeldedaten an ADC für den in Google Cloudausgeführten Produktionscode sollten Sie das Anhängen eines nutzerverwalteten Dienstkontos bevorzugen.

Informationen zum Ermitteln der Rollen, die Sie für Ihr Dienstkonto bereitstellen müssen, finden Sie unter Vordefinierte Rollen auswählen.

Informationen dazu, welche Ressourcen Sie an ein Dienstkonto anhängen können, und Hilfe beim Anhängen des Dienstkontos an die Ressource finden Sie in der IAM-Dokumentation zum Anhängen eines Dienstkontos.

Richten Sie die Authentifizierung ein:

  1. Sie benötigen die IAM-Rolle „Dienstkonten erstellen“ (roles/iam.serviceAccountCreator) und die IAM-Rolle „Projekt-IAM-Administrator“ (roles/resourcemanager.projectIamAdmin). Informationen zum Zuweisen von Rollen
  2. Erstellen Sie das Dienstkonto:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Ersetzen Sie SERVICE_ACCOUNT_NAME mit einem Namen für das Dienstkonto.

  3. Um Zugriff auf Ihr Projekt und Ihre Ressourcen zu gewähren, weisen Sie dem Dienstkonto eine Rolle zu:

    gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE

    Dabei gilt:

    • SERVICE_ACCOUNT_NAME: der Name des Dienstkontos
    • PROJECT_ID: die Projekt-ID, unter der Sie das Dienstkonto erstellt haben
    • ROLE: die zu gewährende Rolle
  4. Führen Sie den Befehl wie schon im vorherigen Schritt aus, um dem Dienstkonto eine weitere Rolle zuzuweisen.
  5. Weisen Sie dem Hauptkonto, das das Dienstkonto an andere Ressourcen anhängt, die erforderliche Rolle zu.

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

    Ersetzen Sie Folgendes:

    • SERVICE_ACCOUNT_NAME: der Name des Dienstkontos
    • PROJECT_ID: die Projekt-ID, unter der Sie das Dienstkonto erstellt haben
    • USER_EMAIL: die E-Mail-Adresse für ein Google-Konto

Authentifizierung beim Ausführen von Terraform lokal oder bei einem anderen Cloud-Anbieter

Wenn Sie Ihre Anwendung außerhalb von Google Cloudausführen, müssen Sie Anmeldedaten angeben, die von Google Cloud erkannt werden, umGoogle Cloud -Dienste zu verwenden.

Mit der Identitätsföderation von Arbeitslasten authentifizieren

Die bevorzugte Methode zur Authentifizierung bei Google Cloud mit Anmeldedaten eines externen Identitätsanbieters ist die Verwendung der Workload Identity-Föderation. Sie können eine Konfigurationsdatei für Anmeldedaten erstellen und die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS darauf verweisen lassen. Dieser Ansatz ist sicherer als das Erstellen eines Dienstkontoschlüssels. Eine Anleitung zum Einrichten der Workload Identity-Föderation für ADC finden Sie unter Workload Identity-Föderation mit anderen Clouds.

Mit Dienstkontoschlüsseln authentifizieren

Wenn Sie Terraform in einer lokalen Entwicklungsumgebung, vor Ort oder bei einem anderen Cloud-Anbieter ausführen, können Sie ein Dienstkonto erstellen, ihm die für Ihre Anwendung erforderlichen IAM-Rollen zuweisen und einen Schlüssel für das Dienstkonto erstellen.

So erstellen Sie einen Dienstkontoschlüssel und stellen ihn für ADC bereit:

  1. Erstellen Sie ein Dienstkonto mit den Rollen, die Ihre Anwendung benötigt, sowie einen Schlüssel für dieses Dienstkonto. Folgen Sie dazu der Anleitung unter Dienstkontoschlüssel erstellen.

Bei Cloud Storage-Back-Ends authentifizieren

Mit Terraform können Sie Cloud Storage als Backend zum Speichern von Terraform-Zustandsdateien konfigurieren. Verwenden Sie eine der auf dieser Seite beschriebenen Methoden, um sich bei einem Cloud Storage-Backend zu authentifizieren. Informationen zu Konfigurationsvariablen für die Authentifizierung für Cloud Storage-Back-Ends finden Sie auf der Seite Terraform-Back-Ends für Cloud Storage.

Nächste Schritte