Exercice : Définir des variables d’environnement
Les variables d’environnement vous permettent de configurer dynamiquement l’application ou le script que le conteneur exécute. Vous pouvez utiliser Azure CLI, PowerShell ou le portail Azure pour définir des variables quand vous créez le conteneur. Les variables d’environnement sécurisées empêchent l’affichage d’informations sensibles dans la sortie du conteneur.
Créez une instance d’Azure Cosmos DB et utilisez des variables d’environnement pour passer les informations de connexion à une instance de conteneur Azure. Une application dans le conteneur utilise les variables pour écrire et lire des données dans Azure Cosmos DB. Créez une variable d’environnement et une variable d’environnement sécurisée pour bien voir la différence entre les deux.
Déployer Azure Cosmos DB
Quand vous déployez Azure Cosmos DB, vous spécifiez un nom de base de données unique. À des fins d’apprentissage, exécutez cette commande dans Cloud Shell pour créer une variable Bash qui contient un nom unique :
COSMOS_DB_NAME=aci-cosmos-db-$RANDOM
Exécutez cette commande
az cosmosdb create
pour créer votre instance Azure Cosmos DB :COSMOS_DB_ENDPOINT=$(az cosmosdb create \ --resource-group learn-deploy-aci-rg \ --name $COSMOS_DB_NAME \ --query documentEndpoint \ --output tsv)
L’exécution de cette commande peut prendre plusieurs minutes.
$COSMOS_DB_NAME
spécifie le nom de votre base de données unique. La commande affiche l’adresse du point de terminaison pour votre base de données. Ici, la commande enregistre cette adresse dans la variable BashCOSMOS_DB_ENDPOINT
.Exécutez
az cosmosdb keys list
pour obtenir la clé de connexion d’Azure Cosmos DB et stockez-la dans une variable Bash nomméeCOSMOS_DB_MASTERKEY
:COSMOS_DB_MASTERKEY=$(az cosmosdb keys list \ --resource-group learn-deploy-aci-rg \ --name $COSMOS_DB_NAME \ --query primaryMasterKey \ --output tsv)
Déployer un conteneur qui fonctionne avec votre base de données
Créez une instance de conteneur Azure qui peut lire et écrire des enregistrements dans votre instance d’Azure Cosmos DB.
Les deux variables d’environnement que vous avez créées dans la dernière partie, COSMOS_DB_ENDPOINT
et COSMOS_DB_MASTERKEY
, contiennent les valeurs nécessaires pour vous vous connecter à l’instance d’Azure Cosmos DB.
Exécutez la commande
az container create
suivante pour créer le conteneur :az container create \ --resource-group learn-deploy-aci-rg \ --name aci-demo \ --image mcr.microsoft.com/azuredocs/azure-vote-front:cosmosdb \ --ip-address Public \ --location eastus \ --environment-variables \ COSMOS_DB_ENDPOINT=$COSMOS_DB_ENDPOINT \ COSMOS_DB_MASTERKEY=$COSMOS_DB_MASTERKEY
azuredocs/azure-vote-front:cosmosdb fait référence à une image de conteneur qui exécute une application de vote fictive.
Notez l’argument
--environment-variables
. Cet argument spécifie les variables d’environnement qui sont passées au conteneur lors du démarrage. L’image du conteneur est configurée pour rechercher ces variables d’environnement. Passez le nom du point de terminaison Azure Cosmos DB et sa clé de connexion.Exécutez la commande
az container show
pour obtenir l’adresse IP publique de votre conteneur :az container show \ --resource-group learn-deploy-aci-rg \ --name aci-demo \ --query ipAddress.ip \ --output tsv
Dans un navigateur, accédez à l’adresse IP de votre conteneur.
Important
Les conteneurs ont parfois besoin d’une minute ou deux pour démarrer totalement et être prêts à recevoir des connexions. Si vous n’avez pas de réponse quand vous accédez à l’adresse IP dans votre navigateur, attendez quelques instants et actualisez la page.
Une fois que l’application est disponible, vous obtenez cette page :
Essayez de voter pour des chats ou des chiens. Chaque vote est stocké dans votre instance d’Azure Cosmos DB.
Utiliser des variables d’environnement sécurisées pour masquer les informations de connexion
Dans la section précédente, vous avez utilisé deux variables d’environnement pour créer votre conteneur. Par défaut, ces variables d’environnement sont accessibles via le portail Azure et les outils en ligne de commande en texte brut.
Dans cette section, découvrez comment empêcher l’affichage en texte brut d’informations sensibles, comme les clés de connexion.
Commençons par regarder le comportement actuel en action. Exécutez la commande
az container show
suivante pour afficher les variables d’environnement de votre conteneur :az container show \ --resource-group learn-deploy-aci-rg \ --name aci-demo \ --query containers[0].environmentVariables
Vous obtenez une sortie avec les deux valeurs en texte brut. Voici un exemple :
[ { "name": "COSMOS_DB_ENDPOINT", "secureValue": null, "value": "https://aci-cosmos.documents.azure.com:443/" }, { "name": "COSMOS_DB_MASTERKEY", "secureValue": null, "value": "abcdefghijklmnopqrztuvwxyz0123456789==" } ]
Bien que ces valeurs ne soient pas visibles pour vos utilisateurs dans l’application de vote, une bonne pratique de sécurité consiste à garantir que les informations sensibles, comme les clés de connexion, ne soient pas stockées en texte brut.
Les variables d’environnement sécurisées empêchent la sortie en texte clair. Pour utiliser des variables d’environnement sécurisées, utilisez l’argument
--secure-environment-variables
au lieu de l’argument--environment-variables
.Exécutez la commande suivante pour créer un deuxième conteneur, nommé aci-demo-secure, qui utilise des variables d’environnement sécurisées :
az container create \ --resource-group learn-deploy-aci-rg \ --name aci-demo-secure \ --image mcr.microsoft.com/azuredocs/azure-vote-front:cosmosdb \ --ip-address Public \ --location eastus \ --secure-environment-variables \ COSMOS_DB_ENDPOINT=$COSMOS_DB_ENDPOINT \ COSMOS_DB_MASTERKEY=$COSMOS_DB_MASTERKEY
Notez l’utilisation de l’argument
--secure-environment-variables
.Exécutez la commande
az container show
suivante pour afficher les variables d’environnement de votre conteneur :az container show \ --resource-group learn-deploy-aci-rg \ --name aci-demo-secure \ --query containers[0].environmentVariables
Cette fois, vous pouvez voir que vos variables d’environnement n’apparaissent pas en texte brut :
[ { "name": "COSMOS_DB_ENDPOINT", "secureValue": null, "value": null }, { "name": "COSMOS_DB_MASTERKEY", "secureValue": null, "value": null } ]
En fait, les valeurs de vos variables d’environnement n’apparaissent pas du tout. Cela convient, car ces valeurs font référence à des informations sensibles. Ici, il vous suffit de savoir que les variables d’environnement existent.