Cette page décrit comment partager des types et des fournisseurs de types qui appartiennent à votre projet avec d'autres projets. Par exemple, supposons que vous possédez un projet pour la maintenance des fournisseurs de types pré-approuvés dans votre entreprise. Vous souhaitez pouvoir partager les fournisseurs de types de ce projet avec d'autres projets et utiliser le projet comme dépôt central des types. De même, vous pouvez également utiliser cette méthode pour partager des types composites entre projets.
Pour configurer l'accès, un propriétaire du projet qui possède le type doit accorder le rôle deploymentmanager.typeViewer
(bêta) au compte de service du projet qui souhaite utiliser les types. Il doit également accorder le rôle aux utilisateurs qui souhaitent consulter et répertorier les types à partir d'un autre projet.
Avant de commencer
- Si vous voulez vous servir des exemples de ligne de commande de ce guide, installez l'outil de ligne de commande gcloud.
- Si vous voulez utiliser les exemples d'API de ce guide, configurez l'accès aux API.
- Consultez la documentation relative aux configurations Deployment Manager.
- Consultez la page Types.
- Lisez la documentation concernant la gestion de l'authentification et des accès (IAM).
Limites
Les limites suivantes s'appliquent à l'utilisation de cette fonctionnalité :
- Le rôle
deploymentmanager.typeViewer
permet l'accès à toutes les images dans le projet spécifique. Il n'est pas possible de limiter le partage à des types individuels. - Ce rôle ne peut pas être attribué à
allAuthenticatedUsers
ni àallUsers
Accorder l'accès à un projet pour utiliser des types
Pour accorder l'accès à des types qui appartiennent à d'autres projets, le propriétaire du projet qui possède les types en question doit attribuer le rôle deploymentmanager.typeViewer
au compte de service des API Google du projet qui souhaite utiliser les types.
- Accédez à la page IAM dans la console Google Cloud du projet qui utilisera les types.
- Si vous y êtes invité, sélectionnez votre projet dans la liste.
Recherchez le compte de service des API Google, dont l'adresse e-mail est au format suivant :
[PROJECT_NUMBER]@cloudservices.gserviceaccount.com
Notez l'adresse e-mail ci-dessus. Ensuite, un propriétaire du projet contenant les types souhaités peut accorder le rôle
roles/deploymentmanager.typeViewer
au compte de service des API Google.Console
- Toujours dans la console Google Cloud, accédez à la page IAM du projet contenant les types que vous souhaitez partager.
- Sélectionnez le projet dans la liste des projets.
- Cliquez sur le bouton Ajouter pour ajouter un nouveau membre.
- Dans la zone Membres, saisissez l'adresse e-mail du compte de service.
- Développez la liste déroulante Rôles, puis sélectionnez Autre > Lecteur de type de Deployment Manager (bêta).
- Cliquez sur Ajouter pour ajouter le compte.
gcloud
Avec la Google Cloud CLI, ajoutez une liaison vers la stratégie IAM pour le projet:
gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member serviceAccount:[SERVICE_ACCOUNT_EMAIL] --role roles/deploymentmanager.typeViewer
où :
[PROJECT_ID]
est l'ID du projet contenant les images que vous souhaitez partager.[SERVICE_ACCOUNT_EMAIL]
correspond à l'adresse e-mail du compte de service du projet avec lequel vous souhaitez partager les types.
Exemple :
gcloud projects add-iam-policy-binding database-images \ --member serviceAccount:123456789012@cloudservices.gserviceaccount.com \ --role roles/deploymentmanager.typeViewer
API
Dans l'API, faites une requête
POST
à l'URL suivante, où[PROJECT_ID]
est l'ID du projet contenant les types que vous souhaitez partager.POST https://cloudresourcemanager.googleapis.com/v1/projects/$[PROJECT_ID]:setIamPolicy
Le corps de la requête doit contenir la liste des liaisons que vous souhaitez appliquer à ce projet. Le rôle
roles/deploymentmanager.typeViewer
doit faire partie de la liaison. Exemple :{ "policy": { "version": "0", "bindings": [ { "role": "roles/owner", "members": [ "user:example@gmail.com" ] }, { "role": "roles/deploymentmanager.typeViewer", "members": [ "serviceAccount:123456789012@cloudservices.gserviceaccount.com" ] } ] }
}
Utiliser des types d'autres projets dans votre configuration
Une fois que vous avez accès aux types, vous pouvez en spécifier dans vos configurations en utilisant la syntaxe suivante. Pour les types composites :
type: [PROJECT_ID]/composite:[TYPE]
Pour les fournisseurs de types :
type: [PROJECT_ID]/[TYPE]:[COLLECTION]
Où :
[PROJECT_ID]
correspond à l'ID du projet qui possède le type.[TYPE]
correspond au nom du fournisseur de types ou du type composite.[COLLECTION]
correspond à la ressource spécifique que vous créez. Cela est uniquement applicable pour les types de base. Pour en savoir plus sur la spécification des types de base, consultez la page Appeler un fournisseur de types dans une configuration.
Par exemple, si l'ID du projet est my-type-repository
, vous pouvez fournir la spécification de type suivante :
resources: - name: a-special-vm type: my-type-repository/composite:autoscaled-igm properties: ...
Autoriser les utilisateurs à répertorier et consulter les types
Le rôle deploymentmanager.typeViewer
accordé au compte de service du projet permet au projet de déployer des types dans vos configurations, mais ne permet pas aux utilisateurs de les consulter ni de les répertorier. Si vous souhaitez autoriser des utilisateurs individuels à consulter des types, vous devez leur attribuer le rôle deploymentmanager.typeViewer
.
Par exemple, pour que Jane exécute la commande gcloud beta deployment-manager types list --project another-project
sur un projet qui ne lui appartient pas, le propriétaire du projet another-project
doit lui attribuer le rôle deploymentmanager.typeViewer
.
Pour accorder ce rôle à Jane à l'aide de la gcloud CLI, saisissez ce qui suit :
gcloud projects add-iam-policy-binding another-project \
--member user:jane@gmail.com --role deploymentmanager.typeViewer
Pour obtenir des instructions détaillées sur l'ajout et la suppression de rôles pour des utilisateurs, consultez la page Attribuer, modifier et révoquer les accès des membres du projet.
Étapes suivantes
- En savoir plus sur les autres rôles IAM que vous pouvez accorder
- En savoir plus sur les comptes de service