A fin de invocar la API de Control de servicios para un servicio administrado, el emisor debe tener los siguientes permisos de administración de identidades y accesos (IAM) en el servicio:
services.check
requiere el permisoservicemanagement.services.check
.services.report
requiere el permisoservicemanagement.services.report
.services.allocateQuota
requiere el permisoservicemanagement.services.quota
.
Las funciones de IAM roles/servicemanagement.serviceController
, roles/owner
y roles/editor
incluyen estos permisos y pueden usarse para otorgarlos. Recomendamos usar la función de IAM roles/servicemanagement.serviceController
para ejecutar sus servicios administrados. Si bien roles/owner
y roles/editor
también otorgan estos permisos, la función más restringida es mejor por razones de seguridad.
Modelo de recursos
IAM aplica políticas de IAM en los recursos para controlar quién puede realizar cada acción en ellos. La API de Control de servicios usa los siguientes recursos para proporcionar su funcionalidad:
- Proyecto del productor de servicios: Un proyecto del productor de servicios puede varios servicios administrados o no tener ninguno. El proyecto del productor de servicios es el nivel superior de los servicios en esta jerarquía.
- Servicio administrado: Un servicio administrado puede varios consumidores del servicio o no tener ninguno.
- Consumidor del servicio: Un consumidor del servicio se refiere a un proyecto de Google Cloud que habilitó el servicio.
El control de acceso de IAM se aplica al modelo de recursos. Si se otorga una función en el nivel del proyecto del productor de servicios, afecta a todos los servicios administrados que son propiedad del proyecto del productor. Si se otorga una función en el nivel del servicio administrado, esto afecta a todos los consumidores de servicios del servicio administrado.
Se recomienda que únicamente crees un servicio administrado por proyecto del productor de servicios por razones de seguridad y aislamiento. De lo contrario, por ejemplo, si el proyecto del productor de servicios se queda sin cuota para enviar solicitudes a la API de Control de servicios, se verán afectados varios servicios administrados.
Si tiene un servicio de múltiples usuarios, debe otorgar la función roles/servicemanagement.serviceController
en el nivel de servicio administrado. Si tienes un servicio de instancia única, en otras palabras, un servicio en el que cada consumidor de servicios obtiene su propia instancia de tu servicio administrado, debes otorgar la función en el nivel del consumidor de servicios. Para el procesamiento de datos en segundo plano que afecta a todos los consumidores de servicios, debes otorgar la función en el nivel del servicio administrado.
Otorga funciones
Para llamar a la API de Control de servicios, debes otorgar las funciones necesarias a los emisores. Puedes otorgar las funciones a través de uno de los siguientes tres enfoques. Debes ser propietario de un proyecto del productor de servicios para poder otorgar las funciones necesarias.
Otorga una función en el nivel de proyecto del productor de servicios
Puedes otorgar los roles necesarios en el proyecto al que pertenece un servicio administrado siguiendo las instrucciones de Otorgar, cambiar y revocar el acceso a los recursos, o usar la Google Cloud CLI add-iam-policy-binding comando para otorgar los roles.
Por ejemplo, puede otorgar las funciones a una cuenta de servicio, como foo@developer.gserviceaccount.com
:
gcloud projects add-iam-policy-binding PRODUCER_PROJECT_ID --member serviceAccount:SERVICE_ACCOUNT --role roles/servicemanagement.serviceController
Del mismo modo, puede otorgar las funciones 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
Otorga una función en el nivel de servicio
Puedes otorgar el rol roles/servicemanagement.serviceController
en
nivel de servicio con curl
. En el siguiente ejemplo, se usa el alias gcurl
definidos en las
Realiza pruebas con curl
de la guía de Introducción:
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 reemplazará todas las políticas de IAM existentes a nivel del servicio. Para otorgar el nuevo rol de forma incremental, debes incluir todas las políticas de IAM en el cuerpo de la solicitud.
Otorga una función en el nivel de consumidor de servicios
Puede otorgar la función roles/servicemanagement.serviceController
en el nivel de consumidor del servicio. Los permisos de nivel de consumidor del servicio requieren que la solicitud a la API de control de servicios contenga al menos un ID de proyecto de consumidor del servicio válido. En el siguiente ejemplo, se usa el alias gcurl
definidos en las
Realiza pruebas con curl
de la guía de Introducción:
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, con el ejemplo anterior, se reemplazarán todas las políticas de IAM a nivel de proyecto de consumidor existentes. Para otorgar el rol nuevo de forma incremental, debes incluir todas las políticas de IAM en el cuerpo de la solicitud.
Para obtener más información, consulta Guía de autenticación en Cloud.