Rotation de clé secrète de base de données sans fonction de portefeuille

Découvrez comment utiliser la rotation des clés secrètes de base de données sans fonction prédéfinie de portefeuille dans le service des fonctions pour OCI pour effectuer la rotation des clés secrètes à l'aide d'une connexion TLS à la base de données.

Scénarios d'utilisation communs

Utilisez la fonction PBF de rotation des clés secrètes de base de données sans portefeuille pour effectuer automatiquement la rotation des clés secrètes de la base de données en établissant une connexion TLS JDBC sans portefeuille.

Les services liés à la rotation de clé secrète de base de données sans fonction de portefeuille sont les suivants :

Portée

La portée de cette fonction comprend les éléments suivants :

  • La fonction prédéfinie peut être utilisée avec n'importe quelle base de données prenant en charge une URL JDBC.
  • Le service de clé secrète utilise la fonction créée par la fonction prédéfinie pour effectuer la rotation des clés secrètes de base de données.

Préalables et recommandations

Voici les meilleures pratiques à suivre pour utiliser cette fonction prédéfinie :

  • Réglez la temporisation de la fonction prédéfinie à 300 secondes.
  • Assurez-vous que le VCN lié à l'application facilite l'accès à d'autres services OCI à l'aide d'une passerelle de service, d'une passerelle Internet ou d'une passerelle NAT.
  • Assurez-vous que le sous-réseau attaché au VCN comporte une table de routage et une liste de sécurité.
  • Assurez-vous que la table de routage du sous-réseau inclut une règle qui utilise une passerelle de service créée dans le VCN. Assurez-vous que la passerelle de service a accès aux services OCI dans la région pour laquelle vous configurez les rotations de clé secrète.
  • Assurez-vous que la liste de sécurité du sous-réseau inclut une règle de trafic sortant dont la destination est réglée à la passerelle de service créée dans le VCN.
  • Assurez-vous d'avoir configuré l'accès réseau pour la base de données autonome afin d'autoriser les demandes entrantes provenant de l'application dans laquelle la fonction prédéfinie va être créée, comme suit :

    1. Lorsque vous utilisez la console OCI pour créer ou mettre à jour la base de données autonome, affichez la zone Sélectionner l'accès au réseau ou Mettre à jour l'accès au réseau de la page. Pour plus d'informations, consultez la documentation sur Autonomous Database sans serveur.
    2. Sélectionnez l'un des types d'accès réseau suivants :
      • Autoriser l'accès sécurisé de partout : Sélectionnez cette option si vous voulez que la base de données autonome soit accessible à partir d'Internet.
      • Accès sécurisé à partir des adresses IP et des réseaux en nuage virtuels autorisés seulement : Sélectionnez cette option si vous voulez uniquement que la base de données autonome soit accessible à partir des réseaux en nuage virtuels et des adresses IP d'une liste de contrôle d'accès. Ajoutez une ou plusieurs règles de contrôle d'accès, en fonction du réseau à partir duquel vous voulez accéder à la base de données autonome.
      • Accès au point d'extrémité privé seulement : Sélectionnez cette option si vous voulez que la base de données autonome soit accessible à partir d'un point d'extrémité privé dans un VCN OCI. Sélectionnez le VCN et le sous-réseau à partir desquels vous voulez accéder à la base de données autonome.

Configuration de la rotation des clés secrètes de base de données sans fonction de portefeuille

