Controle de acesso à API Service Management

A API Service Management usa o gerenciamento de identidade e acesso (Cloud IAM) para controlar o acesso a serviços gerenciados e os respectivos recursos filhos. Nesta página, explicamos os recursos, papéis e permissões do IAM fornecidos pela API Service Management e como usá-los para controlar o acesso.

Recursos IAM

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

Você precisará de permissões diferentes para usar e gerenciar recursos diferentes. Consulte as seções a seguir para mais detalhes.

Permissões IAM

As chamadas à API Service Management exigem que o autor da chamada tenha as permissões de IAM necessárias nos recursos de destino.

Na tabela a seguir, veja as permissões que se aplicam aos serviços.

Permissão Descrição
servicemanagement.services.delete Excluir serviços.
servicemanagement.services.get Ler serviços.
servicemanagement.services.create Criar novos serviços em projetos.
servicemanagement.services.list Listar serviços em projetos.
servicemanagement.services.update Atualizar serviços.
servicemanagement.services.bind Visualizar e ativar o serviço nos projetos controlados pelo chamador.
servicemanagement.services.setIamPolicy Definir políticas de acesso de IAM para serviços.
servicemanagement.services.getIamPolicy Ler políticas de acesso IAM para serviços.
servicemanagement.services.check Verificar o status de consumidores de serviços. Consulte services.check.
servicemanagement.services.quota Alocar cota para um consumidor de serviço. Consulte services.allocateQuota.
servicemanagement.services.report Relatar uso do serviço. Consulte services.report.

Na tabela a seguir, veja as permissões necessárias para cada método da API Service Management, conforme aplicável. Estas informações também estão documentadas na Referência da API.

Método Permissões necessárias
services.delete servicemanagement.services.delete no service_name especificado.
services.get servicemanagement.services.get no service_name especificado.
services.getConfig servicemanagement.services.get no service_name especificado.
services.undelete servicemanagement.services.delete no service_name especificado.
services.configs.create servicemanagement.services.update no service_name especificado.
services.configs.get servicemanagement.services.get no service_name especificado.
services.configs.list servicemanagement.services.get no service_name especificado.
services.configs.submit servicemanagement.services.update no service_name especificado.
services.rollouts.create servicemanagement.services.update no service_name especificado.
services.rollouts.get servicemanagement.services.get no service_name especificado.
services.rollouts.list servicemanagement.services.get no service_name especificado.

Papéis IAM

Com o gerenciamento de identidade e acesso as permissões são concedidas vinculando usuários a papéis. Consulte detalhes em Noções básicas sobre papéis.

Na tabela a seguir, veja os papéis que se aplicam aos serviços.

Papel Permissões
roles/viewer servicemanagement.services.get
servicemanagement.services.list
roles/editor Todas as permissões de roles/viewer, mais

servicemanagement.services.bind
servicemanagement.services.check
servicemanagement.services.create
servicemanagement.services.delete
servicemanagement.services.quota
servicemanagement.services.report
servicemanagement.services.update
roles/owner Todas as permissões de roles/editor, mais

servicemanagement.services.getIamPolicy
servicemanagement.services.setIamPolicy
roles/servicemanagement.admin monitoring.timeSeries.list
resourcemanager.folders.get
resourcemanager.folders.list
resourcemanager.organizations.get
resourcemanager.projects.get
resourcemanager.projects.list
serviceconsumermanagement.consumers.get
serviceconsumermanagement.quota.get
serviceconsumermanagement.quota.update
serviceconsumermanagement.tenancyu.addResource
serviceconsumermanagement.tenancyu.create
serviceconsumermanagement.tenancyu.delete
serviceconsumermanagement.tenancyu.list
serviceconsumermanagement.tenancyu.removeResource
servicemanagement.services.bind
servicemanagement.services.check
servicemanagement.services.create
servicemanagement.services.delete
servicemanagement.services.get
servicemanagement.services.getIamPolicy
servicemanagement.services.list
servicemanagement.services.quota
servicemanagement.services.report
servicemanagement.services.setIamPolicy
servicemanagement.services.update
serviceusage.quotas.get
serviceusage.services.get
roles/servicemanagement.configEditor servicemanagement.services.get
servicemanagement.services.update
roles/servicemanagement.reporter servicemanagement.services.report
roles/servicemanagement.serviceConsumer servicemanagement.services.bind
roles/servicemanagement.serviceController servicemanagement.services.check
servicemanagement.services.get
servicemanagement.services.quota
servicemanagement.services.report

