Remarques :

Intégrer Oracle Cloud Infrastructure Resource Manager avec le processus d'automatisation

Introduction

Le service Oracle Cloud Infrastructure (OCI) Resource Manager automatise le déploiement et les opérations de toutes les ressources OCI. Grâce à l'utilisation du modèle Infrastructure-as-Code (IaC), le service est basé sur Terraform, une norme open source qui permet aux ingénieurs DevOps de développer et de déployer leur infrastructure n'importe où.

Une configuration Terraform encode votre infrastructure dans les fichiers de configuration déclaratifs. Le service OCI Resource Manager permet de partager et de gérer les fichiers de configuration et d'état de l'infrastructure entre plusieurs équipes et plateformes.

Via OCI Resource Manager, il est possible d'exécuter des scripts Terraform dans la console OCI. Il est également possible de passer un appel REST ou d'utiliser l'interface de ligne de commande Oracle Cloud Infrastructure (interface de ligne de commande OCI), élargissant ainsi les possibilités d'intégration avec des outils d'automatisation tels qu'OCI Devops, Jenkins, GitHub, etc.

architecture

Dans ce tutoriel, nous automatiserons le déploiement d'une instance Oracle Autonomous Database en obtenant le mot de passe d'administrateur de base de données en toute sécurité via les clés secrètes OCI Vault sans l'exposer dans les fichiers, de sorte que l'utilisateur d'exécution OCI Resource Manager dispose d'un accès approprié pour créer la base de données et le mot de passe stocké.

Objectifs

Prérequis

Tâche 1 : création d'une clé secrète pour Oracle Autonomous Database dans OCI Vault

Nous allons créer un mot de passe dans OCI Vault pour illustrer la configuration d'une nouvelle ressource dans Terraform sans exposer les données confidentielles.

Les secrets sont les informations d'identification telles que les mots de passe, les certificats, les clés SSH ou les jetons d'authentification que vous utilisez avec les services OCI. Le stockage des secrets dans un coffre OCI offre plus de sécurité qu'un stockage dans un autre emplacement, par exemple dans des fichiers de configuration ou du code. Vous pouvez extraire les secrets à partir du service OCI Vault lorsque vous en avez besoin pour accéder aux ressources ou à d'autres services.

Vous pouvez créer des clés secrètes à l'aide de la console OCI, de l'interface de ligne de commande OCI ou de l' Le contenu d'une clé secrète est importé dans le service à partir d'une source externe. Le service OCI Vault stocke les secrets dans des coffres.

Remarque : pour cette tâche, nous devons nous connecter en tant qu'administrateur dans la console OCI. Vous devez être autorisé à créer un mot de passe dans OCI Vault.

  1. Connectez-vous à la console OCI, cliquez sur Identité et sécurité et sur Coffre.

    img_10.png

  2. Sélectionnez le compartiment dans lequel stocker les clés secrètes, puis cliquez sur Créer un coffre.

    img_29.png

  3. Entrez le nom du coffre, confirmez le compartiment et cliquez sur Créer un coffre.

    img_11.png

  4. Vérifiez que le coffre est créé et créez une clé. Cliquez sur Clé de cryptage maître et Créer une clé.

    img_12.png

  5. Confirmez le compartiment et entrez le nom de la clé. Par exemple, entrez autonomouskey en tant que nom et cliquez sur Créer une clé.

    img_13.png

    Vérifiez que la clé a été créée.

    img_14.png

  6. Cliquez sur Secrets et Create Secret.

    img_15.png

  7. Nous allons créer le mot de passe d'administrateur autonome. Entrez les informations suivantes et cliquez sur Créer une clé secrète.

    • Compartiment : Sélectionner un compartiment.
    • Nom : entrez le nom de la première clé secrète.
    • Sélectionnez Génération manuelle de clé secrète pour inclure le mot de passe.
    • Modèle de type de clé secrète : entrez Plain-Text.
    • Contenu de la clé secrète : entrez votre mot de passe.

    img_16.png

  8. Vous aurez besoin de l'OCID de clé secrète. Pour copier l'OCID, cliquez sur Copy.

    img_17.png

Tâche 2 : créer des stratégies pour l'utilisateur OCI

Dans ce tutoriel, considérez votre nom utilisateur TestUser inclus dans un groupe nommé TestGroup. Maintenant, créez une stratégie nommée TestPolicy.

Cette tâche est importante car elle contrôle tous les privilèges nécessaires pour garantir la sécurité de l'automatisation Terraform.