Pour configurer une rotation de clé secrète de base de données sans fonction de portefeuille, procédez comme suit :

  1. Dans la page Fonctions prédéfinies, sélectionnez Rotation des clés secrètes de base de données sans portefeuille, puis Créer une fonction.
  2. Configurez le nom, le compartiment et l'application de la façon suivante :
    • Nom : Nom de votre choix pour la nouvelle fonction. Le nom doit commencer par une lettre ou un trait de soulignement, suivi de lettres, de chiffres, de tirets ou de traits de soulignement. Il peut comporter entre 1 et 255 caractères. Évitez d'entrer des informations confidentielles.

      Pour créer la fonction dans un autre compartiment, sélectionnez Changer de compartiment.

    • Application : Sélectionnez l'application dans laquelle vous voulez créer la fonction.

      Si aucune application appropriée n'existe déjà dans le compartiment courant, sélectionnez Créer une application et spécifiez les détails suivants :

      • Nom : Nom de la nouvelle application. Évitez d'entrer des informations confidentielles.
      • VCN : VCN (réseau en nuage virtuel) dans lequel exécuter des fonctions dans l'application. Facultativement, sélectionnez Compartiment du VCN : pour sélectionner un VCN d'un autre compartiment.
      • Sous-réseaux : Le ou les sous-réseaux (trois au maximum) dans lesquels exécuter des fonctions. Facultativement, sélectionnez Compartiment des sous-réseaux : pour sélectionner un sous-réseau dans un autre compartiment.
      • Forme : Architecture de processeur des instances de calcul sur lesquelles déployer et exécuter des fonctions dans l'application. Toutes les fonctions de l'application sont déployées et exécutées sur des instances de calcul de la même architecture. L'image de la fonction doit contenir les dépendances nécessaires pour l'architecture que vous sélectionnez.
      • Marqueurs : Si vous êtes autorisé à créer une ressource, vous disposez également des autorisations nécessaires pour appliquer des marqueurs à structure libre à cette ressource. Pour appliquer un marqueur défini, vous devez être autorisé à utiliser l'espace de noms de marqueur. Pour plus d'informations sur le marquage, voir Marqueurs de ressource. Si vous ne savez pas si vous devez appliquer des marqueurs, ignorez cette option ou demandez à un administrateur. Vous pouvez appliquer des marqueurs plus tard.
  3. Configurez la politique IAM pour les fonctions prédéfinies.

    Par défaut, OCI Functions crée un groupe dynamique et une politique IAM avec les énoncés de politique requis pour exécuter la fonction prédéfinie. Procédez comme suit :

    • Si vous voulez qu'OCI Functions crée automatiquement le groupe dynamique et la politique, n'effectuez aucune modification pour accepter le comportement par défaut.
    • Si vous ne voulez pas que le service des fonctions pour OCI crée automatiquement le groupe dynamique et la politique, sélectionnez Ne pas créer de groupe dynamique et de politique IAM.
    Important

    Si vous sélectionnez l'option Ne pas créer de groupe dynamique et de politique IAM, vous devez définir vous-même le groupe dynamique et la politique IAM. Pour plus d'informations, voir Autorisations.

    Vous devez également configurer une politique IAM pour autoriser le service de rotation de clé secrète à appeler la fonction. Pour plus d'informations, voir Autorisations.

  4. Configurez la mémoire de fonction et les valeurs de temporisation comme suit :
    • Mémoire (en Mo) : Quantité maximale de mémoire que la fonction peut utiliser en cours d'exécution, en mégaoctets. Il s'agit de la mémoire disponible pour l'image de fonction. (Par défaut : 512 Mo)
    • Temporisation (en secondes) : Durée maximale d'exécution de la fonction, en secondes. Si la fonction ne se termine pas dans le temps spécifié, le système annule la fonction. (Par défaut : 300)
  5. (Facultatif) Configurez l'accès simultané provisionné pour réduire les retards initiaux lors de l'appel de la fonction en spécifiant un nombre minimal d'appels de fonction simultanée pour lesquels vous voulez que l'infrastructure d'exécution soit constamment disponible. (Par défaut : Non sélectionné)

    Si cette option est sélectionnée, spécifiez le nombre d'unités d'accès simultané provisionnées affectées à cette fonction. Par défaut : 20.

    Pour plus d'informations sur la simultanéité provisionnée, voir Réduction de la latence initiale à l'aide de la simultanéité provisionnée.

  6. Facultativement, entrez des marqueurs dans la section Marqueurs. Si vous êtes autorisé à créer une ressource, vous disposez également des autorisations nécessaires pour appliquer des marqueurs à structure libre à cette ressource. Pour appliquer un marqueur défini, vous devez être autorisé à utiliser l'espace de noms de marqueur. Pour plus d'informations sur le marquage, voir Marqueurs de ressource. Si vous ne savez pas si vous devez appliquer des marqueurs, ignorez cette option ou demandez à un administrateur. Vous pouvez appliquer des marqueurs plus tard.
  7. Sélectionnez Créer.

La boîte de dialogue de déploiement affiche les tâches de déploiement de la fonction (voir Fin du déploiement de fonction prédéfinie).

Options de configuration

Permissions

L'exécution d'une fonction nécessite certaines politiques IAM.

Pour la fonction Rotation de clé secrète de base de données sans portefeuille, vous devez créer un groupe dynamique et configurer une politique IAM pour permettre au service de rotation de clé secrète d'appeler la fonction. Pour définir les politiques appropriées :

  • Créez un groupe dynamique en utilisant la règle suivante :
    resource.type='vaultsecret'

    Cette règle inclut toutes les clés secrètes de chambre forte du groupe dynamique. Vous pouvez limiter la clé secrète de chambre forte incluse dans le groupe dynamique à l'aide d'une règle plus restrictive. Par exemple :

    resource.id='<secret-id>'
  • Configurez une politique IAM qui permet aux ressources incluses dans le groupe dynamique d'appeler des fonctions. Par exemple :
    Allow dynamic-group <vs-dynamic-group-name> to manage functions-family in tenancy
    Note

    Remplacez <vs-dynamic-group-name> par le nom du groupe dynamique que vous avez créé pour la clé secrète de la chambre forte.

