Partager des types entre plusieurs projets

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

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.

  1. Accédez à la page IAM dans la console Google Cloud du projet qui utilisera les types.

    Accéder à la page IAM

  2. Si vous y êtes invité, sélectionnez votre projet dans la liste.
  3. Recherchez le compte de service des API Google, dont l'adresse e-mail est au format suivant :

    [PROJECT_NUMBER]@cloudservices.gserviceaccount.com
    
  4. 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

    1. Dans la console Google Cloud, accédez à la page IAM du projet contenant les types que vous souhaitez partager.

      Accéder à la page IAM

    2. Sélectionnez le projet dans la liste des projets.
    3. Cliquez sur le bouton Ajouter pour ajouter un nouveau membre.
    4. Dans la zone Membres, saisissez l'adresse e-mail du compte de service.
    5. Développez la liste déroulante Rôles, puis sélectionnez Autre > Lecteur de type de Deployment Manager (bêta).
    6. Cliquez sur Ajouter pour ajouter le compte.

    gcloud

    Avec la Google Cloud CLI, ajoutez une liaison vers la stratégie IAM du 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.

À l'aide de la gcloud CLI, vous pouvez attribuer ce rôle à Jane:

 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