Remarque : pour cette tâche, nous devons nous connecter avec un utilisateur administrateur dans OCI.

  1. Accédez à la console OCI, cliquez sur Identity & Security et Politiques.

    img_18.png

  2. Cliquez sur Créer une stratégie.

    img_19.png

  3. Dans la section Déclarations, entrez les stratégies suivantes.

    • Ces stratégies donnent le droit de regrouper TestGroup créé précédemment pour gérer une pile et des travaux dans OCI Resource Manager.

      - Allow group 'Default'/'TestGroup' to manage orm-stacks in compartment integration
      - Allow group 'Default'/'TestGroup' to manage orm-jobs in compartment integration
      - Allow group 'Default'/'TestGroup' to read orm-config-source-providers in tenancy
      
    • Cette stratégie donne le droit de créer une instance Oracle Autonomous Database dans l'intégration de compartiment.

      - Allow group 'Default'/'TestGroup' to manage autonomous-database in compartment integration
      
    • Le groupe peut lire le mot de passe stocké dans OCI Vault via des scripts Terraform.

      - Allow group 'Default'/'TestGroup' to use secret-family in tenancy
      
    • Cette stratégie donne le droit d'enregistrer les scripts Terraform sur un compartiment spécifique.

      - Allow group 'Default'/'TestGroup' to manage all-resources in compartment kubernetes
      
    • Cette stratégie permet aux utilisateurs de TestGroup de modifier le code dans l'éditeur de code OCI.

      - Allow group 'Default'/'TestGroup' to use cloud-shell in tenancy
      

    cloud_shell.png

Tâche 3 : créer une pile à partir d'un modèle