En outre, si vous avez sélectionné l'option Ne pas créer de groupe dynamique et de politique IAM lors de la création de la fonction, vous devez définir le groupe dynamique et la politique IAM vous-même pour permettre à la fonction de gérer les clés secrètes. Pour définir les politiques appropriées :

  • Créez un groupe dynamique avec la règle :
    resource.type='fnfunc'

    Cette règle inclut toutes les fonctions du groupe dynamique. Vous pouvez limiter la fonction incluse dans le groupe dynamique à l'aide d'une règle plus restrictive. Par exemple :

    resource.id='<function-ocid>'
  • Configurez une politique IAM à l'aide du groupe dynamique :
    Allow dynamic-group <dynamic-group-name> to manage secret-family in tenancy

    Vous pouvez limiter les clés secrètes de chambre forte que la fonction peut gérer à l'aide d'une politique plus restrictive. Par exemple :

    Allow dynamic-group <dynamic-group-name> to manage secret-family in compartment <compartment-name> where target.secret.id = "<secret-ocid>"
Note

Remplacez <function-ocid> par l'OCID de la fonction que vous avez créée au cours des étapes précédentes.
Note

Remplacez <dynamic-group-name> par le nom du groupe dynamique que vous avez créé à l'aide de l'OCID de la fonction.
Note

Remplacez <compartment_ocid> par l'OCID du compartiment qui contient la fonction.

Appel de cette fonction

La fonction créée à l'aide de ce fichier PBF sera appelée par le service secret pour effectuer la rotation de la clé secrète.

  1. Créez une fonction à l'aide de ce fichier PBF et copiez l'ID fonction.
    1. Ouvrez le menu de navigation, sélectionnez Identité et sécurité, puis Chambre forte.
    2. Sous Portée de la liste, sélectionnez un compartiment qui contient les clés secrètes que vous avez créées dans une chambre forte.
    3. Dans la liste des clés secrètes, sélectionnez le nom de clé secrète dont vous avez besoin pour effectuer la rotation à l'aide de ce fichier PBF, ou créez une nouvelle clé secrète.
  2. Sélectionnez Type de système cible comme Fonction pour les rotations.
  3. Ajoutez l'ID fonction copié à l'étape 1 en tant qu'ID système cible.
  4. Assurez-vous que la clé secrète respecte les conditions suivantes :
    • La première version de la clé secrète doit être créée manuellement. Sélectionnez Génération manuelle de clé secrète avec le contenu de clé secrète au format JSON suivant :
      {
       "username": "<required: username>",
       "password": "<required: password>",
       "connectionString": "<required: DB connection string>"
      }
    • Le mot de passe doit être le même que celui défini pour la rotation de la base de données.
    • Une fois la clé secrète créée, la génération automatique de clé secrète doit être activée afin que les versions de clé secrète suivantes puissent être générées automatiquement par le service de clé secrète.
    • Modifiez la clé secrète nouvellement créée, activez la génération automatique de clé secrète et fournissez le contenu de la clé secrète au format JSON suivant :
      {
       "username": "<required: username>",
       "password": "%GENERATED_PASSPHRASE%",
       "connectionString": "<required: DB connection string>"
      }
      
    • Dans Génération automatique de clé secrète, le mot de passe est %GENERATED_PASSPHRASE% afin que le service de clé secrète puisse générer automatiquement le mot de passe dans ce champ.
    • Le nom d'utilisateur et le mot de passe doivent établir une connexion avec la base de données dans le format suivant : jdbc:oracle:thin:@<connectionString>?user=<username>&password=<example-password>
    • Assurez-vous d'utiliser la connexion TLS.
      Note

      Cette fonction n'est pas compatible avec la connexion MTLS.

Dépannage

Codes de statut communs du service des fonctions pour OCI

Le tableau suivant résume les erreurs courantes du service des fonctions pour OCI que vous pouvez rencontrer lors de l'utilisation de fonctions prédéfinies :

Code d'erreur Message d'erreur Action
200 Succès Aucune
404 NotAuthorizedOrNotFound Vérifiez que les politiques requises sont configurées (voir L'exécution des commandes de l'interface de ligne de commande Fn Project retourne une erreur de type 404).
444 Temporisation

La connexion entre le client et le service des fonctions pour OCI a été interrompue lors de l'exécution de la fonction (voir L'appel d'une fonction entraîne une temporisation du client et une erreur 444 est affichée dans les journaux de la fonction). Une nouvelle tentative peut résoudre le problème.

