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:
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
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:
Konfigurasikan gcloud CLI untuk menggunakan Workforce Identity Federation.
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.
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.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:
-
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAME
with a name for the service account. -
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 accountPROJECT_ID
: the project ID where you created the service accountROLE
: the role to grant
- To grant another role to the service account, run the command as you did in the previous step.
-
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 accountPROJECT_ID
: the project ID where you created the service accountUSER_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:
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
- Ikuti panduan memulai Terraform untuk Google Cloud
- Pelajari perintah Terraform dasar.