Autentikasi untuk Terraform

Dokumen ini menjelaskan cara melakukan autentikasi ke Google Cloud saat menggunakan Terraform.

Kredensial Default Aplikasi (ADC) adalah cara yang direkomendasikan untuk melakukan autentikasi ke Google Cloud saat menggunakan Terraform. ADC adalah strategi yang digunakan oleh library autentikasi untuk menemukan kredensial secara otomatis berdasarkan lingkungan aplikasi. Saat Anda menggunakan ADC, Terraform dapat berjalan di lingkungan pengembangan atau produksi tanpa mengubah cara Terraform melakukan autentikasi ke layanan dan API Google Cloud. Untuk informasi tentang tempat ADC mencari kredensial dan urutannya, lihat Cara kerja Kredensial Default Aplikasi.

Melakukan autentikasi saat menggunakan Terraform di lingkungan pengembangan lokal

Saat menggunakan Terraform di lingkungan pengembangan lokal, seperti workstation pengembangan, Anda dapat melakukan autentikasi menggunakan kredensial yang terkait dengan akun pengguna atau akun layanan.

Mengautentikasi dengan Akun Google

Untuk mengonfigurasi ADC dengan Akun Google, gunakan Google Cloud CLI:

  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.

    Layar login akan muncul. Setelah Anda login, kredensial Anda disimpan dalam file kredensial lokal yang digunakan oleh ADC.

Mengautentikasi menggunakan akun eksternal

Untuk mengonfigurasi ADC bagi akun pengguna yang dikelola oleh penyedia identitas eksternal:

  1. Konfigurasi Workforce Identity Federation.

  2. Konfigurasikan gcloud CLI untuk menggunakan Workforce Identity Federation.

  3. Konfigurasikan ADC dengan menjalankan perintah berikut:

    gcloud auth application-default login

    Layar login akan muncul. Setelah Anda login, kredensial Anda disimpan dalam file kredensial lokal yang digunakan oleh ADC.

Mengautentikasi menggunakan peniruan akun layanan

Anda dapat menggunakan peniruan akun layanan untuk menyiapkan file ADC lokal. Terraform menggunakan kredensial tersebut secara otomatis.

  1. Pastikan Anda memiliki peran IAM Service Account Token Creator (roles/iam.serviceAccountTokenCreator) di akun layanan yang sedang Anda tiru. Untuk informasi selengkapnya, lihat Peran yang diperlukan.

  2. Gunakan peniruan akun layanan untuk membuat file ADC lokal dengan menjalankan perintah berikut:

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

Jika Anda ingin mengizinkan pengguna menggunakan sumber autentikasi utama bersama dan akun layanan variabel per lingkungan, tetapkan kolom impersonate_service_account dalam file konfigurasi Terraform:

provider "google" {
  impersonate_service_account = "SERVICE_ACCT_EMAIL"
}

Mengautentikasi saat menjalankan Terraform di Google Cloud

Saat menjalankan Terraform di lingkungan pengembangan berbasis cloud Google Cloud seperti Cloud Shell, alat ini menggunakan kredensial yang Anda berikan saat login untuk autentikasi.

Saat menggunakan Terraform dengan layanan Google Cloud seperti Compute Engine, App Engine, dan fungsi Cloud Run, Anda dapat melampirkan akun layanan yang dikelola pengguna ke resource. Umumnya, pemberian akun layanan didukung jika resource layanan tersebut dapat berjalan atau menyertakan kode aplikasi. Saat Anda melampirkan akun layanan ke resource, kode yang berjalan pada resource tersebut dapat menggunakan akun layanan tersebut sebagai identitasnya.

Melampirkan akun layanan yang dikelola pengguna adalah cara yang lebih disukai untuk memberikan kredensial ke ADC bagi kode produksi yang berjalan di Google Cloud.

Untuk mendapatkan bantuan dalam menentukan peran yang perlu Anda berikan ke akun layanan, lihat Memilih peran bawaan.

Untuk informasi tentang resource mana yang dapat Anda lampirkan dengan akun layanan, dan bantuan terkait pelampiran akun layanan ke resource, lihat dokumentasi IAM tentang cara melampirkan akun layanan.

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

Melakukan autentikasi saat menjalankan Terraform di lokal atau di penyedia cloud lain

Jika menjalankan aplikasi di luar Google Cloud, Anda harus memberikan kredensial yang dikenali oleh Google Cloud untuk menggunakan layanan Google Cloud.

Mengautentikasi menggunakan Workload Identity Federation

Cara yang lebih disukai untuk mengautentikasi dengan Google Cloud menggunakan kredensial dari IdP eksternal adalah dengan menggunakan Workload Identity Federation. Anda dapat membuat file konfigurasi kredensial dan menetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS agar mengarah ke file tersebut. Pendekatan ini lebih aman daripada membuat kunci akun layanan. Untuk petunjuk menyiapkan Workload Identity Federation untuk ADC, lihat Workload Identity Federation dengan cloud lain.

Mengautentikasi menggunakan kunci akun layanan

Saat menjalankan Terraform di lingkungan pengembangan lokal, di lokal, atau penyedia cloud lain, Anda dapat membuat akun layanan, memberinya peran IAM yang diperlukan aplikasi, dan membuat kunci untuk akun layanan.

Untuk membuat kunci akun layanan dan menyediakannya bagi ADC:

  1. Buat akun layanan dengan peran yang dibutuhkan aplikasi Anda, serta kunci untuk akun layanan tersebut, dengan mengikuti petunjuk dalam Membuat kunci akun layanan.

    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.

Melakukan autentikasi ke backend Cloud Storage

Terraform memungkinkan Anda mengonfigurasi Cloud Storage sebagai backend untuk menyimpan file status Terraform. Untuk mengautentikasi ke backend Cloud Storage, gunakan salah satu metode yang dijelaskan di halaman ini. Untuk informasi tentang variabel konfigurasi yang terkait dengan autentikasi untuk backend Cloud Storage, lihat halaman backend Terraform untuk Cloud Storage.

Langkah selanjutnya