Gérer les rôles personnalisés avec Deployment Manager

Contexte

Les rôles personnalisés Cloud IAM (Cloud Identity and Access Management) vous permettent d'accorder des autorisations précises aux comptes utilisateur et aux comptes de service. À la différence des rôles prédéfinis, qui sont gérés par Google et mis à jour en conséquence, les rôles personnalisés sont maintenus par votre organisation au fur et à mesure que de nouvelles autorisations deviennent disponibles.

Cloud Deployment Manager peut faciliter la configuration et la maintenance de vos rôles personnalisés. Vous pouvez utiliser Deployment Manager pour décrire les rôles à l'aide de fichiers de configuration, qui peuvent ensuite être archivés dans le système de gestion de code source de votre choix. Ensemble, Cloud Deployment Manager et la gestion de code source peuvent faciliter l'utilisation de la "configuration sous forme de code" à différentes fins :

  • Suivi de l'évolution des rôles personnalisés dans le temps
  • Promotion des rôles personnalisés à l'étape de lancement suivante une fois le test et la validation effectués
  • Automatisation du déploiement des rôles dans l'ensemble de votre organisation

Avant de commencer

  • Enable the IAM and Cloud Deployment Manager APIs.

    Enable the APIs

Scénarios de maintenance des rôles personnalisés à l'aide de Deployment Manager

Voici plusieurs scénarios illustrant les avantages offerts par Cloud Deployment Manager pour la gestion des rôles personnalisés :

  • Contrôle de l'accès aux nouvelles autorisations : vous disposez d'un rôle personnalisé contenant des autorisations pour un service Google Cloud. Ce service intègre de nouvelles fonctionnalités bêta et expose de nouvelles autorisations. Votre rôle personnalisé n'héritera pas automatiquement de ces nouvelles autorisations. Elles doivent donc être ajoutées manuellement. Tant que les nouvelles autorisations n'auront pas été ajoutées à ce rôle personnalisé, les utilisateurs de votre organisation n'auront pas accès aux fonctionnalités bêta. Vous pouvez utiliser les fichiers de configuration et la gestion de code source de Deployment Manager pour vous aider à auditer les autorisations existantes, mettre à jour vos rôles personnalisés si nécessaire et gérer un historique de révision.
  • Gestion du cycle de vie des rôles : vous disposez d'un nouveau rôle personnalisé, auquel vous avez attribué une étape de lancement ALPHA. Une fois le rôle personnalisé testé et validé, vous pouvez utiliser Cloud Deployment Manager pour mettre à jour la configuration du rôle personnalisé et passer à l'étape BETA sans utiliser Google Cloud Console.
  • Sensibilisation à l'adoption des rôles personnalisés : lorsque les définitions de rôle personnalisé de votre organisation sont intégrées en plus grand nombre dans la gestion du code source, il est plus facile de partager, de tirer parti des modèles d'utilisation et d'appliquer des restrictions à l'échelle de plusieurs projets.

Comprendre les fichiers de configuration de Deployment Manager

Cloud Deployment Manager utilise trois types de fichiers différents pour décrire un déploiement. Chaque type de fichier est décrit ci-dessous :

  • Configurations : fichiers YAML décrivant les ressources et leurs propriétés. Pour les rôles personnalisés Cloud IAM, chaque fichier YAML spécifie toutes les propriétés d'un ou plusieurs rôles personnalisés, telles que le nom, la description et les autorisations.
  • Schémas : fichiers spécifiant toutes les propriétés possibles pour une ressource donnée, ainsi que leurs valeurs par défaut. Pour les rôles personnalisés Cloud IAM, il existe des schémas au niveau du projet et de l'organisation.
  • Modèles : fichiers Jinja ou Python qui vous permettent d'améliorer les configurations en les décomposant en éléments réutilisables. Pour les rôles personnalisés Cloud IAM, deux modèles sont fournis : un pour les rôles personnalisés au niveau du projet et un pour les rôles personnalisés au niveau de l'organisation.

Pour plus d'informations sur ces types, consultez la documentation sur les principes de base de Deployment Manager.

Avant de commencer

Si vous ne connaissez pas Deployment Manager, effectuez les tâches décrites dans le guide de démarrage rapide. Procédez ensuite comme suit :

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Deployment Manager and IAM APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Deployment Manager and IAM APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init

Une fois ces étapes préalables effectuées, vous pouvez commencer à utiliser Cloud Deployment Manager avec Cloud IAM pour gérer les rôles personnalisés.

Accorder des autorisations au compte de service des API Google

Pour gérer des rôles personnalisés à l'aide de Deployment Manager, vous devez d'abord accorder les autorisations appropriées au compte de service des API Google. Ce compte est créé par défaut pour chaque organisation et pour chaque projet.

  1. Dans la console Google Cloud, accédez à la page IAM.

    Accéder à la page IAM

  2. Dans la liste des comptes principaux, recherchez le compte principal nommé Agent de service des API Google.

  3. Pour modifier les rôles du compte de service, cliquez sur le bouton Modifier , puis ajoutez le rôle Rôles > Administrateur des rôles.

  4. Cliquez sur Enregistrer pour appliquer ce rôle.

Maintenant que le compte de service des API Google a été autorisé à gérer des rôles personnalisés, vous pouvez déployer un exemple de rôle personnalisé à l'aide de Deployment Manager.

Déployer des rôles personnalisés dans votre projet

Comme décrit dans la section ci-dessus, Deployment Manager utilise une combinaison de fichiers de configuration pour décrire un déploiement. Pour Cloud IAM, voici deux fichiers d'exemple décrivant les rôles personnalisés d'un projet :

