Authentifizierung für Terraform

In diesem Dokument wird beschrieben, wie Sie sich bei der Verwendung von Terraform bei Google Cloud authentifizieren.

Standardanmeldedaten für Anwendungen (ADC) ist die empfohlene Methode zur Authentifizierung bei Google 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 entweder in einer Entwicklungs- oder Produktionsumgebung ausgeführt werden, ohne dass sich die Authentifizierung bei Google 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.

Bei Verwendung von Terraform in einer lokalen Entwicklungsumgebung authentifizieren

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

Mit einem Google-Konto authentifizieren

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

  1. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init
  2. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

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

Mit einem externen Konto authentifizieren

So konfigurieren Sie ADC für ein Nutzerkonto, das von einem externen Identitätsanbieter verwaltet wird:

  1. Mitarbeiteridentitätsföderation konfigurieren.

  2. Konfigurieren Sie die gcloud CLI für die Verwendung der Mitarbeiteridentitätsföderation.

  3. Konfigurieren Sie ADC mit dem folgenden Befehl:

    gcloud auth application-default login

    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ät 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ät des Dienstkontos, um eine lokale ADC-Datei zu erstellen. Führen Sie dazu den 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 in Google Cloud

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

Wenn Sie Terraform mit Google Cloud-Diensten wie Compute Engine, App Engine und Cloud Run verwenden, können Sie ein nutzerverwaltetes Dienstkonto an Ressourcen anhängen. 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 Cloud ausgefü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.

Set up authentication:

  1. Create the service account:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Replace SERVICE_ACCOUNT_NAME with a name for the service account.

  2. To provide access to your project and your resources, grant a role to the service account:

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

    Replace the following:

    • SERVICE_ACCOUNT_NAME: the name of the service account
    • PROJECT_ID: the project ID where you created the service account
    • ROLE: the role to grant
  3. To grant another role to the service account, run the command as you did in the previous step.
  4. Grant the required role to the principal that will attach the service account to other resources.

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

    Replace the following:

    • SERVICE_ACCOUNT_NAME: the name of the service account
    • PROJECT_ID: the project ID where you created the service account
    • USER_EMAIL: the email address for a Google Account

Authentifizieren, wenn Terraform lokal oder bei einem anderen Cloud-Anbieter ausgeführt wird

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

Mit der Identitätsföderation von Arbeitslasten authentifizieren

Die bevorzugte Methode zur Authentifizierung bei Google Cloud mit Anmeldedaten eines externen IdP 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, lokal oder bei einem anderen Cloud-Anbieter ausführen, können Sie ein Dienstkonto erstellen, ihm die erforderlichen IAM-Rollen für Ihre Anwendung 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.

    Set the environment variable GOOGLE_APPLICATION_CREDENTIALS to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again.

Bei Cloud Storage-Backends 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 Terraform-Back-End-Seite für Cloud Storage.

Nächste Schritte