Pour appeler l'API Service Control pour un service géré, l'appelant doit disposer des autorisations Identity and Access Management (IAM) suivantes sur le service :
services.check
nécessite l'autorisationservicemanagement.services.check
.services.report
nécessite l'autorisationservicemanagement.services.report
.services.allocateQuota
nécessite l'autorisationservicemanagement.services.quota
.
Les rôles IAM roles/servicemanagement.serviceController
, roles/owner
et roles/editor
incluent ces autorisations et peuvent être utilisés pour les accorder. Nous vous recommandons d'utiliser le rôle IAM roles/servicemanagement.serviceController
pour exécuter vos services gérés. Bien que roles/owner
et roles/editor
accordent également ces autorisations, pour des raisons de sécurité, le rôle le plus restreint est préférable.
Modèle de ressource
IAM applique des stratégies IAM sur les ressources pour contrôler qui peut effectuer quelles actions sur les ressources. L'API Service Control utilise les ressources suivantes pour fournir ses fonctionnalités :
- Projet producteur de services : un projet producteur de services peut posséder plusieurs services gérés ou aucun. Le projet producteur de services est le parent des services dans cette hiérarchie.
- Service géré : un service géré peut posséder plusieurs clients de service ou aucun.
- Client de service : un client de service est un projet Google Cloud qui active le service en question.
Le contrôle d'accès IAM est appliqué au modèle de ressource. Si un rôle est attribué au niveau du projet producteur de services, il affecte alors tous les services gérés appartenant au projet producteur. Si un rôle est attribué au niveau du service géré, il affecte tous les clients de service du service géré.
Pour des raisons de sécurité et d'isolement, il est vivement recommandé de ne créer qu'un seul service géré par projet producteur de services. Sinon, dans le cas où, par exemple, le projet producteur de services manque de quota pour l'envoi de requêtes à l'API Service Control, plusieurs services gérés se trouveront alors affectés.
Si vous disposez d'un service multilocataire, vous devez accorder le rôle roles/servicemanagement.serviceController
au niveau du service géré. Dans le cas d'un service à locataire unique, c'est-à-dire où chaque client de service obtient sa propre instance de votre service géré, vous devez attribuer le rôle au niveau du client de service. Si le traitement de données en arrière-plan affecte tous les clients du service, vous devez attribuer le rôle au niveau du service géré.
Attribuer des rôles
Pour appeler l'API Service Control, vous devez attribuer les rôles nécessaires aux appelants. Pour ce faire, vous pouvez choisir l'une des trois approches décrites ci-dessous. Toutefois, vous devez être propriétaire du projet producteur de services pour pouvoir attribuer les rôles nécessaires.
Attribuer un rôle au niveau du projet producteur de services
Vous pouvez attribuer les rôles nécessaires au projet auquel un service géré appartient en suivant les instructions de la page Accorder, modifier et révoquer les accès à des ressources, ou bien utiliser la commande add-iam-policy-binding de la Google Cloud CLI pour attribuer les rôles.
Par exemple, vous pouvez accorder les rôles à un compte de service, tel que foo@developer.gserviceaccount.com
:
gcloud projects add-iam-policy-binding PRODUCER_PROJECT_ID --member serviceAccount:SERVICE_ACCOUNT --role roles/servicemanagement.serviceController
De même, vous pouvez accorder les rôles à un compte d'utilisateur, tel que bar@gmail.com
:
gcloud projects add-iam-policy-binding PRODUCER_PROJECT_ID --member user:USER_ACCOUNT --role roles/servicemanagement.serviceController
Attribuer un rôle au niveau du service
Vous pouvez accorder le rôle roles/servicemanagement.serviceController
au niveau du service à l'aide de curl
. L'exemple suivant utilise l'alias gcurl
défini dans la section Tester avec curl du guide Premiers pas:
gcurl -d "{ 'policy': { 'bindings': [ { role: 'roles/servicemanagement.serviceController', members: 'serviceAccount:SERVICE_ACCOUNT' } ] } }" https://servicemanagement.googleapis.com/v1/services/YOUR_SERVICE_NAME:setIamPolicy
Notez que l'exemple ci-dessus remplacera toutes les stratégies IAM existantes au niveau du service. Pour accorder le nouveau rôle de manière incrémentielle, vous devez inclure toutes les stratégies IAM dans le corps de la requête.
Attribuer un rôle au niveau du client de service
Vous pouvez accorder le rôle roles/servicemanagement.serviceController
au niveau du client de service. Les autorisations au niveau du client de service nécessitent que la demande à l'API Service Control contienne au moins un ID de projet de client de service valide. L'exemple suivant utilise l'alias gcurl
défini dans la section Tester avec curl du guide Premiers pas:
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
Notez que l'exemple ci-dessus remplacera toutes les stratégies IAM existantes au niveau du projet grand public. Pour accorder le nouveau rôle de manière incrémentielle, vous devez inclure toutes les stratégies IAM dans le corps de la requête.
Pour plus d'informations, consultez le guide d'authentification Google Cloud.