Control de acceso de la API Service Control

Para invocar la API Service Control de un servicio gestionado, la persona que llama debe tener los siguientes permisos de gestión de identidades y accesos (IAM) en el servicio:

Los roles de gestión de identidades y accesos roles/servicemanagement.serviceController, roles/owner y roles/editor incluyen estos permisos y se pueden usar para concederlos. Te recomendamos que utilices el rol de IAM roles/servicemanagement.serviceController para ejecutar tus servicios gestionados. Aunque roles/owner y roles/editor también conceden estos permisos, el rol más específico es mejor por motivos de seguridad.

Modelo de recurso

IAM aplica políticas de gestión de identidades y accesos a los recursos para controlar quién puede realizar qué acciones en ellos. La API Service Control usa los siguientes recursos para ofrecer sus funciones:

  • Proyecto del productor del servicio: un proyecto de productor del servicio puede tener cero o más servicios gestionados. El proyecto del productor del servicio es el padre de los servicios de esta jerarquía.
  • Servicio gestionado: un servicio gestionado puede tener cero o más consumidores de servicios.
  • Consumidor de servicios: un consumidor de servicios es un proyectoGoogle Cloud que ha habilitado el servicio.

El control de acceso de gestión de identidades y accesos se aplica al modelo de recursos. Si se concede un rol a nivel de proyecto del productor de servicios, afectará a todos los servicios gestionados que pertenezcan al proyecto del productor. Si se concede un rol a nivel de servicio gestionado, afectará a todos los consumidores del servicio gestionado.

Te recomendamos que solo crees un servicio gestionado por proyecto de productor de servicios por motivos de seguridad y aislamiento. De lo contrario, por ejemplo, si el proyecto del productor del servicio se queda sin cuota para enviar solicitudes a la API Service Control, se verán afectados varios servicios gestionados.

Si tienes un servicio multiempresa, debes conceder el rol roles/servicemanagement.serviceController a nivel del servicio gestionado. Si tienes un servicio de un solo arrendatario, es decir, un servicio en el que cada consumidor de servicios obtiene su propia instancia de tu servicio gestionado, debes conceder el rol a nivel de consumidor de servicios. Para el procesamiento de datos en segundo plano que afecta a todos los consumidores de servicios, debes asignar el rol a nivel de servicio gestionado.

Conceder roles

Para llamar a la API Service Control, debes asignar los roles necesarios a los llamantes. Puede conceder los roles de una de estas tres formas. Debes ser propietario del proyecto del productor de servicios para poder conceder los roles necesarios.

Conceder un rol a nivel de proyecto de productor de servicios

Puedes asignar los roles necesarios en el proyecto al que pertenece un servicio gestionado siguiendo las instrucciones que se indican en el artículo Asignar, cambiar y revocar el acceso a recursos o usar el comando add-iam-policy-binding de la CLI de Google Cloud para asignar los roles.

Por ejemplo, puedes conceder los roles a una cuenta de servicio, como las siguientes: foo@developer.gserviceaccount.com

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

Del mismo modo, puedes conceder los roles a una cuenta de usuario, como bar@gmail.com:

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

Conceder un rol a nivel de servicio

Puede asignar el rol roles/servicemanagement.serviceController a nivel de servicio mediante curl. En el siguiente ejemplo se usa el alias gcurl definido en la sección Probar con curl de la guía Empezar:

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

Ten en cuenta que el ejemplo anterior sustituirá todas las políticas de gestión de identidades y accesos a nivel de servicio. Para conceder el nuevo rol de forma incremental, debes incluir todas las políticas de gestión de identidades y accesos en el cuerpo de la solicitud.

Conceder un rol a nivel de consumidor de servicios

Puedes asignar el rol roles/servicemanagement.serviceController a nivel de consumidor de servicios. Los permisos a nivel de consumidor de servicios requieren que la solicitud a la API Service Control contenga al menos un ID de proyecto de consumidor de servicios válido. En el siguiente ejemplo se usa el alias gcurl definido en la sección Probar con curl de la guía Empezar:

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

Ten en cuenta que el ejemplo anterior sustituirá todas las políticas de IAM a nivel de proyecto del consumidor. Para conceder el nuevo rol de forma incremental, debes incluir todas las políticas de gestión de identidades y accesos en el cuerpo de la solicitud.

Para obtener más información, consulta la guía de autenticación en la nube.