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 gerenciamento de identidade e acesso (IAM) 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 do IAM roles/servicemanagement.serviceController para executar seus serviços gerenciados. Embora roles/owner e roles/editor também concedam essas permissões, o papel mais restrito é melhor por motivos de segurança.

Modelo de recurso

O 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ços: um consumidor de serviços refere-se a um projeto do Google Cloud que ativou o serviço.

O controle de acesso 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 de multilocação, conceda a função 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

Para conceder os papéis necessários no projeto a que um serviço gerenciado pertence, siga as instruções em Como conceder, alterar e revogar o acesso a recursos. Se preferir, use o comando add-iam-policy-binding do Google Cloud CLI para conceder os papéis.

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

É possível conceder o papel roles/servicemanagement.serviceController no nível de serviço usando curl. O exemplo a seguir usa o alias gcurl definido na seção Testar 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

O exemplo acima vai substituir todas as políticas do IAM de nível de serviço. Para conceder o novo papel de forma incremental, você precisa incluir todas as políticas do IAM no corpo da solicitação.

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

Você pode conceder o papel roles/servicemanagement.serviceController no nível do consumidor do serviço. As permissões no nível do consumidor de serviço exigem que a solicitação à API Service Control contenha pelo menos um ID de projeto de consumidor de serviço válido. O exemplo a seguir usa o alias gcurl definido na seção Testar 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

O exemplo acima vai substituir todas as políticas do IAM no nível do projeto de consumidor. Para conceder o novo papel de forma incremental, você precisa incluir todas as políticas do IAM no corpo da solicitação.

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