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:
-
Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:
gcloud init
-
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:
Mengonfigurasi gcloud CLI untuk menggunakan Workforce Identity Federation.
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.
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.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:
-
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAME
dengan nama untuk akun layanan. -
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 layananROLE
: peran yang akan diberikan
- Untuk memberikan peran lain ke akun layanan, jalankan perintah seperti yang Anda lakukan di langkah sebelumnya.
-
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 layananUSER_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:
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
- Pelajari panduan memulai Terraform for Google Cloud
- Pelajari perintah Terraform dasar.