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 autentikasinya ke layanan dan APIGoogle Cloud . Untuk mengetahui informasi tentang tempat ADC mencari kredensial dan urutannya, lihat Cara kerja Kredensial Default Aplikasi.

Mengautentikasi 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 menggunakan akun pengguna

Untuk mengonfigurasi ADC dengan akun pengguna, Anda menggunakan Google Cloud CLI:

  1. Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:

    gcloud init

    Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  2. Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:

    gcloud auth application-default login

    Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.

    Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.

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

Melakukan autentikasi 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 Anda tiru. Untuk mengetahui 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 Anda:

provider "google" {
  impersonate_service_account = "SERVICE_ACCT_EMAIL"
}

Mengautentikasi saat menjalankan Terraform di Google Cloud

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

Saat menggunakan Terraform dengan layanan Google Cloud seperti Compute Engine, App Engine, dan Cloud Run Functions, Anda dapat melampirkan akun layanan yang dikelola pengguna ke resource. Umumnya, pelampiran akun layanan didukung jika resource layanan tersebut dapat menjalankan 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 Anda, lihat Memilih peran bawaan.

Untuk mengetahui 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.

Menyiapkan autentikasi:

  1. Pastikan Anda memiliki peran IAM Create Service Accounts (roles/iam.serviceAccountCreator) dan peran IAM Project IAM Admin (roles/resourcemanager.projectIamAdmin). Pelajari cara memberikan peran.
  2. Buat akun layanan:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Ganti SERVICE_ACCOUNT_NAME dengan nama untuk akun layanan.

  3. Untuk memberikan akses ke project dan resource Anda, berikan peran ke akun layanan:

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

    Ganti kode berikut:

    • SERVICE_ACCOUNT_NAME: nama dari akun layanan.
    • PROJECT_ID: project ID dimana Anda membuat akun layanan
    • ROLE: peran yang akan diberikan
  4. Untuk memberikan peran lain ke akun layanan, jalankan perintah seperti yang Anda lakukan di langkah sebelumnya.
  5. Berikan peran yang diperlukan ke akun utama yang akan melampirkan akun layanan ke resource lain.

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

    Ganti kode berikut:

    • SERVICE_ACCOUNT_NAME: nama dari akun layanan.
    • PROJECT_ID: project ID dimana Anda membuat akun layanan
    • USER_EMAIL: alamat email untuk Akun Google

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

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

Melakukan autentikasi menggunakan Workload Identity Federation

Cara yang lebih disukai untuk melakukan autentikasi 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 untuk menunjukkannya. Pendekatan ini lebih aman daripada membuat kunci akun layanan. Untuk mengetahui petunjuk tentang cara 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 lokasi, atau penyedia cloud yang berbeda, Anda dapat membuat akun layanan, memberikan peran IAM yang diperlukan aplikasi Anda, dan membuat kunci untuk akun layanan tersebut.

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.

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 mengetahui informasi tentang variabel konfigurasi terkait autentikasi untuk backend Cloud Storage, lihat halaman backend Terraform untuk Cloud Storage.

Langkah berikutnya