Oefening: omgevingsvariabelen instellen
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.
Hier maakt u een Azure Cosmos DB-exemplaar en gebruikt u 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. U maakt zowel een omgevingsvariabele als een beveiligde omgevingsvariabele, zodat u het verschil tussen deze variabelen kunt zien.
Azure Cosmos DB implementeren
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
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-variabeleCOSMOS_DB_ENDPOINT
.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 naamCOSMOS_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
Vervolgens maakt u een Azure-containerinstantie die records naar uw Azure Cosmos DB-exemplaar kan lezen en schrijven.
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.
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.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
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:
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.
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": "abcdefghijklmnopqrztuvwxyz0123456789==" } ]
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.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
.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.