Exercice : Définir des variables d’environnement

Effectué

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

  1. 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
    
  2. 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 Bash COSMOS_DB_ENDPOINT.

  3. Exécutez az cosmosdb keys list pour obtenir la clé de connexion d’Azure Cosmos DB et stockez-la dans une variable Bash nommée COSMOS_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.

  1. 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.

  2. 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
    
  3. 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 :

    Screenshot that shows the Azure voting application with two choices in a browser. Cats and Dogs.

    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.

  1. 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": "Xm5BwdLlCllBvrR26V00000000S2uOusuglhzwkE7dOPMBQ3oA30n3rKd8PKA13700000000095ynys863Ghgw=="
      }
    ]
    

    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.

  2. 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.

  3. 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.