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 grandi organizzazioni, potrebbe essere necessario utilizzare un account di servizio per eseguire software che imponga una configurazione corretta della coda.
L'idea generale è quella di separare gli utenti e le altre entità in tre categorie:
- Amministratori coda: gli utenti di questo gruppo sono autorizzati a chiamare
metodi di gestione delle code di Cloud Tasks o per caricare
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 l'estrazione dalle code delle attività. Non sono autorizzati a chiamare i metodi di gestione delle code di Cloud Tasks.
- Deployment di App Engine: per i progetti che includono app di App Engine, gli utenti in
Questo gruppo dispone dell'autorizzazione
per eseguire il deployment dell'app. Non sono autorizzati a
caricare file
queue.yaml
o effettuare chiamate API Cloud Tasks, consentendo così gli amministratori della coda per 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 di 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 piccoli progetti e le piccole organizzazioni possono assegnare ruoli IAM (Identity and Access Management) direttamente agli utenti per inserirli nei gruppi precedenti. Questo ha senso team che preferiscono la semplicità di configurazione o che configurano le code manualmente le modifiche o i deployment delle app di App Engine.
Aggiungi utenti a questi gruppi nel seguente modo:
Amministratore coda
In qualità di amministratore del progetto, concedi il ruolo
cloudtasks.queueAdmin
agli utenti autorizzati a eseguire chiamate all'API di gestione della coda 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 ci sono molti utenti autorizzati a interagire con Cloud Tasks, puoi Assegna i ruoli agli account di servizio anziché 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 autorizzati a interagire con Cloud Tasks senza 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 ruoli agli utenti autorizzati a eseguire il deployment di App Engine app, ma a cui non è consentito modificare la configurazione della coda o 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'email dell'utente membro
In qualità di utente con i ruoli concessi in precedenza, esegui il deployment di un'app App Engine.
gcloud app deploy app.yaml
Organizzazioni e progetti di grandi dimensioni
I progetti e le organizzazioni di grandi dimensioni possono utilizzare gli account di servizio per separare doveri e responsabilità. Questo ha senso per i team con problemi dell'infrastruttura per modificare la configurazione delle code e magari anche il deployment le app di 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ù in merito sequenza, vedi Utilizzare la simulazione dell'identità degli account di servizio nella documentazione sull'autenticazione di Google Cloud.
Seguono le istruzioni per la configurazione di 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 selettivamente la rappresentazione del ruolo "Amministratore code" all'account di servizio è stato creato.
Di solito dovrebbe trattarsi di un piccolo gruppo di entità che agiscono come coda Google Workspace for Education. Concedi a queste entità
iam.serviceAccountTokenCreator
nel ruolo "Amministratore code" 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
Worker 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 ruoli all'account di servizio in modo che possa interagire con Cloud Tasks senza 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 ruoli all'account di servizio in modo che possa eseguire il deployment delle app di App Engine, non
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 selettivamente la rappresentazione del " Deployer App Engine" account di servizio che hai creato.
Per le entità che eseguono il deployment dei servizi App Engine, concedi la classe
iam.serviceAccountTokenCreator
nel ruolo "Deployer App Engine" che hai creato. Per scoprire come, consulta Concedere o revocare un singolo ruolo nella documentazione di IAM.
Limitazione dell'accesso a singole code
Se un progetto contiene più code e vuoi limitare l'accesso a singole
code, puoi utilizzare i criteri IAM a livello di coda anziché
a livello di progetto. Per limitare l'accesso per coda, utilizza
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
: posizione della codaPROJECT_ID
: l'ID del progetto
Passaggi successivi
- Account di servizio
- 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