Dokumen ini menjelaskan cara melindungi data sensitif yang ingin Anda tentukan untuk tugas Batch menggunakan secret Secret Manager.
Rahasia Secret Manager melindungi data sensitif melalui enkripsi. Dalam tugas Batch, Anda dapat menentukan satu atau beberapa secret yang ada untuk meneruskan data sensitif yang ada di dalamnya dengan aman, yang dapat Anda gunakan untuk melakukan hal berikut:
Tentukan variabel lingkungan kustom yang berisi data sensitif dengan aman.
Tentukan kredensial login dengan aman untuk Docker Registry agar dapat menjalankan tugas 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 rahasia atau identifikasi rahasia untuk data sensitif yang ingin Anda tentukan dengan aman untuk tugas.
-
Untuk mendapatkan izin yang Anda perlukan guna membuat tugas, minta administrator untuk memberi Anda peran IAM berikut:
-
Batch Job Editor (
roles/batch.jobsEditor
) pada project -
Service Account User (
roles/iam.serviceAccountUser
) pada akun layanan tugas, yang secara default merupakan akun layanan Compute Engine default
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
-
Batch Job Editor (
-
Untuk memastikan bahwa akun layanan tugas memiliki izin yang diperlukan untuk mengakses secret, minta administrator Anda untuk memberikan peran IAM Secret Manager Secret Accessor (
roles/secretmanager.secretAccessor
) kepada akun layanan tugas tersebut.
Meneruskan data sensitif ke variabel lingkungan kustom dengan aman
Untuk meneruskan data sensitif dengan aman dari secret Secret Manager ke variabel lingkungan kustom, Anda harus menentukan setiap variabel lingkungan di subkolom variabel secret (secretVariables
) untuk lingkungan dan menentukan secret untuk setiap nilai.
Setiap kali menetapkan secret dalam tugas, Anda harus memformatnya sebagai jalur ke versi secret: projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION
.
Anda dapat membuat tugas yang menetapkan variabel secret menggunakan gcloud CLI atau Batch API.
Contoh berikut menjelaskan cara membuat tugas yang menentukan dan menggunakan variabel secret untuk lingkungan semua runnable (subkolom environment
dari taskSpec
).
gcloud
Buat file JSON yang menentukan detail konfigurasi tugas dan sertakan subkolom
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 secret. Berdasarkan konvensi, nama variabel lingkungan ditulis dengan huruf besar.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 tempat Anda menentukan variabel secret.
PROJECT_ID
: project ID dari project Anda.SECRET_NAME
: nama rahasia Secret Manager yang ada.VERSION
: versi dari secret yang ditentukan yang berisi data yang ingin Anda teruskan ke tugas. Nomor 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 subkolom 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 dari project Anda.LOCATION
: lokasi tugas.JOB_NAME
: nama tugas.SECRET_VARIABLE_NAME
: nama variabel secret. Berdasarkan konvensi, nama variabel lingkungan ditulis dengan huruf besar.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 tempat Anda menentukan variabel secret.
SECRET_NAME
: nama rahasia Secret Manager yang ada.VERSION
: versi dari secret yang ditentukan yang berisi data yang ingin Anda teruskan ke tugas. Nomor ini dapat berupa nomor versi ataulatest
.
Mengakses image container dengan aman yang memerlukan kredensial registry Docker
Untuk menggunakan image container dari registry Docker pribadi, runnable harus menentukan kredensial login agar dapat mengakses registry Docker tersebut.
Khususnya, untuk setiap container yang dapat dijalankan dengan
kolom URI gambar (imageUri
)
yang ditetapkan ke image dari registry Docker pribadi, Anda harus menentukan
kredensial yang diperlukan untuk mengakses registry Docker tersebut menggunakan
kolom nama pengguna (username
) dan
kolom sandi (password
).
Anda dapat melindungi kredensial sensitif apa pun untuk registry Docker dengan menentukan secret yang ada dan berisi informasi tersebut, bukan menentukan kolom ini secara langsung.
Setiap kali menetapkan 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 registry Docker pribadi menggunakan gcloud CLI atau Batch API. Contoh berikut menjelaskan cara membuat tugas yang menggunakan image container dari registry Docker pribadi dengan menentukan nama pengguna dan sandi sebagai rahasia secara langsung.
gcloud
Buat file JSON yang menentukan detail konfigurasi tugas. Untuk setiap container yang dapat dijalankan yang menggunakan image dari registry Docker pribadi, sertakan kredensial yang diperlukan untuk mengaksesnya di kolom
username
danpassword
.Misalnya, untuk membuat tugas container 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 penampung lain, 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 menetapkan sandi sebagai rahasia, tetapkan
PASSWORD
ke kode berikut:projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION
Ganti kode berikut:
PROJECT_ID
: project ID dari project Anda.SECRET_NAME
: nama rahasia Secret Manager yang ada.VERSION
: versi dari secret yang ditentukan yang berisi data yang ingin Anda teruskan ke tugas. Nomor 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 container yang dapat dijalankan 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 dari 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 penampung lain, 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 menetapkan sandi sebagai rahasia, tetapkan
PASSWORD
ke kode berikut:projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION
Ganti kode berikut:
PROJECT_ID
: project ID dari project Anda.SECRET_NAME
: nama rahasia Secret Manager yang ada.VERSION
: versi dari secret yang ditentukan yang berisi data yang ingin Anda teruskan ke tugas. Nomor ini dapat berupa nomor versi ataulatest
.
Langkah selanjutnya
Jika Anda mengalami masalah saat membuat atau menjalankan tugas, lihat Pemecahan masalah.
Pelajari variabel lingkungan lebih lanjut.
Pelajari Secret Manager lebih lanjut.
Pelajari opsi penciptaan pekerjaan lainnya.