Créez une pile pour une instance Oracle Autonomous Database. Nous pouvons utiliser un modèle pour cela. La première étape consiste à se connecter en tant qu'utilisateur créé dans la tâche 2.

  1. Accédez à la console OCI et cliquez sur le menu hamburger.

    img_1.png

  2. Cliquez sur Services de développeur et sur Piles.

    img_2.png

  3. Sélectionnez votre compartiment et cliquez sur Créer une pile.

    CleanShot 2024-04-15 à 07.47.32.png

  4. Sur la page Informations sur la pile, sélectionnez Modèle et cliquez sur Sélectionner un modèle pour générer un script Terraform pour Oracle Autonomous Database.

    CleanShot 2024-04-15 à 07.48.19.png

  5. Dans l'onglet Service, sélectionnez Autonomous Transaction Processing Database et cliquez sur Select template.

    CleanShot 2024-04-15 à 07.49.57.png

  6. Vous pouvez générer les scripts Terraform et les stocker dans le bucket OCI Object Storage. Sélectionnez Utiliser des fournisseurs Terraform personnalisés, entrez le compartiment et le nom du bucket, puis enregistrez la pile.

    CleanShot 2024-04-15 à 07.51.23.png

    Votre pile est enregistrée.

    CleanShot 2024-04-15 à 07.54.01.png

  7. Ce modèle ne lit pas la clé secrète stockée dans OCI Vault. Pour que Terraform lise la clé secrète, nous devons modifier le code.

    Cliquez sur Modifier et sélectionnez Modifier la configuration Terraform dans l'éditeur de code.

    img_3.png

  8. Vous pouvez modifier ce code. Le code par défaut génère une chaîne aléatoire pour le mot de passe.

    • Fichier main.tf.

      CleanShot 2024-04-15 à 08.05.40.png

      CleanShot 2024-04-15 à 08.08.32.png

      Vous devez ajouter de nouvelles données nommées oci_secrets_secretbundle et les affecter aux attributs suivants :

      • admin_password dans les sections autonomous_data_warehouse et autonomous_database.
      • password à la section autonomous_database_wallet.
    • main.tf : section autonomous_data_warehouse.

      data "oci_secrets_secretbundle" "bundle" {
          secret_id = var.secret_ocid
      }
      
      admin_password = base64decode(data.oci_secrets_secretbundle.bundle.secret_bundle_content.0.content)
      

      CleanShot 2024-04-15 à 08.28.07.png

    • main.tf : section autonomous_database.

      img_4.png

    • main.tf : section autonomous_database_wallet.

      img_5.png

      CleanShot 2024-04-15 au 08.30.15 substituir.png

    Ajoutez le code suivant dans le fichier variables.tf et remplacez l'OCID de la clé secrète générée dans la tâche 1.

    variable "secret_ocid" {
        default = "ocid1.vaultsecret.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    }
    
    • Fichier variables.tf.

      CleanShot 2024-04-15 à 08.30.52.png

    Remarque : enregistrez vos fichiers. Placez le curseur de la souris sur votre pile (à droite de l'éditeur, dans le titre Autonomous Transaction Processing...), cliquez avec le bouton droit de la souris et enregistrez votre projet. Si vous quittez sans enregistrer, l'exécution suppose que vous utiliserez la chaîne aléatoire dans le script de code d'origine.

Tâche 4 : tester les autorisations

Vous pouvez tester les stratégies et voir comment vous contrôlez les instances OCI Resource Manager, OCI Vault et Oracle Autonomous Database dans un compartiment spécifique.

  1. Connectez-vous à la console OCI avec vos informations d'identification d'utilisateur administrateur et enlevez toutes les stratégies du groupe TestGroup dans la stratégie TestPolicy. Cliquez sur Supprimer et confirmez l'opération.

    img_7.png

  2. Maintenant, connectez-vous avec votre utilisateur dans le groupe TestGroup et vous ne pouvez pas voir la pile. Vous ne pouvez donc pas l'exécuter.

    CleanShot 2024-04-15 à 20.02.33.png

  3. Ajoutez les instructions suivantes avec l'administrateur.

    Allow group 'Default'/'TestGroup' to manage orm-stacks in compartment integration
    Allow group 'Default'/'TestGroup' to manage orm-jobs in compartment integration
    Allow group 'Default'/'TestGroup' to read orm-config-source-providers in tenancy
    Allow group 'Default'/'TestGroup' to manage all-resources in compartment kubernetes
    

    img_8.png

    Les instructions suivantes accordent à l'utilisateur dans TestGroup les droits d'accès permettant d'utiliser la pile OCI Resource Manager.

    CleanShot 2024-04-15 à 20.12.55.png

  4. Nous avons enlevé l'autorisation accordée à l'utilisateur de créer une instance Oracle Autonomous Database et de lire la clé secrète dans OCI Vault. Vous pouvez donc exécuter votre pile sans succès. Pour effectuer un test, cliquez sur Appliquer sur la page de détails de la pile.

    CleanShot 2024-04-15 à 20.16.39.png

    CleanShot 2024-04-15 à 20.18.40.png

  5. Ajoutez des droits d'accès Oracle Autonomous Database et OCI Vault sur TestPolicy.

    Allow group 'Default'/'TestGroup' to manage all-resources in compartment kubernetes
    Allow group 'Default'/'TestGroup' to manage autonomous-database in compartment integration
    

    img_9.png

  6. Cliquez sur Appliquer sur la page de détails de la pile pour voir que vous avez le contrôle de toutes les ressources sans exposer de mot de passe.

    CleanShot 2024-04-15 à 21.34.57.png

Tâche 5 : appeler l'automatisation OCI Resource Manager avec REST

Toutes les ressources dans OCI disposent d'une API REST OCI ou d'une commande d'interface de ligne de commande OCI pour appeler les services tels qu'ils sont exécutés dans la console OCI.

Pour plus d'informations sur l'API REST OCI, reportez-vous à API REST OCI. Vous pouvez consulter la liste des commandes de l'interface de ligne de commande OCI ici : Référence des commandes de l'interface de ligne de commande Oracle Cloud Infrastructure.

Désormais, nous pouvons choisir d'exécuter la pile OCI Resource Manager avec une API REST OCI ou une commande d'interface de ligne de commande OCI. Pour créer un travail, reportez-vous à CreateJob ou vous pouvez utiliser l'exemple de code suivant curl-oci.zip avec curl-oci.sh préparé avec les paramètres OCI.

img_20.png

Vous devez créer la signature pour vos demandes REST. Pour plus d'informations, reportez-vous à Procédure pas à pas d'appel REST Oracle Cloud Infrastructure (OCI) avec curl.

  1. Créez un fichier nommé STACK-RUN.sh. Il s'agit de votre demande REST utilisant curl-oci.sh (cet outil préparera votre chaîne d'autorisation avec vos informations OCI).

    img_1.png

  2. Créez un fichier nommé request.json avec votre ID de pile et votre ID de compartiment.

    img.png

  3. Ouvrez le fichier curl-oci.sh et modifiez les paramètres suivants. Ces paramètres sont identiques à ceux de l'installation de l'interface de ligne de commande OCI.

    img_2.png

    Exécutez le script.

    img_3.png

    Vous pouvez voir les résultats de la réussite.

    img_4.png

Remerciements

Ressources de formation supplémentaires

Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.