Esta página fornece sugestões para proteger a criação e a configuração de filas. A chave é restringir os métodos de gestão de filas a um pequeno conjunto de pessoas ou entidades. Para organizações de grande dimensão, pode ser necessário usar uma conta de serviço para executar software que aplique a configuração adequada da fila.
A ideia geral é separar os utilizadores e outras entidades em três categorias:
- Administradores de filas: os utilizadores neste grupo têm autorização para chamar métodos de gestão de filas do Cloud Tasks ou carregar ficheiros
queue.yaml
. Este grupo está restrito a um conjunto muito pequeno de utilizadores para reduzir o risco de danificar a configuração da fila, especialmente ao misturar inadvertidamente os métodos de gestão de filas doqueue.yaml
e do Cloud Tasks. - Trabalhadores do Cloud Tasks: os utilizadores neste grupo têm autorização para realizar interações comuns com o Cloud Tasks, como colocar tarefas em fila e retirar tarefas da fila. Não têm autorização para chamar métodos de gestão de filas do Cloud Tasks.
- Implementadores do App Engine: para projetos que tenham apps do App Engine, os utilizadores neste grupo têm autorização para implementar a app. Não têm autorização para carregar ficheiros
queue.yaml
nem fazer chamadas API Cloud Tasks, o que permite aos administradores da fila aplicar as políticas adequadas.
Neste esquema, os utilizadores que são administradores de filas não devem ser também trabalhadores do Cloud Tasks, uma vez que isso anularia o objetivo da separação.
Se o seu projeto usar exclusivamente métodos de gestão de filas do Cloud Tasks, também pode fazer sentido que os administradores de filas não sejam também implementadores do App Engine, uma vez que isto permitiria o carregamento de um ficheiro queue.yaml
incorreto.
Pequenos projetos e organizações
As pequenas organizações e projetos podem atribuir funções de gestão de identidade e acesso (IAM) diretamente aos utilizadores para os colocar nos grupos acima. Isto faz sentido para as equipas que preferem a simplicidade de configuração ou que fazem alterações de configuração da fila ou implementações de apps do App Engine manualmente.
Adicione utilizadores a estes grupos da seguinte forma:
Administrador de filas
Como administrador do projeto, conceda a função
cloudtasks.queueAdmin
aos utilizadores que têm autorização para fazer chamadas API de gestão de filas do Cloud Tasks ou carregar ficheirosqueue.yaml
.gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:EMAIL \ --role roles/cloudtasks.queueAdmin
Substitua o seguinte:
PROJECT_ID
: o ID do seu projetoEMAIL
: o email do utilizador membro
Como utilizador com a função
cloudtasks.queueAdmin
, seguindo as práticas recomendadas acima, escolha um dos seguintes métodos para alterar a configuração da fila.Use a API Cloud Tasks para alterar a configuração da fila.
Carregue
queue.yaml
comgcloud
:gcloud app deploy queue.yaml
Trabalhador do Cloud Tasks
Uma vez que existem frequentemente muitos utilizadores autorizados a interagir com o Cloud Tasks, pode atribuir funções a contas de serviço em vez de a utilizadores individuais. Este tipo de utilização é comum na produção. Para mais informações, consulte o artigo Projetos e organizações de grande dimensão.
Como administrador do projeto, conceda funções aos utilizadores que têm autorização para interagir com o Cloud Tasks, mas não para alterar a configuração da fila:
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
Substitua
PROJECT_ID
pelo ID do seu projeto.
Enquanto utilizador com uma ou mais das funções concedidas acima, pode interagir com a API Cloud Tasks.
App Engine Deployer
Como administrador do projeto, conceda funções aos utilizadores que têm autorização para implementar apps do App Engine, mas não têm autorização para modificar a configuração da fila nem interagir com tarefas:
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
Substitua o seguinte:
PROJECT_ID
: o ID do seu projetoEMAIL
: o email do utilizador membro
Como utilizador com as funções concedidas acima, implemente uma app do App Engine.
gcloud app deploy app.yaml
Projetos e organizações de grande dimensão
As organizações e os projetos de grande dimensão podem usar contas de serviço para separar funções e responsabilidades. Isto faz sentido para equipas com uma infraestrutura complexa para alterar a configuração da fila e, talvez, também implementar apps do App Engine.
Para seguir o princípio do menor privilégio e simplificar a gestão de acesso, estas instruções usam a representação da conta de serviço. Para saber mais sobre este padrão, consulte o artigo Use a simulação da conta de serviço na Google Cloud documentação de autenticação.
Seguem-se as instruções para configurar estas contas de serviço.
Administrador de filas
Como administrador do projeto, crie a conta de serviço.
gcloud iam service-accounts create queue-admin \ --display-name "Queue Admin"
Conceda a função
cloudtasks.queueAdmin
à conta de serviço para que possa carregar ficheirosqueue.yaml
e fazer chamadas à API de gestão de filas do Cloud Tasks.gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:queue-admin@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtasks.queueAdmin
Substitua
PROJECT_ID
pelo ID do seu projeto.Permitir seletivamente a representação da conta de serviço "Queue Admin" que criou.
Normalmente, deve ser um pequeno grupo de diretores que atuam como administradores da fila. Conceda a estes responsáveis a função
iam.serviceAccountTokenCreator
na conta de serviço "Administrador da fila" que criou. Para saber como, consulte o artigo Conceda ou revogue uma única função na documentação da IAM.Seguindo as práticas recomendadas descritas em Use a gestão de filas ou o queue.yaml, escolha um dos seguintes métodos para alterar a configuração da fila:
Use o Cloud Tasks para alterar a configuração da fila.
Carregue
queue.yaml
com a CLI gcloud
Trabalhador do Cloud Tasks
Como administrador do projeto, crie a conta de serviço.
gcloud iam service-accounts create cloud-tasks-worker \ --display-name "Cloud Tasks Worker"
Conceda funções à conta de serviço para que possa interagir com o Cloud Tasks, mas não alterar a configuração da fila.
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
Substitua
PROJECT_ID
pelo ID do seu projeto.Permitir seletivamente a representação da conta de serviço "Cloud Tasks Worker" que criou.
Para os principais que interagem com o Cloud Tasks, conceda a função
iam.serviceAccountTokenCreator
na conta de serviço "Trabalhador do Cloud Tasks" que criou. Para saber como, consulte Conceda ou revogue uma única função na documentação da IAM.
App Engine Deployer
Como administrador do projeto, crie a conta de serviço.
gcloud iam service-accounts create app-engine-deployer \ --display-name "App Engine Deployer"
Conceda funções à conta de serviço para que possa implementar apps do App Engine, mas não
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
Substitua
PROJECT_ID
pelo ID do seu projeto.Permitir seletivamente a representação da conta de serviço "Implementador do App Engine" que criou.
Para os principais que implementam serviços do App Engine, conceda a função
iam.serviceAccountTokenCreator
na conta de serviço "Implementador do App Engine" que criou. Para saber como, consulte Conceda ou revogue uma única função na documentação da IAM.
Limitar o acesso a filas únicas
Se tiver várias filas num projeto e quiser limitar o acesso a filas individuais, pode usar políticas de IAM ao nível da fila em vez de ao nível do projeto. Para limitar o acesso por fila, use o comando
gcloud tasks queues add-iam-policy-binding
. Por exemplo:
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
Substitua o seguinte:
QUEUE_NAME
: o nome da sua filaLOCATION
: a localização da sua filaPROJECT_ID
: o ID do seu projeto
O que se segue?
- Contas de serviço
- Compreender as contas de serviço
- Faça a gestão do acesso a projetos, pastas e organizações
- Criar e gerir contas de serviço
- Use a simulação de contas de serviço