Controle de acesso à API Service Control

Para chamar a API Service Control de um serviço gerenciado, o autor da chamada precisa ter as seguintes permissões do Cloud Identity and Access Management no serviço:

Os papéis do IAM roles/servicemanagement.serviceController, roles/owner e roles/editor incluem essas permissões e podem ser usados para concedê-las. Recomendamos o uso do papel de IAM roles/servicemanagement.serviceController para executar os serviços gerenciados. roles/owner e roles/editor também concedem essas permissões, mas o papel mais restrito é melhor por motivos de segurança.

Modelo de recurso

O Cloud IAM aplica políticas de IAM a recursos para controlar quem pode realizar quais ações nos recursos. A API Service Control usa os seguintes recursos para fornecer a funcionalidade correspondente:

  • Projeto de produtor de serviço: um projeto de produtor de serviço pode ter zero ou mais serviços gerenciados. Esse projeto é o pai dos serviços nessa hierarquia.
  • Serviço gerenciado: um serviço gerenciado pode ter zero ou mais consumidores de serviço.
  • Consumidor de serviço: um consumidor de serviço se refere a um projeto do Google Cloud Platform que ativou o serviço.

O controle de acesso do IAM é aplicado ao modelo de recurso. Se um papel é concedido no nível do projeto de produtor de serviço, ele afeta todos os serviços pertencentes ao projeto de produtor. Se um papel for concedido no nível de serviço gerenciado, ele afetará todos os consumidores de serviço do serviço gerenciado.

É altamente recomendável que você crie apenas um serviço por projeto de produtor por motivos de segurança e isolamento. Caso contrário, por exemplo, se o projeto de produtor de serviço ficar sem cota para enviar solicitações à API Service Control, vários serviços gerenciados serão afetados.

Se você tiver um serviço multilocatário, precisará conceder o papel roles/servicemanagement.serviceController no nível de serviço gerenciado. Se você tiver um serviço de locatário único, isto é, um serviço em que cada consumidor de serviço recebe a própria instância do seu serviço gerenciado, você precisa conceder o papel no nível do consumidor de serviço. Para processamento de dados em segundo plano que afeta todos os consumidores de serviço, você precisa conceder o papel no nível de serviço gerenciado.

Conceder papéis

Para chamar a API Service Control, você precisa conceder os papéis necessários aos chamadores. É possível conceder os papéis por uma das três abordagens a seguir. Você precisa ser um proprietário do projeto de produtor de serviço para poder conceder os papéis necessários.

Conceder um papel no nível do projeto de produtor de serviço

É possível conceder os papéis necessários no projeto a que pertence um serviço gerenciado. Basta seguir as instruções em Políticas de gerenciamento do IAM ou usar o comando add-iam-policy-binding do SDK do Google Cloud.

Por exemplo, você pode conceder os papéis 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, você pode conceder os papéis a uma conta de usuário, como bar@gmail.com:

gcloud projects add-iam-policy-binding PRODUCER_PROJECT_ID --member user:USER_ACCOUNT --role roles/servicemanagement.serviceController

Conceder um papel no nível de serviço

Você pode conceder o papel roles/servicemanagement.serviceController no nível de serviço, conforme ilustrado pelo exemplo a seguir:

gcurl -d "{
  'policy': {
    'bindings': [ {
      role: 'roles/servicemanagement.serviceController',
      members: 'serviceAccount:SERVICE_ACCOUNT'
    } ]
  }
}" https://servicemanagement.googleapis.com/v1/services/YOUR_SERVICE_NAME:setIamPolicy

Conceder um papel no nível de consumidor de serviço

Você pode conceder o papel roles/servicemanagement.serviceController no nível de consumidor de serviço. As permissões de nível de consumidor de serviço exigem que a solicitação para a API Service Control contenha pelo menos um código de projeto de consumidor de serviço válido. Por exemplo, você pode conceder os papéis conforme ilustrado pelo seguinte comando:

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

Para mais informações, consulte o Guia de autenticação do Cloud.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Service Infrastructure