Questo documento descrive come proteggere i dati sensibili che vuoi specificare per un job batch utilizzando i secret di Secret Manager.
I segreti di Secret Manager proteggono i dati sensibili tramite la crittografia. In un job batch, puoi specificare uno o più secret esistenti per trasmettere in modo sicuro i dati sensibili che contengono, che puoi utilizzare per quanto segue:
Definisci in modo sicuro le variabili di ambiente personalizzate che contengono dati sensibili.
Specifica in modo sicuro le credenziali di accesso per un Docker Registry per consentire ai runnable di un job di accedere alle sue immagini container private.
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta la sezione Guida introduttiva a Batch e attiva Batch completando i prerequisiti per progetti e utenti.
- Crea un secret o identifica un secret per i dati sensibili che vuoi specificare in modo sicuro per un job.
-
Per ottenere le autorizzazioni necessarie per creare un job, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Batch Job Editor (
roles/batch.jobsEditor
) sul progetto -
Utente service account (
roles/iam.serviceAccountUser
) sul service account del job, che per impostazione predefinita è il service account Compute Engine predefinito
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
-
Batch Job Editor (
-
Per assicurarti che il account di servizio del job disponga delle autorizzazioni necessarie per accedere ai secret, chiedi all'amministratore di concedere al account di servizio del job il ruolo IAM Secret Manager Secret Accessor (
roles/secretmanager.secretAccessor
) sul secret.
Trasferire in modo sicuro i dati sensibili alle variabili di ambiente personalizzate
Per trasmettere in modo sicuro i dati sensibili dai secret di Secret Manager alle variabili di ambiente personalizzate, devi definire ogni variabile di ambiente nel campo secondario Variabili secret (secretVariables
) per un ambiente e specificare un secret per ogni valore.
Ogni volta che specifichi un secret in un job, devi formattarlo come percorso
a una versione del secret:
projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION
.
Puoi creare un job che definisce variabili secret
utilizzando gcloud CLI, l'API Batch, Java, Node.js o Python.
L'esempio seguente spiega come creare un job che definisce e utilizza una variabile secret per l'ambiente di tutti i runnable (campo secondario environment
di taskSpec
).
gcloud
Crea un file JSON che specifichi i dettagli di configurazione del job e includi il campo secondario
secretVariables
per uno o più ambienti.Ad esempio, per creare un job di script di base che utilizza una variabile secret nell'ambiente per tutti i runnable, crea un file JSON con i seguenti contenuti:
{ "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" } }
Sostituisci quanto segue:
SECRET_VARIABLE_NAME
: il nome della variabile secret. Per convenzione, i nomi variabile di ambiente sono in maiuscolo.Per accedere in sicurezza ai dati sensibili del secret Secret Manager della variabile, specifica il nome di questa variabile nei componenti eseguibili del job. La variabile secret è accessibile a tutti i runnable che si trovano nello stesso ambiente in cui definisci la variabile secret.
PROJECT_ID
: l'ID progetto del tuo progetto.SECRET_NAME
: il nome di un secret Secret Manager esistente.VERSION
: la versione del secret specificato che contiene i dati che vuoi trasferire al job. Può essere il numero di versione olatest
.
Per creare ed eseguire il job, utilizza il comando
gcloud batch jobs submit
:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Sostituisci quanto segue:
JOB_NAME
: il nome del job.LOCATION
: la sede del lavoro.JSON_CONFIGURATION_FILE
: il percorso di un file JSON con i dettagli di configurazione del job.
API
Invia una richiesta POST
al
metodo jobs.create
che specifica il campo secondario secretVariables
per uno o più ambienti.
Ad esempio, per creare un job di script di base che utilizza una variabile secret nell'ambiente per tutti gli eseguibili, invia la seguente richiesta:
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"
}
}
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto del tuo progetto.LOCATION
: la sede del lavoro.JOB_NAME
: il nome del job.SECRET_VARIABLE_NAME
: il nome della variabile secret. Per convenzione, i nomi variabile di ambiente sono in maiuscolo.Per accedere in sicurezza ai dati sensibili del secret Secret Manager della variabile, specifica il nome di questa variabile nei componenti eseguibili del job. La variabile secret è accessibile a tutti i runnable che si trovano nello stesso ambiente in cui definisci la variabile secret.
SECRET_NAME
: il nome di un secret Secret Manager esistente.VERSION
: la versione del secret specificato che contiene i dati che vuoi trasferire al job. Può essere il numero di versione olatest
.
Java
Node.js
Python
Accedere in modo sicuro alle immagini container che richiedono le credenziali del registro Docker
Per utilizzare un'immagine container da un registro Docker privato, un eseguibile deve specificare le credenziali di accesso che gli consentono di accedere a questo registro Docker.
Nello specifico, per qualsiasi container eseguibile con il
campo URI immagine (imageUri
)
impostato su un'immagine di un registro Docker privato, devi specificare le
credenziali richieste per accedere a quel registro Docker utilizzando i
campi nome utente (username
) e
password (password
).
Puoi proteggere qualsiasi credenziale sensibile per un registro Docker specificando
i secret esistenti che contengono le informazioni anziché definire questi
campi direttamente.
Ogni volta che specifichi un secret in un job, devi formattarlo come percorso
a una versione del secret:
projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION
.
Puoi creare un job che utilizza immagini container da un registro Docker privato utilizzando gcloud CLI o l'API Batch. L'esempio seguente spiega come creare un job che utilizza un'immagine container da un registro Docker privato specificando direttamente il nome utente e la password come secret.
gcloud
Crea un file JSON che specifichi i dettagli di configurazione del job. Per tutti i container eseguibili che utilizzano immagini di un registro Docker privato, includi le credenziali necessarie per accedervi nei campi
username
epassword
.Ad esempio, per creare un job container di base che specifica un'immagine da un registro Docker privato, crea un file JSON con i seguenti contenuti:
{ "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" } }
Sostituisci quanto segue:
PRIVATE_IMAGE_URI
: l'URI dell'immagine per un'immagine container da un registro Docker privato. Se questa immagine richiede altre impostazioni del container, devi includerle.USERNAME
: il nome utente per il registro Docker privato, che può essere specificato come secret o direttamente.PASSWORD
: la password per il registro Docker privato, che può essere specificata come secret (consigliato) o direttamente.Ad esempio, per specificare la password come secret, imposta
PASSWORD
come segue:projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto del tuo progetto.SECRET_NAME
: il nome di un secret Secret Manager esistente.VERSION
: la versione del secret specificato che contiene i dati che vuoi trasferire al job. Può essere il numero di versione olatest
.
Per creare ed eseguire il job, utilizza il comando
gcloud batch jobs submit
:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Sostituisci quanto segue:
JOB_NAME
: il nome del job.LOCATION
: la sede del lavoro.JSON_CONFIGURATION_FILE
: il percorso di un file JSON con i dettagli di configurazione del job.
API
Invia una richiesta POST
al metodo jobs.create
.
Per tutti i container eseguibili che utilizzano immagini di un registro Docker privato, includi le credenziali necessarie per accedervi nei campi username
e password
.
Ad esempio, per creare un job container di base che specifica un'immagine da un registro Docker privato, invia la seguente richiesta:
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"
}
}
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto del tuo progetto.LOCATION
: la sede del lavoro.JOB_NAME
: il nome del job.PRIVATE_IMAGE_URI
: l'URI dell'immagine per un'immagine container da un registro Docker privato. Se questa immagine richiede altre impostazioni del container, devi includerle.USERNAME
: il nome utente per il registro Docker privato, che può essere specificato come secret o direttamente.PASSWORD
: la password per il registro Docker privato, che può essere specificata come secret (consigliato) o direttamente.Ad esempio, per specificare la password come secret, imposta
PASSWORD
come segue:projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto del tuo progetto.SECRET_NAME
: il nome di un secret Secret Manager esistente.VERSION
: la versione del secret specificato che contiene i dati che vuoi trasferire al job. Può essere il numero di versione olatest
.
Passaggi successivi
Se hai problemi a creare o eseguire un job, consulta la sezione Risoluzione dei problemi.
Scopri di più sulle variabili di ambiente.
Scopri di più su Secret Manager.
Scopri di più sulle opzioni di creazione dei job.