Control de acceso a la API de Service Management

La API de Administración de servicios usa la administración de identidades y accesos (Cloud IAM) para controlar el acceso a los servicios administrados y sus recursos secundarios. En esta página, se explican los recursos, las funciones y los permisos de IAM que proporciona la API de Administración de servicios, y cómo usarlos para controlar el acceso.

Recursos de IAM

IAM aplica políticas de IAM en los recursos para controlar quién puede realizar cada acción en los recursos. La API de Service Management utiliza los siguientes recursos para proporcionar su funcionalidad:

Necesitarás permisos diferentes para usar y administrar recursos diferentes. Consulta las siguientes secciones para obtener más información.

Permisos de IAM

Las llamadas a la API de Administración de servicios requieren que el emisor tenga los permisos de IAM necesarios en los recursos de destino.

En la siguiente tabla se enumeran los permisos que se aplican a los servicios:

Permiso Descripción
servicemanagement.services.delete Borrar servicios
servicemanagement.services.get Leer servicios
servicemanagement.services.create Crear servicios nuevos en proyectos
servicemanagement.services.list Crear una lista de servicios en proyectos
servicemanagement.services.update Actualizar servicios
servicemanagement.services.bind Ver y habilitar el servicio en proyectos que controla el emisor
servicemanagement.services.setIamPolicy Establecer la política de acceso de IAM para los servicios
servicemanagement.services.getIamPolicy Leer la política de acceso de IAM para los servicios
servicemanagement.services.check Verificar el estado del consumidor de servicios. Consulta services.check.
servicemanagement.services.quota Asignar una cuota a un consumidor de servicios. Consulta services.allocateQuota
servicemanagement.services.report Informar el uso del servicio. Consulta services.report

En la siguiente tabla se muestran los permisos necesarios para cada método de API de Service Management, según corresponda. Esta información también está documentada en la Referencia de API:

Método Permisos necesarios
services.delete servicemanagement.services.delete en el service_name especificado.
services.disable En el proyecto: serviceusage.services.disable
services.enable En el proyecto: serviceusage.services.enable
En el servicio: servicemanagement.services.bind
services.get servicemanagement.services.get en el service_name especificado.
services.getConfig servicemanagement.services.get en el service_name especificado.
services.undelete servicemanagement.services.delete en el service_name especificado.
services.configs.create servicemanagement.services.update en el service_name especificado.
services.configs.get servicemanagement.services.get en el service_name especificado.
services.configs.list servicemanagement.services.get en el service_name especificado.
services.configs.submit servicemanagement.services.update en el service_name especificado.
services.rollouts.create servicemanagement.services.update en el service_name especificado.
services.rollouts.get servicemanagement.services.get en el service_name especificado.
services.rollouts.list servicemanagement.services.get en el service_name especificado.

Funciones de IAM

Con la administración de identidades y accesos, los permisos se otorgan mediante la vinculación de los usuarios a las funciones. Consulta cómo comprender las funciones para obtener más información.

En la siguiente tabla se enumeran las funciones que se aplican a los servicios:

Función Permisos
roles/viewer servicemanagement.services.get
servicemanagement.services.list
roles/editor Todos los permisos de roles/viewer, además de

servicemanagement.services.delete
servicemanagement.services.create
servicemanagement.services.update
servicemanagement.services.bind
servicemanagement.services.check
servicemanagement.services.quota
servicemanagement.services.report
roles/owner Todos los permisos de roles/editor, además de

servicemanagement.services.setIamPolicy
servicemanagement.services.getIamPolicy
roles/servicemanagement.configEditor servicemanagement.services.get
servicemanagement.services.update
roles/servicemanagement.serviceConsumer servicemanagement.services.bind
roles/servicemanagement.serviceController servicemanagement.services.get
servicemanagement.services.check
servicemanagement.services.quota
servicemanagement.services.report

Administra políticas

IAM evalúa las políticas de manera jerárquica: un recursos secundario siempre hereda la política del nivel superior. Para la API de Service Management, cada servicio administrado es un recurso secundario del proyecto del productor de servicios. Por lo tanto, las funciones otorgadas en el proyecto del productor de servicios se aplican a todos los servicios administrados que pertenecen al proyecto. Consulta Administra políticas para obtener instrucciones sobre cómo otorgar funciones en el nivel de proyecto.

También puedes administrar la política de IAM para un servicio individual. Las siguientes secciones describen cómo administrar funciones de nivel de servicio mediante Google Cloud Console, la API de administración de servicios y el SDK de Google Cloud.

Administra el acceso con Google Cloud Console

  1. Abre la página Endpoints en Google Cloud Console.

    Abrir la página de Endpoints

  2. Haz clic en el servicio para el que deseas administrar el acceso.
  3. Haz clic en el vínculo "PERMISOS" que se encuentra en la página superior de la página. Esto activa o desactiva el panel de información.
  4. En el panel de información, puedes ver la lista de los miembros actuales, agregar miembros nuevos y quitar miembros para cualquier función de nivel de servicio.

Administra el acceso con el SDK de Cloud

El SDK de Cloud incluye comandos gcloud endpoints services a fin de administrar las políticas de IAM para los servicios administrados:

  • endpoints services get-iam-policy
    • Mostrar la política de IAM del servicio.
  • endpoints services check-iam-policy
    • Verifica la política de IAM del servicio.
  • endpoints services add-iam-policy-binding
    • Agregar un miembro a la función.
  • endpoints services remove-iam-policy-binding
    • Quitar un miembro de una función.

Por ejemplo:

# 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"

Administra el acceso con la API de Service Management

La API de Administración de servicios incluye la API de Política de IAM para administrar políticas de nivel de servicio y de consumidor. Puedes usar el comando de gcurl para experimentar con los métodos de la API. Consulta Comienza para ver los pasos iniciales de configuración.

Por ejemplo:

# 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