Notez que la plupart des clients ont une temporisation interne de 60 secondes. Même lorsque la temporisation de la fonction prédéfinie est réglée à 300 secondes, les conditions suivantes peuvent être requises :

  • Lors de l'utilisation de l'interface de ligne de commande OCI : Utilisez --read-timeout 300
  • Lors de l'utilisation de la trousse SDK OCI : Réglez la temporisation de lecture à 300 lors de la création du client
  • DBMS_CLOUD.SEND_REQUEST : Utilisez UTL_HTTP.set_transfer_timeout(300);

Pour plus d'informations, voir Appel de fonctions.

502 504 (Divers) La plupart des problèmes retournent un code de statut 502 (voir L'appel d'une fonction retourne un message d'échec de fonction et une erreur 502). Une erreur 502 avec le message "réponse de la fonction de réception d'erreur" peut être résolue en augmentant l'allocation de mémoire. Un 502 peut se produire occasionnellement lorsque la fonction est dans un état transitoire. Une nouvelle tentative peut résoudre le problème.

Pour en identifier la cause, activez les fonctions de journalisation pour la fonction prédéfinie (voir Stockage et consultation des journaux de fonction). Pour des informations détaillées sur le dépannage d'une fonction, voir Dépannage du service des fonctions pour OCI.

Rotation des clés secrètes de base de données sans messages d'erreur de fonction prédéfinis pour le portefeuille

Le tableau suivant résume les erreurs que vous pourriez rencontrer lors de l'utilisation de cette fonction prédéfinie :

Étape Code de statut Message de réponse Description
VERIFY_CONNECTION 200 La connexion à l'aide de la version de clé secrète en attente a réussi. Une version en attente de la clé secrète existe et la connexion à la base de données a été établie avec succès à l'aide de cette version.
La connexion à l'aide de la version de clé secrète courante a réussi. La connexion à la base de données a réussi avec la version de clé secrète courante.
400 Échec de la connexion à l'aide de la version de clé secrète courante. Données d'identification non valides dans la version de clé secrète courante ou dans toute version en attente (si elle existe), ou la configuration réseau pour la connexion entre la fonction et la base de données est incorrecte.
404 La version courante de la clé secrète est introuvable Il n'existe aucune version courante de la clé secrète avec l'adresse secretId indiquée.
500 <MESSAGE D'EXCEPTION> Généré lorsqu'une exception se produit lors de la vérification de la connexion.
CREATE_PENDING_VERSION 200 La version en attente existe déjà. Une version en attente de la clé secrète existe déjà. Ne crée pas de nouvelle version en attente.
Version en attente créée avec succès. Aucune version en attente n'existe, une nouvelle version en attente de la clé secrète est créée.
<CODE D'EXCEPTION> Échec de la création de la version en attente. Exception du client DP lors de la tentative de création d'une nouvelle version en attente de la clé secrète.
500 <MESSAGE D'EXCEPTION> Généré lorsqu'une exception se produit lors de la création d'une nouvelle version.
UPDATE_TARGET_SYSTEM 200 Le système cible a déjà été mis à jour. La base de données peut être connectée à l'aide de la version de clé secrète en attente, ce qui indique que cette version a été utilisée précédemment pour mettre à jour les données d'identification de la base de données.
Le système cible a été mis à jour. Les données d'identification de la base de données ont été mises à jour avec la version en attente de la clé secrète.
404 Il n'existe aucune version en attente. Il n'existe aucune version en attente de la clé secrète pouvant être utilisée pour mettre à jour le système cible.
500 Échec de la mise à jour du système cible. Tentative de mise à jour du système cible avec les nouvelles données d'identification de version en attente, mais échec de la vérification de la connexion à la base de données à l'aide de ces données d'identification.
<MESSAGE D'EXCEPTION> Généré lorsqu'une exception se produit lors de la mise à jour du système cible.
PROMOTE_PENDING_VERSION 200 Version en attente promue! La version en attente a été promue à la version courante.
500 <MESSAGE D'EXCEPTION> Généré lorsqu'une exception se produit lors de la promotion de la version en attente.

Pour en identifier la cause, activez les fonctions de journalisation pour la fonction prédéfinie (voir Stockage et consultation des journaux de fonction).

Conseils sur l'analyse des journaux

Toutes les fonctions prédéfinies fournissent une option permettant de spécifier le niveau de journalisation en tant que paramètre de configuration. Vous pouvez régler le niveau de journalisation à DEBUG pour obtenir plus d'informations.

Étant donné qu'une application comporte plusieurs fonctions, les entrées du journal des fonctions prédéfinies sont identifiées par le préfixe "PBF | <PBF NAME>".

Par exemple, une entrée de journal pour la rotation des clés secrètes de base de données sans fonction prédéfinie de portefeuille ressemble à ce qui suit :

"PBF | Database Secret Rotation without Wallet | INFO | 2024-01-31T18:06:50.809Z | Fetching details from Events JSON"