Dokumen ini menjelaskan cara melindungi data sensitif yang ingin Anda tentukan untuk tugas Batch menggunakan secret Secret Manager.
Secret Manager secrets melindungi data sensitif melalui enkripsi. Dalam tugas Batch, Anda dapat menentukan satu atau beberapa secret yang ada untuk meneruskan data sensitif yang dikandungnya secara aman, yang dapat Anda gunakan untuk melakukan berikut:
Tentukan variabel lingkungan kustom yang berisi data sensitif dengan aman.
Tentukan kredensial login untuk Docker Registry secara aman agar runnable tugas dapat mengakses image container pribadinya.
Sebelum memulai
- Jika belum pernah menggunakan Batch, baca Mulai menggunakan Batch dan aktifkan Batch dengan menyelesaikan prasyarat untuk project dan pengguna.
- Buat secret atau identifikasi secret untuk data sensitif yang ingin Anda tetapkan dengan aman untuk tugas.
-
Untuk mendapatkan izin yang Anda perlukan untuk membuat tugas, minta administrator Anda untuk memberi Anda peran IAM berikut:
-
Batch Job Editor (
roles/batch.jobsEditor
) di project -
Pengguna Akun Layanan (
roles/iam.serviceAccountUser
) di akun layanan tugas, yang secara default adalah akun layanan Compute Engine default
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
-
Batch Job Editor (
-
Untuk memastikan akun layanan tugas memiliki izin yang diperlukan untuk mengakses secret, minta administrator untuk memberikan peran IAM Secret Manager Secret Accessor (
roles/secretmanager.secretAccessor
) kepada akun layanan tugas di secret.
Meneruskan data sensitif dengan aman ke variabel lingkungan kustom
Untuk meneruskan data sensitif dari secret Secret Manager ke variabel lingkungan kustom secara aman, Anda harus menentukan setiap variabel lingkungan di sub-bidang secret variables (secretVariables
) untuk lingkungan dan menentukan secret untuk setiap nilai.
Setiap kali Anda menentukan secret dalam tugas, Anda harus memformatnya sebagai jalur
ke versi secret:
projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION
.
Anda dapat membuat tugas yang menentukan variabel rahasia
menggunakan gcloud CLI, Batch API, Java, Node.js, atau Python.
Contoh berikut menjelaskan cara membuat tugas yang
menentukan dan menggunakan variabel rahasia untuk
lingkungan semua runnable (subbidang environment
dari taskSpec
).
gcloud
Buat file JSON yang menentukan detail konfigurasi tugas dan sertakan sub-bidang
secretVariables
untuk satu atau beberapa lingkungan.Misalnya, untuk membuat tugas skrip dasar yang menggunakan variabel rahasia di lingkungan untuk semua runnable, buat file JSON dengan konten berikut:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo This is the secret: ${SECRET_VARIABLE_NAME}" } } ], "environment": { "secretVariables": { "{SECRET_VARIABLE_NAME}": "projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION" } } } } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Ganti kode berikut:
SECRET_VARIABLE_NAME
: nama variabel rahasia. Berdasarkan konvensi, nama variabel lingkungan ditulis dengan huruf kapital.Untuk mengakses data sensitif dengan aman dari secret Secret Manager variabel, tentukan nama variabel ini dalam runnable tugas ini. Variabel secret dapat diakses oleh semua runnable yang berada di lingkungan yang sama dengan tempat Anda menentukan variabel secret.
PROJECT_ID
: project ID project Anda.SECRET_NAME
: nama secret Secret Manager yang ada.VERSION
: versi secret yang ditentukan yang berisi data yang ingin Anda teruskan ke tugas. Nilai ini dapat berupa nomor versi ataulatest
.
Untuk membuat dan menjalankan tugas, gunakan perintah
gcloud batch jobs submit
:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Ganti kode berikut:
JOB_NAME
: nama tugas.LOCATION
: lokasi tugas.JSON_CONFIGURATION_FILE
: jalur untuk file JSON dengan detail konfigurasi tugas.
API
Buat permintaan POST
ke
metode jobs.create
yang menentukan sub-bidang secretVariables
untuk satu atau beberapa lingkungan.
Misalnya, untuk membuat tugas skrip dasar yang menggunakan variabel rahasia di lingkungan untuk semua runnable, buat permintaan berikut:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo This is the secret: ${SECRET_VARIABLE_NAME}"
}
}
],
"environment": {
"secretVariables": {
"{SECRET_VARIABLE_NAME}": "projects/PROJECT_ID/secrets/SECRET_NAME/versions/VERSION"
}
}
}
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Ganti kode berikut:
PROJECT_ID
: project ID project Anda.LOCATION
: lokasi tugas.JOB_NAME
: nama tugas.SECRET_VARIABLE_NAME
: nama variabel rahasia. Berdasarkan konvensi, nama variabel lingkungan ditulis dengan huruf kapital.Untuk mengakses data sensitif dengan aman dari secret Secret Manager variabel, tentukan nama variabel ini dalam runnable tugas ini. Variabel secret dapat diakses oleh semua runnable yang berada di lingkungan yang sama dengan tempat Anda menentukan variabel secret.
SECRET_NAME
: nama secret Secret Manager yang ada.VERSION
: versi secret yang ditentukan yang berisi data yang ingin Anda teruskan ke tugas. Nilai ini dapat berupa nomor versi ataulatest
.
Java
Node.js
Python
Mengakses image container yang memerlukan kredensial Docker Registry secara aman
Untuk menggunakan image container dari registry Docker pribadi, yang dapat dijalankan harus menentukan kredensial login yang memungkinkannya mengakses registry Docker tersebut.
Secara khusus, untuk setiap container yang dapat dijalankan dengan
kolom URI image (imageUri
)
yang ditetapkan ke image dari registry Docker pribadi, Anda harus menentukan kredensial
yang diperlukan untuk mengakses registry Docker tersebut dengan menggunakan
kolom nama pengguna (username
) dan
kolom sandi (password
).
Anda dapat melindungi kredensial sensitif apa pun untuk registry Docker dengan menentukan secret yang ada yang berisi informasi tersebut, bukan menentukan kolom ini secara langsung.
Setiap kali Anda menentukan secret dalam tugas, Anda harus memformatnya sebagai jalur
ke versi secret:
projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION
.
Anda dapat membuat tugas yang menggunakan image container dari Docker registry pribadi dengan menggunakan gcloud CLI atau Batch API. Contoh berikut menjelaskan cara membuat tugas yang menggunakan image container dari registry Docker pribadi dengan menentukan nama pengguna secara langsung dan sandi sebagai rahasia.
gcloud
Buat file JSON yang menentukan detail konfigurasi tugas. Untuk setiap runnable container yang menggunakan image dari registry Docker pribadi, sertakan kredensial yang diperlukan untuk mengaksesnya di kolom
username
danpassword
.Misalnya, untuk membuat tugas penampung dasar yang menentukan image dari registry Docker pribadi, buat file JSON dengan konten berikut:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "PRIVATE_IMAGE_URI", "commands": [ "-c", "echo This runnable uses a private image." ], "username": "USERNAME", "password": "PASSWORD" } } ], } } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Ganti kode berikut:
PRIVATE_IMAGE_URI
: URI image untuk image container dari registry Docker pribadi. Jika image ini memerlukan setelan container lainnya, Anda juga harus menyertakannya.USERNAME
: nama pengguna untuk registry Docker pribadi, yang dapat ditentukan sebagai rahasia atau secara langsung.PASSWORD
: sandi untuk registry Docker pribadi, yang dapat ditentukan sebagai rahasia (direkomendasikan) atau secara langsung.Misalnya, untuk menentukan sandi sebagai secret, setel
PASSWORD
ke berikut ini:projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION
Ganti kode berikut:
PROJECT_ID
: project ID project Anda.SECRET_NAME
: nama secret Secret Manager yang ada.VERSION
: versi secret yang ditentukan yang berisi data yang ingin Anda teruskan ke tugas. Nilai ini dapat berupa nomor versi ataulatest
.
Untuk membuat dan menjalankan tugas, gunakan perintah
gcloud batch jobs submit
:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Ganti kode berikut:
JOB_NAME
: nama tugas.LOCATION
: lokasi tugas.JSON_CONFIGURATION_FILE
: jalur untuk file JSON dengan detail konfigurasi tugas.
API
Buat permintaan POST
ke metode jobs.create
.
Untuk setiap runnable container yang menggunakan image dari registry Docker pribadi, sertakan kredensial yang diperlukan untuk mengaksesnya di kolom username
dan password
.
Misalnya, untuk membuat tugas container dasar yang menentukan image dari registry Docker pribadi, buat permintaan berikut:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "PRIVATE_IMAGE_URI",
"commands": [
"-c",
"echo This runnable uses a private image."
],
"username": "USERNAME",
"password": "PASSWORD"
}
}
],
}
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Ganti kode berikut:
PROJECT_ID
: project ID project Anda.LOCATION
: lokasi tugas.JOB_NAME
: nama tugas.PRIVATE_IMAGE_URI
: URI image untuk image container dari registry Docker pribadi. Jika image ini memerlukan setelan container lainnya, Anda juga harus menyertakannya.USERNAME
: nama pengguna untuk registry Docker pribadi, yang dapat ditentukan sebagai rahasia atau secara langsung.PASSWORD
: sandi untuk registry Docker pribadi, yang dapat ditentukan sebagai rahasia (direkomendasikan) atau secara langsung.Misalnya, untuk menentukan sandi sebagai secret, setel
PASSWORD
ke berikut ini:projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION
Ganti kode berikut:
PROJECT_ID
: project ID project Anda.SECRET_NAME
: nama secret Secret Manager yang ada.VERSION
: versi secret yang ditentukan yang berisi data yang ingin Anda teruskan ke tugas. Nilai ini dapat berupa nomor versi ataulatest
.
Langkah berikutnya
Jika Anda mengalami masalah saat membuat atau menjalankan tugas, lihat Pemecahan masalah.
Pelajari lebih lanjut variabel lingkungan.
Pelajari lebih lanjut Secret Manager.
Pelajari lebih lanjut opsi pembuatan tugas.