Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure Container Apps permet à votre application de stocker en toute sécurité les 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.
- De nouvelles révisions ne sont pas générées par l’ajout, la suppression ou la modification de secrets.
- Chaque révision d’application peut référencer un ou plusieurs secrets.
- Plusieurs révisions peuvent référencer 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.
Autorisations pour la gestion des secrets
Azure Container Apps expose des opérations séparées listSecrets pour les applications conteneur, les jobs et les composants Dapr. Ces opérations renvoient des valeurs secrètes en texte clair. Accordez ces autorisations uniquement aux identités qui doivent lire des valeurs secrètes.
Plusieurs rôles intégrés Azure pour Container Apps définissent des autorisations à l’aide de caractères génériques, par souci de simplicité. Les exemples suivants permettent de lire des valeurs secrètes via une autorisation générique ou explicite listSecrets, même lorsque le nom ou la description du rôle suggère un accès plus restreint. Cette liste n'est pas exhaustive ; examinez les rôles intégrés actuels d'Azure pour les conteneurs avant d'en attribuer un.
Les rôles suivants donnent accès aux valeurs secrètes des applications conteneur ou des tâches conteneur :
| Rôle prédéfini | Autorisations pertinentes dans la définition du rôle | Opération de mise en correspondance des secrets |
|---|---|---|
| Contributeur Container Apps | Microsoft.App/containerApps/*/action |
Microsoft.App/containerApps/listSecrets/action |
| Opérateur Container Apps | Microsoft.App/containerApps/*/action |
Microsoft.App/containerApps/listSecrets/action |
| Contributeur de tâches Container Apps | Microsoft.App/jobs/*/action |
Microsoft.App/jobs/listSecrets/action |
| Opérateur de tâches Container Apps | Microsoft.App/jobs/*/action |
Microsoft.App/jobs/listSecrets/action |
Les rôles suivants donnent accès aux valeurs secrètes configurées pour les composants Dapr :
| Rôle prédéfini | Autorisations pertinentes dans la définition du rôle | Opération de mise en correspondance des secrets |
|---|---|---|
| Contributeur Container Apps ManagedEnvironments | Microsoft.App/managedEnvironments/*/action |
Microsoft.App/managedEnvironments/daprComponents/listSecrets/action |
| Contributeur de Container Apps ConnectedEnvironments |
Microsoft.App/connectedEnvironments/*, Microsoft.App/connectedEnvironments/daprComponents/listSecrets/action |
Microsoft.App/connectedEnvironments/daprComponents/listSecrets/action |
L’accès effectif dépend de la portée de l’attribution du rôle. Par exemple, une attribution à l’échelle du groupe de ressources accorde l’autorisation correspondante pour chaque ressource applicable de ce groupe de ressources.
Important
Les descriptions des rôles d’Opérateur d’Applications Conteneurs et d’Opérateur d’Emplois Applications Conteneurs mettent l’accent sur les tâches opérationnelles. Cependant, leurs actions imprévisibles accordent également la permission de lister des secrets. Examinez la liste complète des autorisations d’un poste avant de lui attribuer.
Créez un rôle personnalisé avec des permissions plus étroites
Les rôles intégrés sont une commodité, pas une limite. Si aucun rôle intégré ne correspond au niveau d’accès que vous souhaitez accorder, définissez un rôle personnalisé Azure qui liste uniquement les opérations dont vous avez besoin et omet l’actionlistSecrets.
Par exemple, le rôle personnalisé suivant permet à un utilisateur de voir les tâches et les exécutions et d’arrêter d’exécuter les exécutions, sans accorder l’action listSecrets suivante :
{
"Name": "Container Apps Jobs Execution Stopper",
"IsCustom": true,
"Description": "View Container Apps jobs and stop running executions.",
"Actions": [
"Microsoft.App/jobs/read",
"Microsoft.App/jobs/executions/read",
"Microsoft.App/jobs/execution/read",
"Microsoft.App/jobs/stop/action",
"Microsoft.App/jobs/stop/execution/action",
"Microsoft.App/managedEnvironments/read"
],
"NotActions": [],
"AssignableScopes": [
"/subscriptions/<SUBSCRIPTION_ID>"
]
}
Évitez les schémas de jokers comme Microsoft.App/jobs/*/action dans une définition de rôle personnalisée. Ce caractère générique autorise toutes les opérations actuelles et futures qui correspondent au motif, y compris listSecrets.
Warning
Pour les travaux Container Apps, omettre l’action listSecrets d’un rôle personnalisé ne suffit pas à protéger les valeurs des secrets si le rôle accorde également Microsoft.App/jobs/start/action.
L’API REST Jobs - Start accepte un modèle d’exécution optionnel qui peut écraser les images du conteneur, les commandes et les variables d’environnement principales et initiales. Un utilisateur capable de lancer un travail et connaissant le nom d’un secret peut consulter ce secret depuis un conteneur de son choix et lire sa valeur à l’intérieur du conteneur. Le conteneur peut également utiliser n’importe quelle identité gérée configurée pour lui être disponible. Considérez l’autorisation de démarrer un emploi comme une autorisation d’utiliser les secrets du poste et les identités gérées disponibles.
Pour plus d’informations, consultez Rôles Azure personnalisés.
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.
Remarque
Évitez de spécifier la valeur d’un secret directement dans un environnement de production. Utilisez plutôt une référence à un secret stocké dans Azure Key Vault, comme décrit dans la valeur secrète Store dans la section Container Apps.
Stocker une valeur secrète dans des Container Apps
Les éléments suivants sont utilisés lorsque vous définissez des secrets via le portail ou via différentes options de ligne de commande.
Accédez à votre application conteneur dans le portail Azure.
Dans la section Sécurité , sélectionnez Secrets.
Sélectionnez Ajouter.
Dans le volet contextuel Ajouter un secret, entrez les informations suivantes :
- Nom : Nom du secret.
- Type : sélectionnez Container Apps Secret.
- Valeur : Valeur du secret.
Sélectionnez Ajouter.
Référencer le secret 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’identité l’accès 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 de Key Vault, attribuez le rôle Azure RBAC Key Vault Secrets User à l'identité gérée.
Accédez à votre application conteneur dans le portail Azure.
Sous la section Sécurité , sélectionnez Identité.
Dans l’onglet Affectée par le système, définissez État sur Activé.
Remarque
Vous pouvez également utiliser une identité managée attribuée par l'utilisateur, qui peut être réutilisée sur plusieurs ressources et persiste indépendamment du cycle de vie de l’application. Pour l’utiliser, sélectionnez l’onglet Affecté par l’utilisateur et choisissez une identité existante.
Sélectionnez Enregistrer pour activer l’identité managée affectée par le système.
Une fenêtre contextuelle s’affiche pour confirmer que vous souhaitez activer l’identité managée affectée par le système et inscrire votre application conteneur avec Microsoft Entra ID. Sélectionnez Oui.
Dans la section Sécurité , sélectionnez Secrets.
Sélectionnez Ajouter.
Dans le volet contextuel Ajouter un secret, entrez les informations suivantes :
- Nom : Nom du secret.
- Type : sélectionnez référence Key Vault.
- URL du secret Key Vault : URI de votre secret dans Key Vault. Cette URI a le format suivant :
https://<YOUR_KEY_VAULT_NAME>.vault.azure.net/secrets/<YOUR_SECRET_NAME>/<32_DIGIT_HEX_ID> - Identité : sélectionnez Système affecté.
Sélectionnez Ajouter.
Remarque
Si vous utilisez UDR avec Pare-feu Azure, vous devez ajouter la balise de service AzureKeyVault et le nom de domaine complet login.microsoft.com à la liste d'autorisation de votre pare-feu. Reportez-vous à configuring 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é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 à votre application conteneur dans le portail Azure.
Dans la section Application, sélectionnez Révisions et répliques.
Dans la page Révisions et réplicas , sélectionnez Créer une nouvelle révision.
Dans la page Créer et déployer une nouvelle révision, sous l’onglet Conteneur, sous la section Image conteneur, sélectionnez un conteneur.
Sélectionnez Modifier.
Dans le volet de contexte Modifier un conteneur, sélectionnez l’onglet 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 avez défini précédemment.
Cliquez sur Enregistrer.
Dans la page Créer et déployer une nouvelle révision, sélectionnez Créer pour créer la nouvelle révision.
Montage des 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.
Exemple
Une fois que vous avez défini un secret dans votre application de conteneur, vous pouvez y faire référence lors du montage d'un volume lorsque vous créez une nouvelle révision.
Accédez à votre application conteneur dans le portail Azure.
Dans la section Application, sélectionnez Révisions et répliques.
Dans la page Révisions et réplicas , sélectionnez Créer une nouvelle révision.
Dans la page Créer et déployer une nouvelle révision, sous l’onglet Conteneur, sous la section Image conteneur, sélectionnez un conteneur.
Sélectionnez Modifier.
Dans le volet contextuel Modifier un conteneur, sélectionnez l’onglet Montages de volume.
Sélectionnez Créer un nouveau volume.
Dans le volet contextuel Ajouter un volume, entrez les informations suivantes :
-
Type de volume : Sélectionnez
Secret. -
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.
-
Type de volume : Sélectionnez
Sélectionnez Ajouter.
Dans le volet de contexte Modifier un conteneur, sous Nom du volume, sélectionnez mysecrets.
Sous Chemin de montage, entrez
/mnt/secrets.Cliquez sur Enregistrer.
Dans la page Créer et déployer une nouvelle révision, sélectionnez Créer pour créer la nouvelle révision avec le montage du volume.
Résoudre les problèmes des références de Key Vault
Lorsque vous référencez des secrets à partir de Azure Key Vault, vous pouvez rencontrer des problèmes lors de la récupération ou de la synchronisation des secrets. Voici les erreurs et résolutions courantes :
| Error | La cause | Résolution |
|---|---|---|
| Identité gérée non activée | L’application conteneurisée n’a pas d’identité managée affectée. | Activez l'identité managée gérée par le système ou par l'utilisateur sur votre application de conteneur. Consultez Identités managées. |
| Identité introuvable | L’identité managée spécifiée n’existe pas ou n’est pas affectée à l’application conteneur. | Vérifiez que l’identité est créée et affectée à l’application conteneur dans la section Identité . |
| Secret désactivé dans Key Vault | Le secret est désactivé dans la ressource Key Vault. | Accédez à votre Key Vault dans le portail Azure et activez le secret. |
| Échec de l’authentification | L’identité managée ne dispose pas des autorisations requises pour lire le secret. | Accordez le rôle utilisateur des secrets de Key Vault à l'identité gérée sur votre Key Vault. Voir Utilisateur des secrets Key Vault. |
| Autorisation RBAC refusée | L’identité managée dispose d’autorisations insuffisantes pour accéder au Key Vault. | Vérifiez l’attribution de rôle RBAC sur le coffre de clés et assurez-vous qu'elle inclut des autorisations de lecture pour les secrets. |