Note :

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

Présentation

Le service du gestionnaire de ressources pour Oracle Cloud Infrastructure (OCI) permet d'automatiser le déploiement et les opérations de toutes les ressources OCI. À l'aide du modèle d'infrastructure en tant que code (IaC), le service est basé sur Terraform, une norme industrielle à source ouverte qui permet aux ingénieurs DevOps de développer et de déployer leur infrastructure partout.

Une configuration Terraform encode l'infrastructure dans des fichiers de configuration déclaratifs. Le service du gestionnaire de ressources OCI vous permet de partager et de gérer des fichiers de configuration d'infrastructure et d'état pour plusieurs équipes et plates-formes.

Le gestionnaire de ressources OCI permet d'exécuter des scripts Terraform dans la console OCI. Il est également possible d'effectuer un appel REST ou d'utiliser l'interface de ligne de commande d'Oracle Cloud Infrastructure (interface de ligne de commande OCI), élargissant ainsi les possibilités d'intégration aux outils d'automatisation tels que OCI Devops, Jenkins, GitHub, etc.

architecture

Dans ce tutoriel, nous allons automatiser le déploiement d'une instance Oracle Autonomous Database en obtenant le mot de passe de l'administrateur de base de données en toute sécurité au moyen des clés secrètes du service de chambre forte OCI sans l'exposer dans les fichiers, de sorte que l'utilisateur d'exécution du gestionnaire de ressources OCI dispose d'un accès approprié pour créer la base de données et le mot de passe stocké

Objectifs

Préalables

Tâche 1 : Créer une clé secrète pour Oracle Autonomous Database dans la chambre forte OCI

Nous allons créer un mot de passe dans la chambre forte OCI pour illustrer comment configurer une nouvelle ressource dans Terraform sans exposer les données sensibles.

Les clés secrètes sont des données d'identification telles que des mots de passe, des certificats, des clés SSH ou des jetons d'authentification que vous utilisez avec les services OCI. Le stockage des clés secrètes dans une chambre forte OCI offre une sécurité supérieure à celle fournie par d'autres emplacements, tels que du code ou des fichiers de configuration. Vous pouvez extraire les secrets du service de chambre forte OCI 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, de l'interface de ligne de commande ou de l'API OCI. Le contenu d'une clé secrète est importé dans le service à partir d'une source externe. Le service de chambre forte OCI contient les clés secrètes.

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

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

    img_10.png

  2. Sélectionnez le compartiment dans lequel stocker les clés secrètes et cliquez sur Créer une chambre forte.

    img_29.png

  3. Entrez le nom de votre chambre forte, confirmez le compartiment et cliquez sur Créer une chambre forte.

    img_11.png

  4. Vérifiez que la chambre forte est créée et créez une clé. Cliquez sur Clés de chiffrement principales et sur Créer une clé.

    img_12.png

  5. Confirmez le compartiment et entrez un nom pour votre clé. Par exemple, entrez autonomouskey comme nom et cliquez sur Créer une clé.

    img_13.png

    Vérifiez que la clé est créée.

    img_14.png

  6. Cliquez sur Secrets et Créer une clé secrète.

    img_15.png

  7. Nous allons créer le mot de passe de l'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 votre 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 la clé secrète. Pour copier l'OCID, cliquez sur Copier.

    img_17.png

Tâche 2 : Créer des politiques pour l'utilisateur OCI

Dans ce tutoriel, considérez votre nom d'utilisateur TestUser inclus dans un groupe nommé TestGroup. Maintenant, créez une politique 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.

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

  1. Allez à la console OCI, cliquez sur Identité et sécurité et Politiques.

    img_18.png

  2. Cliquez sur Créer une politique.

    img_19.png

  3. Dans la section Énoncés, entrez les politiques suivantes.

    • Ces politiques autorisent le groupe TestGroup créé précédemment pour gérer une pile et des tâches dans le gestionnaire de ressources OCI.

      - 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 politique 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 la chambre forte OCI au moyen de scripts Terraform.

      - Allow group 'Default'/'TestGroup' to use secret-family in tenancy
      
    • Cette politique permet d'enregistrer les scripts Terraform sur un compartiment spécifique.

      - Allow group 'Default'/'TestGroup' to manage all-resources in compartment kubernetes
      
    • Cette politique 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. Allez à la console OCI et cliquez sur le menu hamburger.

    img_1.png

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

    img_2.png

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

    CleanShot 2024-04-15 à 07.47.32.png

  4. Dans 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 Base de données Autonomous Transaction Processing et cliquez sur Sélectionner un modèle.

    CleanShot 2024-04-15 à 07.49.57.png

  6. Vous pouvez générer les scripts Terraform et les stocker dans le seau de stockage d'objets OCI. Sélectionnez Utiliser des fournisseurs Terraform personnalisés, entrez le compartiment et le nom du seau et enregistrez votre 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 votre chambre forte OCI. 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 le 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 aux 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 votre clé secrète générée lors de la tâche 1.

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

      CleanShot 2024-04-15 à 08.30.52.png

    Note : Enregistrez vos fichiers. Dé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 politiques et voir comment vous avez le contrôle des instances du gestionnaire de ressources OCI, de la chambre forte OCI et d'Oracle Autonomous Database dans un compartiment spécifique.

  1. Connectez-vous à la console OCI avec vos données d'identification d'utilisateur administrateur et supprimez toutes les politiques du groupe TestGroup dans la politique TestPolicy. Cliquez sur Supprimer et confirmez.

    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 énoncés suivants avec l'utilisateur 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 énoncés suivants accordent à votre utilisateur dans TestGroup les autorisations d'utilisation de la pile du gestionnaire de ressources OCI.

    CleanShot 2024-04-15 à 20.12.55.png

  4. Nous avons supprimé l'autorisation pour votre utilisateur de créer une instance Oracle Autonomous Database et de lire la clé secrète dans la chambre forte OCI. Vous pouvez donc exécuter votre pile, mais sans succès. Pour effectuer le test, cliquez sur Appliquer dans la page des détails de la pile.

    CleanShot 2024-04-15 à 20.16.39.png

    CleanShot 2024-04-15 à 20.18.40.png

  5. Ajoutez les autorisations 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 dans la page des détails de la pile et vous pouvez 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 du gestionnaire de ressources OCI avec REST

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

Pour plus d'informations sur l'API REST OCI, voir API REST OCI. Vous pouvez voir la liste des commandes de l'interface de ligne de commande OCI ici : Informations de référence sur les commandes de l'interface de ligne de commande Oracle Cloud Infrastructure.

Maintenant, nous pouvons choisir d'exécuter la pile du gestionnaire de ressources OCI avec une API REST OCI ou une commande d'interface de ligne de commande OCI. Pour créer une tâche, voir 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, voir la procédure pas à pas d'appel REST pour Oracle Cloud Infrastructure (OCI) avec curl.

  1. Créez un fichier nommé STACK-RUN.sh. Il s'agit de votre demande REST à l'aide de 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 pile et votre ID 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

    Maintenant, exécutez le script.

    img_3.png

    Vous pouvez voir les résultats du succès.

    img_4.png

Remerciements

Autres ressources d'apprentissage

Explorez d'autres laboratoires sur docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal YouTube d'Oracle Learning. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

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