Azure Container Apps permet à votre application de stocker de façon sécurisée des valeurs de configuration sensibles. Une fois que les secrets sont définis au niveau de l’application, les valeurs sécurisées sont disponibles pour les révisions dans vos applications conteneur. En outre, vous pouvez référencer des valeurs sécurisées à l’intérieur des règles d’échelle. Pour plus d’informations sur l’utilisation des secrets avec Dapr, reportez-vous à l’intégration de Dapr.
Les secrets sont délimités à une application, en dehors de toute révision spécifique d’une application.
L’ajout, la suppression ou le changement de secrets ne génèrent pas de nouvelles révisions.
Chaque révision d’application peut référencer un ou plusieurs secrets.
Plusieurs révisions peuvent référencer le ou les mêmes secrets.
Un secret mis à jour ou supprimé n’affecte pas automatiquement les révisions existantes dans votre application. Lors de la mise à jour ou de la suppression d’un secret, vous pouvez répondre à ces changements de l’une des deux manières suivantes :
Déployer une nouvelle révision.
Redémarrer une révision existante.
Avant de supprimer un secret, déployez une nouvelle révision qui ne fait plus référence à l’ancien secret. Désactivez ensuite toutes les révisions qui font référence au secret.
Définition de secrets
Les secrets sont définis comme un ensemble de paires nom/valeur. La valeur de chaque secret est spécifiée directement ou en tant que référence à un secret stocké dans Azure Key Vault.
Stocker la valeur secrète dans Container Apps
Lorsque vous définissez des secrets via le portail ou via différentes options de ligne de commande.
Ici, une chaîne de connexion à un compte de stockage de file d’attente est déclarée dans le tableau secrets. Dans cet exemple, remplacez <MY-CONNECTION-STRING-VALUE> par la valeur de votre chaîne de connexion.
Lorsque vous créez une application conteneur, les secrets sont définis à l’aide du paramètre --secrets.
Le paramètre accepte un jeu de paires nom/valeur délimité par des espaces.
Ici, une chaîne de connexion à un compte de stockage de file d’attente est déclarée dans le paramètre --secrets. Remplacez <CONNECTION_STRING> par la valeur de votre chaîne de connexion.
Quand vous créez une application conteneur, les secrets sont définis comme un ou plusieurs objets Secret passés dans le paramètre ConfigurationSecrets.
Ici, une chaîne de connexion à un compte de stockage de file d’attente est déclarée. La valeur de queue-connection-string provient d’une variable d’environnement nommée $QueueConnectionString.
Secret de référence à partir de Key Vault
Lorsque vous définissez un secret, vous créez une référence à un secret stocké dans Azure Key Vault. Container Apps récupère automatiquement la valeur secrète de Key Vault et la rend disponible en tant que secret dans votre application conteneur.
Pour référencer un secret à partir de Key Vault, vous devez d’abord activer l’identité managée dans votre application conteneur et accorder l’accès d’identité aux secrets Key Vault.
Pour activer l’identité managée dans votre application conteneur, consultez Identités managées.
Pour accorder l’accès aux secrets Key Vault, créez une stratégie d’accès dans Key Vault pour l’identité managée que vous avez créée. Activez l’autorisation de secret « Get » sur cette stratégie.
Ici, une chaîne de connexion à un compte de stockage de file d’attente est déclarée dans le tableau secrets. Sa valeur est automatiquement récupérée à partir de Key Vault à l’aide de l’identité spécifiée. Pour utiliser une identité managée par l’utilisateur, remplacez system par l’ID de ressource de l’identité.
Remplacez <KEY-VAULT-SECRET-URI> l’URI de votre secret dans Key Vault.
Lorsque vous créez une application conteneur, les secrets sont définis à l’aide du paramètre --secrets.
Le paramètre accepte un jeu de paires nom/valeur délimité par des espaces.
Chaque paire est délimitée par un signe égal (=).
Pour spécifier une référence Key Vault, utilisez le format <SECRET_NAME>=keyvaultref:<KEY_VAULT_SECRET_URI>,identityref:<MANAGED_IDENTITY_ID>. Par exemple : queue-connection-string=keyvaultref:https://mykeyvault.vault.azure.net/secrets/queuereader,identityref:/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity.
Ici, une chaîne de connexion à un compte de stockage de file d’attente est déclarée dans le paramètre --secrets. Remplacez <KEY_VAULT_SECRET_URI> l’URI de votre secret dans Key Vault. Remplacez <USER_ASSIGNED_IDENTITY_ID> par l’ID de ressource de l’identité affectée par l’utilisateur. Pour l’identité affectée par le système, utilisez system plutôt que l’ID de ressource.
Remarque
L’identité affectée par l’utilisateur doit avoir accès à la lecture du secret dans Key Vault. L’identité affectée par le système ne peut pas être utilisée avec la commande create, car elle n’est pas disponible tant que l’application conteneur n’est pas créée.
Les références secrets Key Vault ne sont pas prises en charge dans PowerShell.
Remarque
Si vous utilisez UDR Avec Pare-feu Azure, vous devez ajouter la AzureKeyVault balise de service et le nom de domaine complet login.microsoft.com à la liste verte de votre pare-feu. Reportez-vous à la configuration de l’UDR avec Pare-feu Azure pour déterminer les balises de service supplémentaires dont vous avez besoin.
URI de secret Key Vault et rotation des secrets
L’URI du secret Key Vault doit se trouver dans l’un des formats suivants :
https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931: référencer une version spécifique d’un secret.
https://myvault.vault.azure.net/secrets/mysecret: référencez la dernière version d’un secret.
Si une version n’est pas spécifiée dans l’URI, l’application utilise la dernière version qui existe dans le coffre de clés. Lorsque des versions plus récentes sont disponibles, l’application récupère automatiquement la dernière version dans les 30 minutes. Toutes les révisions actives qui référencent le secret dans une variable d’environnement sont automatiquement redémarrées pour récupérer la nouvelle valeur.
Pour le contrôle total de la version d’un secret utilisée, spécifiez la version dans l’URI.
Référencement des secrets dans des variables d’environnement
Après avoir déclaré des secrets au niveau de l’application, comme décrit dans la section définition des secrets, vous pouvez les référencer dans des variables d’environnement lorsque vous créez une révision dans votre application conteneur. Lorsqu’une variable d’environnement fait référence à un secret, sa valeur est remplie avec la valeur définie dans le secret.
Exemple
L’exemple suivant montre une application qui déclare une chaîne de connexion au niveau de l’application. Cette connexion est référencée dans une variable d’environnement de conteneur et dans une règle d’échelle.
Une fois que vous avez défini un secret dans votre application conteneur, vous pouvez le référencer dans une variable d’environnement lorsque vous créez une nouvelle révision.
Accédez à votre application conteneur dans le Portail Azure.
Ouvrez la page de gestion de révision.
Sélectionnez Créer une nouvelle révision.
Dans la page Créer et déployer une nouvelle révision , sélectionnez un conteneur.
Dans la section Variables d’environnement, sélectionnez Ajouter.
Entrez les informations suivantes :
Nom : nom de la variable d’environnement.
Source : sélectionnez Référencer un secret.
Valeur : sélectionnez le secret que vous souhaitez référencer.
Cliquez sur Enregistrer.
Sélectionnez Créer pour créer la nouvelle révision.
Dans cet exemple, la chaîne de connexion d’application est déclarée comme queue-connection-string et devient disponible ailleurs dans les sections de configuration.
Ici, la variable d’environnement nommée connection-string obtient sa valeur du secret queue-connection-string au niveau de l’application. En outre, la configuration d’authentification de la règle de mise à l’échelle de Stockage File d’attente Azure utilise le secret queue-connection-string pour définir sa connexion.
Pour éviter de valider des valeurs de secret dans le contrôle de code source avec votre modèle ARM, transmettez les valeurs de secret en tant que paramètres de modèle ARM.
Dans cet exemple, vous créez une application de conteneur en utilisant Azure CLI avec un secret référencé dans une variable d’environnement. Pour référencer un secret dans une variable d’environnement dans Azure CLI, définissez sa valeur sur secretref:, suivi du nom du secret.
Ici, la variable d’environnement nommée connection-string obtient sa valeur du secret queue-connection-string au niveau de l’application.
Dans cet exemple, vous créez un conteneur en utilisant Azure PowerShell avec un secret référencé dans une variable d’environnement. Pour référencer le secret dans une variable d’environnement avec PowerShell, définissez sa valeur sur secretref:, suivi du nom du secret.
Ici, la variable d’environnement nommée ConnectionString obtient sa valeur du secret $QueueConnectionString au niveau de l’application.
Montage de secrets dans un volume
Après avoir déclaré des secrets au niveau de l’application, comme décrit dans la section définition des secrets , vous pouvez les référencer dans les montages de volume lorsque vous créez une nouvelle révision dans votre application conteneur. Lorsque vous montez des secrets dans un volume, chaque secret est monté en tant que fichier dans le volume. Le nom de fichier est le nom du secret, et le contenu du fichier est la valeur du secret. Vous pouvez charger tous les secrets dans un montage de volume, ou vous pouvez charger des secrets spécifiques.
Une fois que vous avez défini un secret dans votre application conteneur, vous pouvez le référencer dans un montage de volume lorsque vous créez une révision.
Accédez à votre application conteneur dans le Portail Azure.
Ouvrez la page de gestion de révision.
Sélectionnez Créer une nouvelle révision.
Dans la page Créer et déployer une nouvelle révision .
Sélectionnez un conteneur et sélectionnez Modifier.
Dans la section Montages de volume, développez la section Secrets .
Sélectionnez Créer un volume.
Entrez les informations suivantes :
Nom : mysecrets
Monter tous les secrets : activé
Remarque
Si vous souhaitez charger des secrets spécifiques, désactivez le montage de tous les secrets et sélectionnez les secrets que vous souhaitez charger.
Sélectionnez Ajouter.
Sous Nom du volume, sélectionnez mysecrets.
Sous Chemin de montage, entrez /mnt/secrets.
Cliquez sur Enregistrer.
Sélectionnez Créer pour créer la nouvelle révision avec le montage du volume.
Dans cet exemple, deux secrets sont déclarés au niveau de l’application. Ces secrets sont montés dans un volume nommé mysecrets de type Secret. Le volume est monté sur le chemin d’accès /mnt/secrets. L’application peut ensuite référencer les secrets dans le montage de volume.
Pour charger des secrets spécifiques et spécifier leurs chemins dans le volume monté, vous définissez les secrets dans le secrets tableau de l’objet de volume. L’exemple suivant montre comment charger uniquement le queue-connection-string secret dans le montage du mysecrets volume avec un nom de fichier .connection-string.txt
Dans votre application, vous pouvez lire le secret à partir d’un fichier situé à l’adresse /mnt/secrets/connection-string.txt.
Dans cet exemple, deux secrets sont déclarés au niveau de l’application. Ces secrets sont montés dans un volume nommé mysecrets de type Secret. Le volume est monté sur le chemin d’accès /mnt/secrets. L’application peut ensuite lire les secrets sous forme de fichiers dans le montage du volume.
Bientôt disponible : Tout au long de l’année 2024, nous abandonnerons progressivement le mécanisme de retour d’information GitHub Issues pour le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultez : https://aka.ms/ContentUserFeedback.