Como gerenciar políticas

O IAM avalia as políticas hierarquicamente: um recurso filho sempre herda a política do recurso pai. Para a API Service Management, cada serviço gerenciado é um recurso filho do próprio projeto de produtor de serviço. Portanto, os papéis concedidos no projeto de produtor aplicam-se a todos os serviços gerenciados pertencentes a ele. Consulte Como gerenciar políticas para ver instruções sobre como conceder papéis no nível do projeto.

Você também pode gerenciar a política de IAM de um serviço individual. As seções a seguir descrevem como gerenciar papéis de nível de serviço usando o Google Cloud Console, a Service Management API e a Google Cloud CLI.

Como gerenciar o acesso usando o console do Google Cloud

  1. Abra a página "Endpoints" no console do Google Cloud.

    Abrir a página Endpoints

  2. Clique em um serviço para gerenciar o acesso dele.
  3. Clique no link "PERMISSÕES" na parte superior da página. Isso alterna a exibição do painel de informações.
  4. No painel de informações, veja a lista de membros atuais, adicionar e remover membros de qualquer papel de nível de serviço.

Como gerenciar o acesso usando a CLI gcloud

A CLI gcloud inclui comandos gcloud endpoints services para gerenciar políticas do IAM de serviços gerenciados:

  • endpoints services get-iam-policy
    • mostrar a política do IAM do serviço
  • endpoints services check-iam-policy
    • Marcar a política do IAM do serviço
  • endpoints services add-iam-policy-binding
    • adicionar um membro a um papel
  • endpoints services remove-iam-policy-binding
    • remover um membro de um papel

Exemplo:

# Show the IAM policy of service "endpointsapis.appspot.com".
gcloud endpoints services get-iam-policy endpointsapis.appspot.com

# The above command may produce an output similar to this:
bindings:
- members:
  - user:email1@gmail.com
  - group:group1@googlegroups.com
  role: roles/servicemanagement.serviceConsumer

# Add a user to "roles/servicemanagement.serviceConsumer" role.
gcloud endpoints services add-iam-policy-binding endpointsapis.appspot.com --member "user:email1@gmail.com" --role "roles/servicemanagement.serviceConsumer"

# Add a group to "roles/servicemanagement.serviceConsumer" role.
gcloud endpoints services add-iam-policy-binding endpointsapis.appspot.com --member "group:group1@googlegroups.com" --role "roles/servicemanagement.serviceConsumer"

# Remove a user from "roles/servicemanagement.serviceConsumer" role.
gcloud endpoints services remove-iam-policy-binding endpointsapis.appspot.com --member "user:email1@gmail.com" --role "roles/servicemanagement.serviceConsumer"

# Remove a group from "roles/servicemanagement.serviceConsumer" role.
gcloud endpoints services remove-iam-policy-binding endpointsapis.appspot.com --member "group:group1@googlegroups.com" --role "roles/servicemanagement.serviceConsumer"

Como gerenciar o acesso usando a API Service Management

A API Service Management inclui a API IAM Policy para o gerenciamento de políticas de nível de serviço e de consumidor. Use o comando gcurl para testar os métodos da API. Consulte as etapas iniciais de configuração em Primeiros passos.

Exemplo:

# View the current IAM policy on service "endpointsapis.appspot.com".
gcurl -d '{}' https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com:getIamPolicy

# View the current IAM policy on service "endpointsapis.appspot.com" and consumer "12345".
gcurl -d '{}' https://servicemanagement.googleapis.com/v1/services/endpointsapis.appspot.com/consumers/12345:getIamPolicy