project_custom_role.yaml

imports:
- path: project_custom_role.jinja

resources:
- name: custom-role
  type: project_custom_role.jinja
  properties:
    roleId: myCustomRole
    title: My Title
    description: My description.
    includedPermissions:
    - iam.roles.get
    - iam.roles.list

Ce fichier YAML spécifie les propriétés d'un rôle personnalisé nommé custom-role, qui accorde des autorisations à iam.roles.get et à iam.roles.list. Notez que ce fichier fait par deux fois référence à un fichier .jinja. Ces références utilisent les valeurs fournies par le modèle Jinja, tel que décrit ci-dessous.

project_custom_role.jinja

# Copyright 2017 Google LLC. All rights reserved.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#     http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

resources:
- name: custom-role
  type: gcp-types/iam-v1:projects.roles
  properties:
    parent: projects/{{ env["project"] }}

    roleId: {{ properties["roleId"] }}

    role:
      title: {{ properties["title"] }}

      description: {{ properties["description"] }}

      stage: {{ properties["stage"] }}

      includedPermissions: {{ properties["includedPermissions"] }}

Ce fichier Jinja fournit un modèle de rôle personnalisé permettant d'éviter la duplication de propriétés identiques entre plusieurs rôles. Si le fichier YAML correspondant ne spécifie pas de valeur pour toutes les propriétés, des valeurs par défaut sont insérées à partir d'un fichier .schema.

Pour déployer ce rôle personnalisé avec Deployment Manager, procédez comme suit :

  1. Téléchargez le contenu de ce référentiel GitHub sur votre ordinateur local.
  2. Dans une fenêtre de terminal, accédez au répertoire examples/v2/iam_custom_role/jinja du dépôt téléchargé. Ce répertoire contient le fichier project_custom_role.yaml et les fichiers Jinja associés.
  3. Exécutez la commande suivante pour déployer l'exemple de rôle personnalisé en remplaçant la valeur de l'espace réservé your-deployment-name par le nom de déploiement de votre choix :

    gcloud deployment-manager deployments create \
       your-deployment-name --config project_custom_role.yaml
  4. Patientez jusqu'à la fin de l'opération. L'empreinte numérique du déploiement et un indicateur de progression sont affichés :

    The fingerprint of the deployment is PUo2fmKdoFdJqiLViHjT3Q==
    Waiting for create [operation-1513228867042-560460d157ad1-b4ababb8-c6a7dddc]...done.
    
  5. Si l'opération a abouti, le message d'état suivant s'affiche :

    Create operation operation-1513228867042-560460d157ad1-b4ababb8-c6a7dddc completed successfully.
    NAME         TYPE                             STATE      ERRORS  INTENT
    custom-role  gcp-types/iam-v1:projects.roles  COMPLETED  []
    

Afficher votre rôle personnalisé déployé

Pour afficher votre rôle personnalisé dans Deployment Manager, procédez comme suit :

  1. Dans une fenêtre de terminal, exécutez la commande suivante :

    gcloud deployment-manager deployments describe your-deployment-name
  2. La description du déploiement qui s'affiche comprend des informations complètes sur son statut, les erreurs éventuelles, etc.

    fingerprint: oaJoGesEFYvsAldP2bm5jQ==
    id: '3222872306422524501'
    insertTime: '2018-01-29T13:40:10.822-08:00'
    manifest: manifest-1517262010855
    name: your-deployment-name
    operation:
    endTime: '2018-01-29T13:40:26.500-08:00'
    name: operation-1517262010573-563f1172be0c9-ce5f0242-239fe1af
    operationType: insert
    progress: 100
    startTime: '2018-01-29T13:40:11.535-08:00'
    status: DONE
    user: id-7201362145@my-example-project.iam.gserviceaccount.com
    NAME         TYPE                             STATE      INTENT
    custom-role  gcp-types/iam-v1:projects.roles  COMPLETED
    
  3. Vous pouvez également obtenir les informations détaillées sur la configuration du rôle personnalisé en récupérant le fichier manifeste du déploiement. Dans le résultat de la commande describe présenté à l'étape 2 ci-dessus, notez l'ID spécifié pour le champ manifest. Copiez cet ID, y compris le préfixe manifest-, et utilisez-le pour remplacer la valeur de l'espace réservé ci-dessous :

    gcloud deployment-manager manifests describe your-manifest-id \
        --deployment your-deployment-name
  4. Le manifeste contient des informations exhaustives sur le déploiement du rôle personnalisé, y compris le contenu brut des fichiers sources project_custom_role.yaml et project_custom_role.jinja. Notez en particulier le bloc resources situé au bas du fichier manifeste, qui résume les détails du rôle personnalisé :

    ...
    resources:
    - name: custom-role
      properties:
        description: My description.
        includedPermissions:
        - iam.roles.get
        - iam.roles.list
        roleId: aCustomRole
        stage: ALPHA
        title: My Title
      resources:
      - name: custom-role
        type: gcp-types/iam-v1:projects.roles
      type: project_custom_role.jinja
    ...
    

Pour afficher votre rôle personnalisé dans la console Google Cloud, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page IAM.

    Accéder à la page IAM

  2. Sélectionnez un projet et cliquez sur Ouvrir.

  3. Dans le menu de gauche, cliquez sur Rôles.

  4. Cliquez sur le nom du rôle personnalisé nouvellement créé dans la liste. L'affichage doit ressembler à la capture d'écran ci-dessous :