Oefening: omgevingsvariabelen instellen

Voltooid

Met omgevingsvariabelen kunt u de toepassing dynamisch configureren of het script uitvoeren van de container. U kunt de Azure CLI, PowerShell of Azure Portal gebruiken om variabelen in te stellen wanneer u de container maakt. Beveiligde omgevingsvariabelen voorkomen dat gevoelige informatie wordt weergegeven in de uitvoer van de container.

Maak een Azure Cosmos DB-exemplaar en gebruik omgevingsvariabelen om de verbindingsgegevens door te geven aan een Azure-containerinstantie. Een toepassing in de container gebruikt de variabelen om gegevens van Azure Cosmos DB te schrijven en lezen. Maak zowel een omgevingsvariabele als een beveiligde omgevingsvariabele, zodat u het verschil tussen deze variabelen kunt zien.

Azure Cosmos DB implementeren

  1. Wanneer u Azure Cosmos DB implementeert, geeft u een unieke databasenaam op. Voer voor leerdoeleinden deze opdracht uit in Cloud Shell om een Bash-variabele te maken die een unieke naam bevat:

    COSMOS_DB_NAME=aci-cosmos-db-$RANDOM
    
  2. Voer deze az cosmosdb create opdracht uit om uw Azure Cosmos DB-exemplaar te maken:

    COSMOS_DB_ENDPOINT=$(az cosmosdb create \
      --resource-group learn-deploy-aci-rg \
      --name $COSMOS_DB_NAME \
      --query documentEndpoint \
      --output tsv)
    

    Het uitvoeren van deze opdracht kan enkele minuten duren.

    $COSMOS_DB_NAME geeft de unieke databasenaam op. De opdracht drukt het eindpuntadres van uw database af. Hier slaat de opdracht dit adres op in de Bash-variabele COSMOS_DB_ENDPOINT.

  3. Voer az cosmosdb keys list deze opdracht uit om de Azure Cosmos DB-verbindingssleutel op te halen en op te slaan in een Bash-variabele met de naam COSMOS_DB_MASTERKEY:

    COSMOS_DB_MASTERKEY=$(az cosmosdb keys list \
      --resource-group learn-deploy-aci-rg \
      --name $COSMOS_DB_NAME \
      --query primaryMasterKey \
      --output tsv)
    

Een container implementeren die met uw database werkt

Maak een Azure-containerinstantie die records kan lezen en schrijven naar uw Azure Cosmos DB-exemplaar.

In de twee omgevingsvariabelen die u in het vorige deel hebt gemaakt, COSMOS_DB_ENDPOINT en COSMOS_DB_MASTERKEY, staan de waarden die u nodig hebt om verbinding te maken met het Azure Cosmos DB-exemplaar.

  1. Voer de volgende az container create opdracht uit om de container te maken:

    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 verwijst naar een containerinstallatiekopieën waarop een fictieve stem-app wordt uitgevoerd.

    Noteer het argument --environment-variables. In dit argument worden de omgevingsvariabelen opgegeven die worden doorgegeven aan de container wanneer de container wordt gestart. De containerinstallatiekopie is geconfigureerd om naar deze omgevingsvariabelen te zoeken. Geef de naam van het Azure Cosmos DB-eindpunt en de bijbehorende verbindingssleutel door.

  2. Voer de opdracht uit om het az container show openbare IP-adres van uw container op te halen:

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo \
      --query ipAddress.ip \
      --output tsv
    
  3. Ga in een browser naar het IP-adres van uw container.

    Belangrijk

    Soms duurt het een paar minuten voordat containers volledig worden gestart en verbindingen kunnen worden ontvangen. Als er geen antwoord is wanneer u naar het IP-adres in uw browser gaat, wacht u even en vernieuwt u de pagina.

    Zodra de app beschikbaar is, krijgt u deze pagina:

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

    Probeer een stem uit te brengen voor katten of honden. Elke stem wordt bewaard in uw Azure Cosmos DB-exemplaar.

Beveiligde omgevingsvariabelen gebruiken om verbindingsinformatie te verbergen

In de vorige sectie hebt u twee omgevingsvariabelen gebruikt om uw container te maken. U hebt standaard toegang tot deze omgevingsvariabelen via de Azure-portal en opdrachtregelprogramma's in tekst zonder opmaak.

In deze sectie leert u hoe u kunt voorkomen dat gevoelige informatie, zoals verbindingssleutels, in tekst zonder opmaak wordt weergegeven.

  1. Bekijk eerst het huidige gedrag. Voer de volgende az container show opdracht uit om de omgevingsvariabelen van uw container weer te geven:

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo \
      --query containers[0].environmentVariables
    

    U krijgt uitvoer met beide waarden in tekst zonder opmaak. Hier volgt een voorbeeld:

    [
      {
        "name": "COSMOS_DB_ENDPOINT",
        "secureValue": null,
        "value": "https://aci-cosmos.documents.azure.com:443/"
      },
      {
        "name": "COSMOS_DB_MASTERKEY",
        "secureValue": null,
        "value": "Xm5BwdLlCllBvrR26V00000000S2uOusuglhzwkE7dOPMBQ3oA30n3rKd8PKA13700000000095ynys863Ghgw=="
      }
    ]
    

    Hoewel deze waarden niet zichtbaar zijn voor uw gebruikers via de stemtoepassing, is het een goede beveiligingspraktijk om ervoor te zorgen dat gevoelige informatie (zoals verbindingssleutels) niet wordt opgeslagen in tekst zonder opmaak.

    Beveiligde omgevingsvariabelen voorkomen de uitvoer van niet-versleutelde tekst. Als u veilige omgevingsvariabelen wilt gebruiken, gebruikt u het --secure-environment-variables argument in plaats van het --environment-variables argument.

  2. Voer de volgende opdracht uit om een tweede container met de naam aci-demo-secure te maken die gebruikmaakt van beveiligde omgevingsvariabelen:

    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
    

    Let op het gebruik van het argument --secure-environment-variables.

  3. Voer de volgende az container show opdracht uit om de omgevingsvariabelen van uw container weer te geven:

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo-secure \
      --query containers[0].environmentVariables
    

    Deze keer ziet u dat uw omgevingsvariabelen niet worden weergegeven in tekst zonder opmaak:

    [
      {
        "name": "COSMOS_DB_ENDPOINT",
        "secureValue": null,
        "value": null
      },
      {
        "name": "COSMOS_DB_MASTERKEY",
        "secureValue": null,
        "value": null
      }
    ]
    

    In feite worden de waarden van uw omgevingsvariabelen helemaal niet weergegeven. Dat klopt, omdat deze waarden verwijzen naar gevoelige informatie. Het is hier alleen nodig om te weten dat de omgevingsvariabelen bestaan.