Dokumen ini menjelaskan cara melindungi data sensitif yang ingin Anda tentukan untuk tugas Batch menggunakan secret Secret Manager.
Secret Secret Manager melindungi data sensitif melalui enkripsi. Dalam tugas Batch, Anda dapat menentukan satu atau beberapa secret yang ada untuk meneruskan data sensitif yang dikandungnya dengan aman, yang dapat Anda gunakan untuk melakukan hal berikut:
Tentukan dengan aman variabel lingkungan kustom yang berisi data sensitif.
Tentukan kredensial login untuk Docker Registry secara aman agar tugas yang dapat dijalankan 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 tentukan dengan aman untuk suatu tugas.
-
Untuk mendapatkan izin yang diperlukan untuk membuat tugas, minta administrator 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 akun layanan tugas peran IAM Secret Manager Secret Accessor (
roles/secretmanager.secretAccessor
) pada secret.
Meneruskan data sensitif dengan aman ke variabel lingkungan kustom
Untuk meneruskan data sensitif dari secret Secret Manager ke variabel lingkungan kustom dengan aman, Anda harus menentukan setiap variabel lingkungan di subkolom variabel secret (secretVariables
) untuk lingkungan dan menentukan secret untuk setiap nilai.
Setiap kali 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 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 secret di lingkungan untuk semua yang dapat dijalankan, 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. Sesuai dengan konvensi, nama variabel lingkungan menggunakan 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 project Anda.SECRET_NAME
: nama secret Secret Manager yang ada.VERSION
: versi secret yang ditentukan yang berisi data yang ingin Anda teruskan ke tugas. 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 secret di lingkungan untuk semua yang dapat dijalankan, 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 secret. Sesuai dengan konvensi, nama variabel lingkungan menggunakan 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 secret Secret Manager yang ada.VERSION
: versi secret yang ditentukan yang berisi data yang ingin Anda teruskan ke tugas. Ini dapat berupa nomor versi ataulatest
.
Java
Node.js
Python
Mengakses image container yang memerlukan kredensial registry Docker dengan aman
Untuk menggunakan image container dari registry Docker pribadi, aplikasi yang dapat dijalankan harus
menentukan kredensial login yang memungkinkannya mengakses registry Docker tersebut.
Secara khusus, untuk setiap penampung 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 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, bukan menentukan kolom ini secara langsung.
Setiap kali 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 registry Docker pribadi menggunakan gcloud CLI atau Batch API. Contoh berikut menjelaskan cara membuat tugas yang menggunakan image penampung dari registry Docker pribadi dengan menentukan nama pengguna secara langsung dan sandi sebagai secret.
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 penampung lainnya, Anda juga harus menyertakannya.USERNAME
: nama pengguna untuk registry Docker pribadi, yang dapat ditentukan sebagai secret atau langsung.PASSWORD
: sandi untuk registry Docker pribadi, yang dapat ditentukan sebagai secret (direkomendasikan) atau secara langsung.Misalnya, untuk menentukan sandi sebagai secret, tetapkan
PASSWORD
ke hal berikut: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. 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 penampung 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 penampung lainnya, Anda juga harus menyertakannya.USERNAME
: nama pengguna untuk registry Docker pribadi, yang dapat ditentukan sebagai secret atau langsung.PASSWORD
: sandi untuk registry Docker pribadi, yang dapat ditentukan sebagai secret (direkomendasikan) atau secara langsung.Misalnya, untuk menentukan sandi sebagai secret, tetapkan
PASSWORD
ke hal berikut: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. 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 pembuatan tugas lainnya.