Auf dieser Seite finden Sie Vorschläge zur Sicherung der Warteschlangenerstellung und -konfiguration. Ziel ist es, die Methoden zur Warteschlangenverwaltung auf eine kleine Gruppe von Personen oder Entitäten zu beschränken. Bei großen Unternehmen kann der Einsatz eines Dienstkontos notwendig sein, um Software auszuführen, die eine ordnungsgemäße Warteschlangenkonfiguration erzwingt.
Im Allgemeinen sollten Sie Nutzer und andere Entitäten in drei Kategorien einteilen:
- Warteschlangenadministratoren: Nutzer in dieser Gruppe dürfen Cloud Tasks-Methoden zur Warteschlangenverwaltung aufrufen und
queue.yaml
-Dateien hochladen. Diese Gruppe ist auf einige wenige Nutzer beschränkt, um zu vermeiden, dasqueue.yaml
und die Cloud Tasks-Methoden zur Warteschlangenverwaltung versehentlich gemeinsam verwendet werden. - Cloud Tasks-Worker: Nutzer in dieser Gruppe sind berechtigt, gängige Interaktionen mit Cloud Tasks auszuführen (z. B. Aufgaben in Warteschlangen zu stellen und daraus zu entfernen). Sie dürfen keine Cloud Tasks-Methoden zur Warteschlangenverwaltung aufrufen.
- App Engine-Bereitsteller: Bei Projekten mit App Engine-Anwendungen sind Nutzer dieser Gruppe zur Bereitstellung der Anwendung berechtigt. Sie sind nicht berechtigt,
queue.yaml
-Dateien hochzuladen oder Cloud Tasks API-Aufrufe auszuführen. So können die Warteschlangenadministratoren die richtigen Richtlinien erzwingen.
In diesem Schema sollten Nutzer, die Warteschlangenadministratoren sind, nicht gleichzeitig Cloud Tasks-Worker sein, da dies den Zweck der Trennung verfehlen würde.
Wenn in Ihrem Projekt ausschließlich Cloud Tasks-Methoden zur Warteschlangenverwaltung verwendet werden, wäre es außerdem sinnvoll, Warteschlangenadministratoren nicht gleichzeitig in die Gruppe der App Engine-Bereitsteller aufzunehmen, da sonst eine queue.yaml
-Datei fälschlicherweise hochgeladen werden könnte.
Kleine Projekte und Organisationen
In kleinen Projekten und Organisationen können Nutzern IAM-Rollen (Identity and Access Management) direkt zugeordnet werden, um sie in die oben genannten Gruppen einzuteilen. Dies ist für Teams sinnvoll, die einfache Konfigurationen vorziehen und Änderungen an der Warteschlangenkonfiguration oder Bereitstellungen von App Engine-Apps von Hand vornehmen.
So fügen Sie Nutzer zu diesen Gruppen hinzu:
Warteschlangenadministrator
Gewähren Sie als Projektadministrator Nutzern, die API-Aufrufe der Cloud Tasks-Warteschlangenverwaltung durchführen und
queue.yaml
-Dateien hochladen dürfen, die Rollecloudtasks.queueAdmin
.gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:EMAIL \ --role roles/cloudtasks.queueAdmin
Ersetzen Sie Folgendes:
PROJECT_ID
: die Projekt-IDEMAIL
: die E-Mail-Adresse des Mitgliedsnutzers
Wählen Sie als Nutzer mit der Rolle
cloudtasks.queueAdmin
gemäß den oben genannten Best Practices eine der folgenden Methoden zum Ändern der Warteschlangenkonfiguration aus.Ändern Sie die Warteschlangenkonfiguration in der Cloud Tasks API.
queue.yaml
mitgcloud
hochladen:gcloud app deploy queue.yaml
Cloud Tasks-Worker
Da häufig viele Nutzer mit Cloud Tasks interagieren dürfen, können Sie Dienstkonten anstelle von einzelnen Nutzern auch Rollen zuweisen. Das ist in der Produktion üblich. Weitere Informationen finden Sie unter Große Projekte und Organisationen.
Ordnen Sie als Projektadministrator Nutzern, die mit Cloud Tasks interagieren, aber die Warteschlangenkonfiguration nicht ändern dürfen, bestimmte Rollen zu:
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
Ersetzen Sie
PROJECT_ID
durch die ID Ihres Projekts.
Als Nutzer mit einer oder mehreren der oben zugewiesenen Rollen können Sie mit der Cloud Tasks API interagieren.
App Engine-Bereitsteller
Weisen Sie als Projektadministrator Nutzern, die App Engine-Anwendungen bereitstellen, aber keine Warteschlangenkonfiguration ändern und nicht mit Aufgaben interagieren dürfen, bestimmte Rollen zu:
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
Ersetzen Sie Folgendes:
PROJECT_ID
: die Projekt-IDEMAIL
: die E-Mail-Adresse des Mitgliedsnutzers
Stellen Sie als Nutzer mit den oben zugeordneten Rollen eine App Engine-Anwendung bereit.
gcloud app deploy app.yaml
Große Projekte und Organisationen
In großen Projekten und Organisationen können Dienstkonten genutzt werden, um Aufgaben und Verantwortlichkeiten zu trennen. Dies ist sinnvoll für Teams, die Bereitstellungen von App Engine-Anwendungen und Änderungen der Warteschlangenkonfiguration in einer komplexen Infrastruktur vornehmen.
Um dem Prinzip der geringsten Berechtigung zu folgen und die Zugriffsverwaltung zu vereinfachen, wird in dieser Anleitung die Identitätsübernahme des Dienstkontos verwendet. Weitere Informationen zu diesem Muster finden Sie in der Google Cloud-Authentifizierungsdokumentation unter Identitätsübernahme des Dienstkontos verwenden.
Im Folgenden finden Sie eine Anleitung zum Einrichten dieser Dienstkonten.
Warteschlangenadministrator
Erstellen Sie als Projektadministrator das Dienstkonto.
gcloud iam service-accounts create queue-admin \ --display-name "Queue Admin"
Weisen Sie dem Dienstkonto die Rolle
cloudtasks.queueAdmin
zu, damit es Dateien vom Typqueue.yaml
hochladen und API-Aufrufe für die Cloud Tasks-Warteschlangenverwaltung ausführen kann.gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:queue-admin@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.queueAdmin
Ersetzen Sie
PROJECT_ID
durch die ID Ihres Projekts.Übernahme der Identität des „Warteschlangenadministrators“ selektiv zulassen Dienstkonto, das Sie erstellt.
Dies sollte in der Regel eine kleine Gruppe von Hauptkonten sein, die als Warteschlange fungieren Administratoren. Weisen Sie diesen Hauptkonten die Rolle
iam.serviceAccountTokenCreator
für das von Ihnen erstellte Dienstkonto „Queue Admin“ zu. Eine Anleitung dazu finden Sie in der IAM-Dokumentation unter Einzelne Rolle zuweisen oder widerrufen.Wählen Sie gemäß den Best Practices unter Warteschlangenverwaltung oder queue.yaml verwenden eine der folgenden Methoden zum Ändern der Warteschlangenkonfiguration aus:
Ändern Sie die Warteschlangenkonfiguration mit Cloud Tasks.
queue.yaml
mit der gcloud CLI hochladen
Cloud Tasks-Worker
Erstellen Sie als Projektadministrator das Dienstkonto.
gcloud iam service-accounts create cloud-tasks-worker \ --display-name "Cloud Tasks Worker"
Ordnen Sie dem Dienstkonto Rollen zu, sodass es mit Cloud Tasks interagieren, aber die Warteschlangenkonfiguration nicht ändern kann.
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
Ersetzen Sie
PROJECT_ID
durch die ID Ihres Projekts.Erlauben Sie die Identitätsübertragung für das von Ihnen erstellte Dienstkonto „Cloud Tasks Worker“ selektiv.
Gewähren Sie Hauptkonten, die mit Cloud Tasks interagieren, die Berechtigung
iam.serviceAccountTokenCreator
Rolle für den „Cloud Tasks-Worker“ Dienstkonto, das Sie erstellt haben. Eine Anleitung dazu finden Sie in der IAM-Dokumentation unter Einzelne Rolle zuweisen oder widerrufen.
App Engine-Bereitsteller
Erstellen Sie als Projektadministrator das Dienstkonto.
gcloud iam service-accounts create app-engine-deployer \ --display-name "App Engine Deployer"
Weisen Sie dem Dienstkonto Rollen zu, sodass es App Engine-Anwendungen bereitstellen kann, jedoch nicht
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
Ersetzen Sie
PROJECT_ID
durch die ID Ihres Projekts.Erlauben Sie selektiv die Identitätsübernahme des von Ihnen erstellten Dienstkontos „App Engine-Bereitsteller“.
Weisen Sie den Hauptkonten, die App Engine-Dienste bereitstellen, die Rolle
iam.serviceAccountTokenCreator
für das von Ihnen erstellte Dienstkonto „App Engine-Bereitsteller“ zu. Weitere Informationen Wie, siehe Einzelne Rolle zuweisen oder widerrufen in der IAM-Dokumentation.
Zugriff auf einzelne Warteschlangen beschränken
Wenn Sie in einem Projekt mehrere Warteschlangen haben und den Zugriff auf einzelne Nutzer beschränken möchten,
können Sie IAM-Richtlinien
auf Warteschlangenebene verwenden,
auf Projektebene. Wenn Sie den Zugriff nach Warteschlange einschränken möchten, verwenden Sie den Befehl gcloud tasks queues add-iam-policy-binding
. Beispiel:
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
Ersetzen Sie Folgendes:
QUEUE_NAME
: der Name Ihrer WarteschlangeLOCATION
: der Speicherort deiner WarteschlangePROJECT_ID
: die Projekt-ID
Nächste Schritte
- Dienstkonten
- Details zu Dienstkonten
- Zugriff auf Projekte, Ordner und Organisationen verwalten
- Dienstkonten erstellen und verwalten
- Identitätswechsel für Dienstkonten verwenden