Stockage secret Azure App Service dans Azure Key Vault

Contenu

Aujourd'hui, je vais vous montrer comment stocker les secrets de configuration Azure App Service dans Azure Key Vault. Dans cet exemple, je vais utiliser un Plateforme DNN Site Web basé sur Azure App Service utilisant la base de données SQL, qui stocke la chaîne de connexion de la base de données SQL dans Azure Key Vault. Je ne modifierai en aucun cas la base de code de l'application pour accéder à Azure Key Vault. Nous tirerons parti de la fonctionnalité d'identité gérée d'App Service pour récupérer automatiquement les secrets de Key Vault.

Aprovisionar Azure Key Vault

  1. Aprovisionar Azure Key Vault

    779b7662-4e66-4a9c-8d08-2dd70a18e22d-7834662

  2. Pour cette démo, nous allons changer le modèle d'autorisation pour le nouveau contrôle d'accès basé sur les rôles Azure (RBAC). Il est actuellement en avant-première.

    cce042e2-835a-4acd-9650-f923cb854031-4931459

  3. En fonction de votre mise en œuvre, changez le réseau comme vous le souhaitez. Pour cette démo, nous le laisserons comme point de terminaison public pour correspondre aux paramètres App Service.

    8c23c374-cf92-4753-a008-124d32807146-5503519

  4. Clique sur le Revoir + Créer bouton pour démarrer le déploiement
  5. Une fois créé, ajoutez-vous à la fonction “Administrateur du coffre de clés (version d'aperçu)” via le contrôle d'accès (JE SUIS). Vous pouvez maintenant commencer à gérer les secrets.

    1a101595-cb28-436b-950d-bcf70c2635cd-4661991

Ajouter une chaîne de connexion aux secrets Key Vault

  1. Ajouter un nouveau secret à Key Vault

    afc018f4-afea-421e-ad81-62b90c1713a3-1233213

  2. Spécifiez le type secret “Manuel”, donnez-lui un nom et définissez la valeur sur la chaîne de connexion à la base de données SQL actuelle stockée dans l'application web.config

    a886528a-32b1-41a0-8a7a-0d5d99e0ac70-9724989

  3. Cliquez sur Créer. Une fois créé, cliquez sur le secret pour afficher les détails du secret, puis cliquez à nouveau sur la version actuelle
  4. À côté de l'identifiant secret, cliquez sur le bouton Copier dans le presse-papiers

    5f9c0428-1949-42e4-a87f-abc7b372229a-5831097

Ajouter la référence d'identifiant secret à la configuration Azure App Service

  1. Ouvrez les paramètres App Service et ajoutez un nouveau paramètre de chaîne de connexion
  2. Saisissez le nom de la chaîne de connexion (“SiteSqlServer” pour la plateforme DNN) et définissez la valeur “@ Microsoft.KeyVault (SecretUri = VALUE_FROM_CLIPBOARD)”, où VALUE_FROM_CLIPBOARD est celui de l'étape 4 de la section précédente.
  3. Cliquez sur Enregistrer pour enregistrer les paramètres de l'application.

    7de603cd-e42f-4106-93e0-059da43c379c-6346505

Autoriser App Service à accéder à Key Vault

  1. Dans App Service à nouveau, cliquez sur Identité pour activer l'identité attribuée par le système.
  2. Cliquez sur Enregistrer après l'activation “Activé” l'état

    5025f05c-fe64-42d1-9b2d-5f640ec697b8-3897923

  3. Cliquez sur le bouton “Attributions de rôles” puis cliquez “Ajouter une attribution de rôle (aperçu)”

    49c47071-6213-43b0-bb74-506bb4119cd7-6049316

  4. Dans l'attribution des rôles, choisir la portée “Coffre à clés”, abonnez-vous à l'abonnement où vous avez créé le Key Vault dans les étapes précédentes et le nom de la ressource Key Vault. Pour le rôle, il suffit de sélectionner “Utilisateur des clés secrètes du coffre-fort (aperçu)”

    52e833c4-2ef6-49ce-bd20-f6a16a9df816-5718828

  5. Finalement, accédez au fichier web.config du site Web de votre plate-forme DNN et supprimez le contenu de la chaîne de connexion.

    92e072cf-b7f0-4e59-9b9e-f3c306ee5805-3350173

  6. Visitez le site Web et vérifiez qu'il se charge correctement. À présent, la chaîne de connexion est stockée en toute sécurité dans Azure Key Vault et n'est plus stockée dans le système de fichiers.

Problèmes connus

  1. ERREUR: Une erreur apparaît “Mot clé non pris en charge: ‘@ microsoft.keyvault (secrets'”. J'ai constaté que les autorisations RBAC peuvent prendre une minute ou deux à appliquer, alors essayez après quelques minutes. Essayez également de redémarrer l'application pensée dans le portail App Service, donc rien n'est mis en cache.

    d31c9fb1-4cb2-4410-adb8-95917c3d8a15-1079568

  2. Lors de la vérification des journaux DNN log4net, vous voyez de nombreuses erreurs d'un processus essayant d'initialiser une connexion à une base de données avec une chaîne de connexion invalide pendant le processus d'initialisation DNN. Cette erreur se produit actuellement dans les versions 9.7.2 ou plus tôt avec une pull request en attente pour le corriger https://github.com/dnnsoftware/Dnn.Platform/issues/4227
  3. IMPORTANT: si vous prévoyez d'utiliser la fonctionnalité de sauvegarde d'Azure App Service, n'utilisez pas cette méthode pour stocker les chaînes de connexion à la base de données SQL dans Azure Key Vault, car ils ne sont pas pris en charge par la fonction de sauvegarde App Service. https://stackoverflow.com/questions/56101504/backingup-azure-webapp-when-connection-string-is-injected-through-keyvault

J'espère que ça aide!

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.