Autentikasi untuk Terraform

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

Kredensial Default Aplikasi (ADC) adalah cara yang disarankan untuk mengotentikasi ke Google Cloud saat menggunakan Terraform. ADC adalah strategi yang digunakan oleh perpustakaan otentikasi untuk menemukan kredensial berdasarkan lingkungan aplikasi. Bila Anda menggunakan ADC, Terraform dapat berjalan di lingkungan pengembangan atau produksi tanpa mengubah cara otentikasi ke layanan dan API Google Cloud. Untuk informasi tentang di mana ADC mencari dan urutannya, lihat Cara Kredensial Default Aplikasi berfungsi.

Melakukan autentikasi saat menggunakan Terraform di lingkungan pengembangan lokal

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

Mengautentikasi dengan Akun Google

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

  1. Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

    gcloud init
  2. Buat kredensial autentikasi lokal untuk Akun Google Anda:

    gcloud auth application-default login

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

Mengautentikasi menggunakan akun eksternal

Guna mengonfigurasi ADC untuk akun pengguna yang dikelola oleh penyedia identitas eksternal:

  1. Konfigurasi Workforce Identity Federation.

  2. Mengonfigurasi gcloud CLI untuk menggunakan Workforce Identity Federation.

  3. Konfigurasikan ADC dengan menjalankan perintah berikut:

    gcloud auth application-default login

    Layar login akan muncul. Setelah login, kredensial Anda akan disimpan di 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 harus memiliki Service Account Token Creator (roles/iam.serviceAccountTokenCreator) Peran IAM di akun layanan yang Anda tiru. Untuk informasi selengkapnya, lihat Wajib diisi peran.

  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 impersonate_service_account di file konfigurasi Terraform Anda:

provider "google" {
  impersonate_service_account = "SERVICE_ACCT_EMAIL"
}

Melakukan autentikasi saat menjalankan Terraform di Google Cloud

Saat menjalankan Terraform pada pengembangan berbasis cloud Google Cloud seperti Cloud Shell, alat ini menggunakan kredensial yang Anda berikan ketika Anda masuk untuk otentikasi.

Saat menggunakan Terraform dengan layanan Google Cloud seperti Compute Engine, App Engine dan Cloud Run, Anda dapat menghubungkan layanan yang dikelola pengguna akun ke resource. Umumnya, menambahkan akun layanan didukung jika resource layanan tersebut dapat dijalankan atau menyertakan kode aplikasi. Saat Anda memasang akun layanan ke resource, kode yang berjalan pada resource bisa menggunakan akun layanan itu 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 membantu menentukan peran yang perlu Anda berikan ke akun layanan, lihat Memilih peran bawaan.

Untuk mengetahui informasi tentang resource mana yang dapat ditambahi akun layanan, dan Bantuan untuk melampirkan akun layanan ke resource, lihat Dokumentasi IAM tentang melampirkan layanan menggunakan akun layanan.

Menyiapkan autentikasi:

  1. Buat akun layanan:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Ganti SERVICE_ACCOUNT_NAME dengan nama untuk akun layanan.

  2. 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
  3. Untuk memberikan peran lain ke akun layanan, jalankan perintah seperti yang Anda lakukan di langkah sebelumnya.
  4. Memberi Akun Google Anda peran yang memungkinkan Anda menggunakan peran akun layanan dan tambahkan akun layanan tersebut 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 Anda

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

Jika Anda menjalankan aplikasi di luar Google Cloud, Anda perlu memberikan kredensial yang dikenali oleh Google Cloud untuk digunakan layanan Google Cloud tertentu.

Melakukan Autentikasi menggunakan Workload Identity Federation

Cara yang lebih disukai untuk melakukan autentikasi dengan Google Cloud menggunakan kredensial dari IdP eksternal adalah menggunakan Workload Identity Federation. Anda dapat membuat file konfigurasi kredensial dan menyetel GOOGLE_APPLICATION_CREDENTIALS untuk mengarah ke variabel tersebut. Pendekatan ini lebih aman daripada membuat kunci akun layanan. Untuk petunjuk tentang 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 infrastruktur lokal, atau penyedia cloud lain, Anda bisa membuat akun layanan, Peran IAM yang diperlukan aplikasi Anda, dan membuat kunci untuk akun layanan.

Untuk membuat kunci akun layanan dan menyediakannya bagi ADC:

  1. Membuat akun layanan dengan peran yang dibutuhkan aplikasi Anda, dan sebuah kunci untuk akun layanan tersebut, dengan mengikuti petunjuk di Membuat kunci akun layanan.

    Tetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS ke jalur file JSON yang berisi kredensial Anda. Variabel ini hanya berlaku untuk sesi shell Anda saat ini. Jadi, jika Anda membuka sesi baru, tetapkan variabel kembali.

Melakukan autentikasi ke backend Cloud Storage

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

Langkah selanjutnya