Azure Container Apps permet à votre application de stocker de façon sécurisée des valeurs de configuration sensibles. Une fois les secrets définis au niveau de l'application, les valeurs sécurisées sont disponibles pour les révisions dans vos applications conteneurs. En outre, vous pouvez faire référence à des valeurs garanties dans les règles de mise à l'échelle. Pour plus d’informations sur l’utilisation des secrets avec Dapr, reportez-vous à 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 comme référence à un secret stocké dans Azure Key Vault.
Stocker une valeur de secret dans Container Apps
Lorsque vous définissez des secrets par l'intermédiaire du 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.
Référencer des secrets à 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 comme secret dans votre application conteneur.
Pour référencer un secret à partir de Key Vault, vous devez au préalable activer l'identité managée dans votre application conteneur et octroyer à l'identité l'accès aux secrets de 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 dans Key Vault à l’aide de l’identité spécifiée. Pour utiliser une identité managée utilisateur, remplacez system par l’ID de ressource de l’identité.
Remplacez <KEY-VAULT-SECRET-URI> par 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/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0/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> par 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 à la place de l’ID de ressource.
Remarque
L’identité affectée par l’utilisateur doit avoir l’accès pour lire le 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 disponible qu’après la création de l’application conteneur.
Les références Key Vault des secrets ne sont pas prises en charge dans PowerShell.
Remarque
Si vous utilisez une UDR avec le Pare-feu Azure, vous devez ajouter l’étiquette de service AzureKeyVault et le FQDN login.microsoft.com à la liste verte de votre pare-feu. Reportez-vous à la configuration d’UDR avec le Pare-feu Azure pour déterminer les étiquettes de service supplémentaires dont vous avez besoin.
URI de secret Key Vault et rotation des secrets
L’URI d’un secret Key Vault doit être 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érencer la version la plus récente d’un secret.
Si aucune version n’est 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 deviennent 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 contrôler totalement la version à utiliser d’un secret, 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 révision.
Accédez à la page de votre application conteneur dans le portail Azure.
Ouvrez la page Gestion des révisions.
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.
Saisissez 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 des montages de volume lorsque vous créez une 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 à la page de votre application conteneur dans le portail Azure.
Ouvrez la page Gestion des révisions.
Sélectionnez Créer une nouvelle révision.
Dans la page Créer et déployer une nouvelle révision,
sélectionnez un conteneur, puis Modifier.
Dans la section Montages de volume, développez la section Secrets.
Sélectionnez Créer un volume.
Saisissez les informations suivantes :
Nom : mysecrets
Monter tous les secrets : activé
Remarque
Si vous souhaitez charger des secrets spécifiques, désactivez Monter 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 révision avec le montage de 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é au niveau du chemin /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 leur chemin dans le volume monté, vous définissez les secrets dans le tableau secrets de l’objet volume. L’exemple suivant montre comment charger uniquement le secret queue-connection-string dans le montage du volume mysecrets avec le nom de fichier connection-string.txt.
Dans votre application, vous pouvez lire le secret à partir d’un fichier qui se trouve dans /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é au niveau du chemin /mnt/secrets. L’application peut ensuite lire les secrets en tant que fichiers dans le montage de volume.