Questa pagina fornisce suggerimenti per proteggere la creazione e la configurazione delle code. L'importante è limitare i metodi di gestione della coda a un piccolo gruppo di persone o enti. Per le organizzazioni di grandi dimensioni, potrebbe essere necessario utilizzare un account di servizio per eseguire software che imponga una configurazione corretta della coda.
L'idea generale è separare gli utenti e le altre entità in tre categorie:
- Amministratori coda: gli utenti di questo gruppo hanno l'autorizzazione a chiamare i metodi di gestione della coda di Cloud Tasks o a caricare file
queue.yaml
. Questo gruppo è limitato a un insieme di utenti molto piccolo per ridurre il rischio di sovrascrivere la configurazione della coda, in particolare mescolando inavvertitamente i metodi di gestione delle codequeue.yaml
e Cloud Tasks. - Utenti di Cloud Tasks: gli utenti di questo gruppo hanno l'autorizzazione per eseguire interazioni comuni con Cloud Tasks, ad esempio l'inserimento in coda e la rimozione dalle code delle attività. Non è consentito chiamare i metodi di gestione della coda di Cloud Tasks.
- App Engine Deployers: per i progetti con app App Engine, gli utenti di questo gruppo hanno l'autorizzazione a eseguire il deployment dell'app. Non è consentito caricare file
queue.yaml
o effettuare chiamate all'API Cloud Tasks, consentendo così agli amministratori della coda di applicare i criteri appropriati.
In questo schema, gli utenti che sono amministratori della coda non devono essere anche lavoratori Cloud Tasks, poiché ciò annullerebbe lo scopo della separazione.
Se il tuo progetto utilizza esclusivamente i metodi di gestione delle code Cloud Tasks, potrebbe anche essere opportuno che gli amministratori delle code non siano anche responsabili del deployment di App Engine, poiché questo consentirebbe il caricamento di un file queue.yaml
errato.
Piccoli progetti e organizzazioni
I progetti e le organizzazioni di piccole dimensioni possono assegnare ruoli IAM (Identity and Access Management) direttamente agli utenti per inserirli nei gruppi precedenti. Questa opzione è consigliata per i team che preferiscono la semplicità di configurazione o che apportano manualmente modifiche alla configurazione delle code o ai deployment delle app App Engine.
Aggiungi gli utenti a questi gruppi come segue:
Amministratore coda
In qualità di amministratore del progetto, concedi il ruolo
cloudtasks.queueAdmin
agli utenti autorizzati a eseguire chiamate all'API di gestione delle code Cloud Tasks o a caricare filequeue.yaml
.gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:EMAIL \ --role roles/cloudtasks.queueAdmin
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progettoEMAIL
: l'indirizzo email dell'utente membro
In qualità di utente con il ruolo
cloudtasks.queueAdmin
, seguendo le best practice riportate sopra, scegli uno dei seguenti metodi per modificare la configurazione della coda.Utilizza l'API Cloud Tasks per modificare la configurazione della coda.
Carica
queue.yaml
congcloud
:gcloud app deploy queue.yaml
Lavoratore Cloud Tasks
Poiché spesso sono molti gli utenti autorizzati a interagire con Cloud Tasks, puoi assegnare i ruoli agli account di servizio anziché ai singoli utenti. Questo tipo di utilizzo è comune in produzione. Per ulteriori informazioni, consulta Progetti e organizzazioni di grandi dimensioni.
In qualità di amministratore del progetto, concedi i ruoli agli utenti che possono interagire con Cloud Tasks, ma non modificare la configurazione della coda:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.enqueuer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.dequeuer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.taskRunner gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.taskDeleter
Sostituisci
PROJECT_ID
con l'ID del tuo progetto.
In qualità di utente con uno o più dei ruoli concessi sopra, puoi interagire con l'API Cloud Tasks.
Deployer App Engine
In qualità di amministratore del progetto, concedi i ruoli agli utenti che sono autorizzati a eseguire il deployment di app App Engine, ma che non sono autorizzati a modificare la configurazione della coda o a interagire con le attività:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:EMAIL \ --role roles/appengine.deployer gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:EMAIL \ --role roles/appengine.serviceAdmin gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:EMAIL \ --role roles/storage.admin
Sostituisci quanto segue:
PROJECT_ID
: l'ID del progettoEMAIL
: l'indirizzo email dell'utente membro
Come utente con i ruoli concessi sopra, esegui il deployment di un'app App Engine.
gcloud app deploy app.yaml
Progetti e organizzazioni di grandi dimensioni
I progetti e le organizzazioni di grandi dimensioni possono utilizzare gli account di servizio per separare doveri e responsabilità. Questa soluzione è adatta ai team con un'infrastruttura complessa per modificare la configurazione della coda e, forse, anche per eseguire il deployment di app App Engine.
Per rispettare il principio del privilegio minimo e semplificare la gestione dell'accesso, queste istruzioni utilizzano l'impersonificazione dell'account di servizio. Per scoprire di più su questo pattern, consulta Utilizzare l'account di servizio account nella documentazione sull'autenticazione di Google Cloud .
.Di seguito sono riportate le istruzioni per configurare questi account di servizio.
Amministratore coda
In qualità di amministratore del progetto, crea l'account di servizio.
gcloud iam service-accounts create queue-admin \ --display-name "Queue Admin"
Concedi il ruolo
cloudtasks.queueAdmin
all'account di servizio in modo che possa caricare i filequeue.yaml
ed eseguire chiamate all'API di gestione della coda Cloud Tasks.gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:queue-admin@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.queueAdmin
Sostituisci
PROJECT_ID
con l'ID del tuo progetto.Consenti in modo selettivo la rappresentazione dell'account di servizio "Amministratore coda" che hai creato.
Di solito si tratta di un piccolo gruppo di amministratori che agiscono come amministratori della coda. Concedi a questi principali il ruolo
iam.serviceAccountTokenCreator
nell'account di servizio "Amministratore coda" che hai creato. Per scoprire come, consulta Concedere o revocare un singolo ruolo nella documentazione di IAM.Seguendo le best practice descritte in Utilizzare Gestione delle code o queue.yaml, scegli uno dei seguenti metodi per modificare la configurazione della coda:
Utilizza Cloud Tasks per modificare la configurazione della coda.
Carica
queue.yaml
con gcloud CLI
Lavoratore Cloud Tasks
In qualità di amministratore del progetto, crea l'account di servizio.
gcloud iam service-accounts create cloud-tasks-worker \ --display-name "Cloud Tasks Worker"
Concedi i ruoli all'account di servizio in modo che possa interagire con Cloud Tasks, ma non modificare la configurazione della coda.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.enqueuer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.dequeuer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.taskRunner gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.taskDeleter
Sostituisci
PROJECT_ID
con l'ID del tuo progetto.Consenti in modo selettivo la simulazione dell'identità dell'account di servizio "Cloud Tasks Worker" che hai creato.
Per i principali che interagiscono con Cloud Tasks, concedi il ruolo
iam.serviceAccountTokenCreator
all'account di servizio "Cloud Tasks Worker" che hai creato. Per scoprire come, consulta Concedere o revocare un singolo ruolo nella documentazione di IAM.
Deployer App Engine
In qualità di amministratore del progetto, crea l'account di servizio.
gcloud iam service-accounts create app-engine-deployer \ --display-name "App Engine Deployer"
Concedi i ruoli all'account di servizio in modo che possa eseguire il deployment delle app App Engine, ma non di
queue.yaml
.gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:app-engine-deployer@PROJECT_ID.iam.gserviceaccount.com \ --role roles/appengine.deployer gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:app-engine-deployer@PROJECT_ID.iam.gserviceaccount.com \ --role roles/appengine.serviceAdmin gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:app-engine-deployer@PROJECT_ID.iam.gserviceaccount.com \ --role roles/storage.admin
Sostituisci
PROJECT_ID
con l'ID del tuo progetto.Consenti in modo selettivo la simulazione dell'identità dell'account di servizio "Deployer App Engine" che hai creato.
Per gli amministratori che eseguono il deployment dei servizi App Engine, concedi il ruolo
iam.serviceAccountTokenCreator
all'account di servizio "Deployer App Engine" che hai creato. Per scoprire come, consulta Concedere o revocare un singolo ruolo nella documentazione di IAM.
Limitare l'accesso a singole code
Se hai più code in un progetto e vuoi limitare l'accesso alle singole code, puoi utilizzare i criteri IAM a livello di coda anziché a livello di progetto. Per limitare l'accesso in base alla coda, utilizza il comando
gcloud tasks queues add-iam-policy-binding
. Ad esempio:
gcloud tasks queues add-iam-policy-binding QUEUE_NAME --location=LOCATION \ --member=serviceAccount:cloud-tasks-worker@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/cloudtasks.enqueuer
Sostituisci quanto segue:
QUEUE_NAME
: il nome della codaLOCATION
: la posizione della codaPROJECT_ID
: l'ID del progetto
Passaggi successivi
- Service account
- Informazioni sugli account di servizio
- Gestire l'accesso a progetti, cartelle e organizzazioni
- Creazione e gestione degli account di servizio
- Utilizzare la simulazione dell'identità degli account di servizio