Control de acceso a la API de Control de servicios

A fin de invocar la API de Control de servicios para un servicio administrado, el emisor debe tener los siguientes permisos de Cloud Identity and Access Management en el servicio:

Las funciones de IAM roles/servicemanagement.serviceController, roles/owner y roles/editor incluyen estos permisos y cada uno puede utilizarse para otorgarlos. Recomendamos usar la función de IAM roles/servicemanagement.serviceController para ejecutar los servicios administrados. Si bien roles/owner y roles/editor también otorgan estos permisos, la función más restringida es mejor por motivos de seguridad.

Modelo de recursos

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

  • Proyecto del productor de servicios: Un proyecto del productor de servicios puede tener ningún o varios servicios administrados. El proyecto del productor de servicios es el nivel superior de los servicios en esta jerarquía.
  • Servicio administrado: Un servicio administrado puede tener ningún o varios consumidores de servicios.
  • Consumidor de servicios: Un consumidor de servicios hace referencia a un proyecto de Google Cloud Platform 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, esto 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 tienes un servicio de varias instancias, debes otorgar la función roles/servicemanagement.serviceController en el nivel del 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 las funciones necesarias en el proyecto al que pertenece un servicio administrado; para ello, sigue las instrucciones en Políticas de administración de IAM o usa el comando add-iam-policy-binding del SDK de Google Cloud para otorgar las funciones.

Por ejemplo, puedes 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

De manera similar, puedes 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 la función roles/servicemanagement.serviceController en el nivel de servicio, como se muestra en el siguiente ejemplo:

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

Otorga una función en el nivel de consumidor de servicios

Puedes otorgar una función roles/servicemanagement.serviceController en el nivel del consumidor de servicios. Los permisos del nivel de consumidor de servicios requieren que la solicitud a la API de Control de servicios contenga al menos un ID del proyecto del consumidor de servicios válido. Por ejemplo, puedes otorgar las funciones como se ilustra en el siguiente comando:

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

Para obtener más información, consulta Guía de autenticación en Cloud.

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Service Infrastructure