Para invocar a API Service Control para um serviço gerido, o autor da chamada tem de ter as seguintes autorizações de gestão de identidade e de acesso (IAM) no serviço:
services.check
requer a autorizaçãoservicemanagement.services.check
.services.report
requer a autorizaçãoservicemanagement.services.report
.services.allocateQuota
requer a autorizaçãoservicemanagement.services.quota
.
As funções de IAM roles/servicemanagement.serviceController
,
roles/owner
e roles/editor
incluem estas autorizações e podem ser usadas
para as conceder. Recomendamos que use a função do IAM
roles/servicemanagement.serviceController
para executar os seus serviços geridos. Embora roles/owner
e roles/editor
também concedam estas autorizações, a função mais restrita é melhor por motivos de segurança.
Modelo de recurso
O IAM aplica políticas IAM nos recursos para controlar quem pode realizar que ações nos recursos. A API Service Control usa os seguintes recursos para oferecer a respetiva funcionalidade:
- Projeto do produtor de serviços: um projeto de produtor de serviços pode ter zero ou mais serviços geridos. O projeto de produtor de serviços é o principal dos serviços nesta hierarquia.
- Serviço gerido: um serviço gerido pode ter zero ou mais consumidores de serviços.
- Consumidor de serviços: um consumidor de serviços refere-se a um Google Cloud projeto que ativou o serviço.
O controlo de acesso da IAM é aplicado ao modelo de recursos. Se for concedido um papel ao nível do projeto do produtor do serviço, este afeta todos os serviços geridos pertencentes ao projeto do produtor. Se uma função for concedida ao nível do serviço gerido, afeta todos os consumidores de serviços do serviço gerido.
Recomendamos vivamente que crie apenas um serviço gerido por projeto de produtor de serviços por motivos de segurança e isolamento. Caso contrário, por exemplo, se o projeto do produtor de serviços ficar sem quota para enviar pedidos para a API Service Control, vários serviços geridos serão afetados.
Se tiver um serviço multiinquilino, deve conceder a função roles/servicemanagement.serviceController
ao nível do serviço gerido. Se tiver um serviço de inquilino único, ou seja, um serviço em que cada consumidor de serviços recebe a sua própria instância do seu serviço gerido, deve conceder a função ao nível do consumidor de serviços. Para o processamento de dados em segundo plano que afeta todos os consumidores de serviços, deve conceder a função ao nível do serviço gerido.
Conceda funções
Para chamar a API Service Control, tem de conceder as funções necessárias aos autores das chamadas. Pode conceder as funções através de uma das seguintes três abordagens. Tem de ser proprietário do projeto do produtor de serviços para poder conceder as funções necessárias.
Conceda uma função ao nível do projeto do produtor de serviços
Pode conceder as funções necessárias no projeto ao qual um serviço gerido pertence, seguindo as instruções em Conceder, alterar e revogar o acesso aos recursos, ou usar o comando add-iam-policy-binding da CLI do Google Cloud para conceder as funções.
Por exemplo, pode conceder as funções a uma conta de serviço, como
foo@developer.gserviceaccount.com
:
gcloud projects add-iam-policy-binding PRODUCER_PROJECT_ID --member serviceAccount:SERVICE_ACCOUNT --role roles/servicemanagement.serviceController
Da mesma forma, pode conceder as funções a uma conta de utilizador, como bar@gmail.com
:
gcloud projects add-iam-policy-binding PRODUCER_PROJECT_ID --member user:USER_ACCOUNT --role roles/servicemanagement.serviceController
Conceda uma função ao nível do serviço
Pode conceder a função roles/servicemanagement.serviceController
ao nível do serviço através de curl
. O exemplo seguinte usa o alias gcurl
definido na secção Teste com curl do guia Introdução:
gcurl -d "{ 'policy': { 'bindings': [ { role: 'roles/servicemanagement.serviceController', members: 'serviceAccount:SERVICE_ACCOUNT' } ] } }" https://servicemanagement.googleapis.com/v1/services/YOUR_SERVICE_NAME:setIamPolicy
Tenha em atenção que o exemplo acima substitui todas as políticas IAM ao nível do serviço existentes. Para conceder a nova função de forma incremental, tem de incluir todas as políticas de IAM no corpo do pedido.
Conceda uma função ao nível do consumidor de serviços
Pode conceder a função roles/servicemanagement.serviceController
ao nível do consumidor de serviços. As autorizações ao nível do consumidor de serviços requerem que o pedido à API Service Control contenha, pelo menos, um ID do projeto do consumidor de serviços válido. O exemplo seguinte usa o alias gcurl
definido na secção Teste com curl do guia Introdução:
gcurl -d "{ 'policy': { 'bindings': [ { role: 'roles/servicemanagement.serviceController', members: 'serviceAccount:SERVICE_ACCOUNT' } ] } }" https://servicemanagement.googleapis.com/v1/services/YOUR_SERVICE_NAME/consumers/CONSUMER_PROJECT_NUMBER:setIamPolicy
Tenha em atenção que o exemplo acima substitui todas as políticas de IAM ao nível do projeto de consumidor existentes. Para conceder a nova função de forma incremental, tem de incluir todas as políticas de IAM no corpo do pedido.
Para mais informações, consulte o guia de autorização na nuvem.