Ćwiczenie — ustawianie zmiennych środowiskowych

Ukończone

Zmienne środowiskowe umożliwiają dynamiczne konfigurowanie aplikacji lub skryptu uruchamianych przez kontener. Zmienne środowiskowe można ustawić podczas tworzenia kontenera za pomocą interfejsu wiersza polecenia platformy Azure, programu PowerShell lub witryny Azure Portal. Zabezpieczone zmienne środowiskowe uniemożliwiają wyświetlanie poufnych informacji w danych wyjściowych kontenera.

Utwórz wystąpienie usługi Azure Cosmos DB i użyj zmiennych środowiskowych, aby przekazać informacje o połączeniu do wystąpienia kontenera platformy Azure. Aplikacja w kontenerze używa tych zmiennych w celu zapisania i odczytania danych z usługi Azure Cosmos DB. Utwórz zarówno zmienną środowiskową, jak i zabezpieczoną zmienną środowiskową, aby zobaczyć różnicę między nimi.

Wdrażanie usługi Azure Cosmos DB

  1. Podczas wdrażania usługi Azure Cosmos DB należy podać unikatową nazwę bazy danych. W celach szkoleniowych uruchom to polecenie w usłudze Cloud Shell, aby utworzyć zmienną powłoki Bash zawierającą unikatową nazwę:

    COSMOS_DB_NAME=aci-cosmos-db-$RANDOM
    
  2. Uruchom to az cosmosdb create polecenie, aby utworzyć wystąpienie usługi Azure Cosmos DB:

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

    Wykonanie tego polecenia może potrwać kilka minut.

    $COSMOS_DB_NAME określa unikatową nazwę bazy danych użytkownika. Polecenie powoduje wyświetlenie adresu punktu końcowego dla bazy danych. W tym miejscu polecenie zapisuje ten adres w zmiennej powłoki Bash COSMOS_DB_ENDPOINT.

  3. Uruchom polecenie az cosmosdb keys list , aby pobrać klucz połączenia usługi Azure Cosmos DB i zapisać go w zmiennej powłoki Bash o nazwie COSMOS_DB_MASTERKEY:

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

Wdrażanie kontenera współdziałającego z bazą danych

Utwórz wystąpienie kontenera platformy Azure, które może odczytywać rekordy i zapisywać je w wystąpieniu usługi Azure Cosmos DB.

Dwie zmienne środowiskowe utworzone w ostatniej części, COSMOS_DB_ENDPOINT i COSMOS_DB_MASTERKEY, przechowują wartości, których potrzebujesz do połączenia się z wystąpieniem usługi Azure Cosmos DB.

  1. Uruchom następujące az container create polecenie, aby utworzyć kontener:

    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 odwołuje się do obrazu kontenera, który uruchamia fikcyjną aplikację do głosowania.

    Zanotuj argument --environment-variables. Ten argument określa zmienne środowiskowe przekazywane do kontenera podczas jego uruchamiania. Obraz kontenera jest konfigurowany do wyszukiwania tych zmiennych środowiskowych. Przekaż nazwę punktu końcowego usługi Azure Cosmos DB i jego klucza połączenia.

  2. Uruchom polecenie , az container show aby uzyskać publiczny adres IP kontenera:

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo \
      --query ipAddress.ip \
      --output tsv
    
  3. W przeglądarce przejdź do adresu IP kontenera.

    Ważne

    Czasami kontenery mogą w pełni uruchomić lub dwie minuty i odbierać połączenia. Jeśli nie ma odpowiedzi po przejściu do adresu IP w przeglądarce, zaczekaj chwilę i odśwież stronę.

    Po udostępnieniu aplikacji uzyskasz tę stronę:

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

    Spróbuj oddać głos na koty lub psy. Wszystkie głosy są przechowywane w wystąpieniu usługi Azure Cosmos DB.

Ukrywanie informacji o połączeniu przy użyciu zmiennych środowiskowych

W poprzedniej sekcji użyto dwóch zmiennych środowiskowych do utworzenia kontenera. Domyślnie te zmienne środowiskowe są dostępne w witrynie Azure Portal i narzędziach wiersza polecenia w postaci zwykłego tekstu.

W tej sekcji dowiesz się, jak zapobiegać wyświetlaniu poufnych informacji, takich jak klucze połączenia, w postaci zwykłego tekstu.

  1. Zacznijmy od zapoznania się z bieżącym zachowaniem w praktyce. Uruchom następujące az container show polecenie, aby wyświetlić zmienne środowiskowe kontenera:

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

    Dane wyjściowe są uzyskiwane przy użyciu obu wartości w postaci zwykłego tekstu. Oto przykład:

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

    Chociaż te wartości nie są wyświetlane użytkownikom za pośrednictwem aplikacji do głosowania, dobrym rozwiązaniem jest zapewnienie, że poufne informacje (takie jak klucze połączenia) nie są przechowywane w postaci zwykłego tekstu.

    Zabezpieczone zmienne środowiskowe zapobiegają przechowywaniu danych wyjściowych w postaci zwykłego tekstu. Aby użyć bezpiecznych zmiennych środowiskowych, użyj argumentu --secure-environment-variables zamiast argumentu --environment-variables .

  2. Uruchom następujące polecenie, aby utworzyć drugi kontener o nazwie aci-demo-secure , który korzysta z zabezpieczonych zmiennych środowiskowych:

    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
    

    Zwróć uwagę na użycie argumentu --secure-environment-variables.

  3. Uruchom następujące az container show polecenie, aby wyświetlić zmienne środowiskowe kontenera:

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

    Tym razem możesz zobaczyć, że zmienne środowiskowe nie są wyświetlane w postaci zwykłego tekstu:

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

    W rzeczywistości wartości zmiennych środowiskowych nie są wyświetlane w ogóle. To normalne, ponieważ te wartości odnoszą się do informacji poufnych. W tej sytuacji wystarczy, że będziesz wiedzieć, że zmienne środowiskowe istnieją.