تمرين - تعيين متغيرات البيئة

مكتمل

متغيرات البيئة تمكنك من تكوين إعدادات التطبيق أو البرنامج النصي الذي تشغله الحاوية بشكل ديناميكي. يمكنك استخدام Azure CLI أو PowerShell أو مدخل Microsoft Azure لتعيين المتغيرات عند إنشاء الحاوية. تتيح متغيرات البيئة المؤمنة إمكانية منع عرض المعلومات الحساسة في مخرجات الحاوية.

هنا، ستقوم بإنشاء مثيل Azure Cosmos DB واستخدام متغيرات البيئة لتمرير معلومات الاتصال إلى مثيل حاوية Azure. يستخدم تطبيق في الحاوية المتغيرات لكتابة البيانات وقراءتها من Azure Cosmos DB. ستقوم بإنشاء متغير بيئة ومتغير بيئة آمنة بحيث يمكنك ملاحظة الفرق بينهما.

نشر Azure Cosmos DB

  1. عند نشر Azure Cosmos DB، تقوم بتوفير اسم قاعدة بيانات فريد. لأغراض التعلم، بادر بتشغيل هذا الأمر في Cloud Shell لإنشاء متغير Bash الذي يحمل اسمًا فريدًا.

    COSMOS_DB_NAME=aci-cosmos-db-$RANDOM
    
  2. شغل هذا الأمر az cosmosdb create لإنشاء مثيل Azure Cosmos DB.

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

    يمكن أن يستغرق هذا الأمر بضع دقائق للانتهاء.

    ⁧⁧$COSMOS_DB_NAME⁩⁩ يحدد اسم قاعدة البيانات الفريد. يقوم الأمر بطباعة عنوان نقطة النهاية لقاعدة البيانات. وهنا، الأمر يحفظ الأمر هذا العنوان إلى متغير Bash COSMOS_DB_ENDPOINT.

  3. شغل ⁧⁧az cosmosdb keys list⁩⁩ للحصول على مفتاح اتصال Azure Cosmos DB وتخزينه في متغير Bash المسمى بـ ⁧⁧COSMOS_DB_MASTERKEY⁩⁩.

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

نشر حاوية مناسبة للعمل مع قاعدة البيانات

هنا ستنشئ مثيل حاوية Azure الذي يمكنه القراءة من مثيلAzure Cosmos DB الخاص بك وكتابة السجلات إليه.

يحمل متغيران البيئة اللذين قمت بإنشائهما في الجزء الأخير ⁧⁧COSMOS_DB_ENDPOINT⁩⁩ و⁦⁧COSMOS_DB_MASTERKEY⁩⁩ القيم التي تحتاجها للاتصال بمثيل Azure Cosmos DB.

  1. شغل الأمر التالي ⁧⁧az container create⁩⁩ لإنشاء الحاوية.

    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⁩⁩ إلى صورة حاوية تُشغّل تطبيق تصويت وهمي.

    لاحظ --environment-variablesالوسيطة. تحدد هذه الوسيطة متغيرات البيئة التي يتم تمريرها إلى الحاوية عند بدء تشغيل الحاوية. تم تكوين صورة الحاوية للبحث عن متغيرات البيئة هذه. وهنا، يمكنك تمرير اسم نقطة نهاية Azure Cosmos DB ومفتاح الاتصال الخاص بها.

  2. بادر بتشغيل الأمر ⁧⁧az container show⁩⁩ للحصول على عنوان IP العام للحاوية.

    az container show \
      --resource-group learn-deploy-aci-rg \
      --name aci-demo \
      --query ipAddress.ip \
      --output tsv
    
  3. داخل متصفح، انتقل إلى عنوان IP لحاويتك.

    هام

    في بعض الأحيان تستغرق الحاويات دقيقة أو دقيقتين لبدء التشغيل الكامل وتكون قادرة على تلقي الاتصالات. إذا لم تكن هناك استجابة عند الانتقال إلى عنوان بروتوكول الإنترنت في المتصفح، فانتظر بضع لحظات وحدّث الصفحة.

    بمجرد أن يتوفر التطبيق، سترى هذا.

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

    حاول التصويت للقطط أو الكلاب. يتم تخزين كل صوت في مثيل Azure Cosmos DB.

استخدم متغيرات البيئة المؤمنة لإخفاء معلومات الاتصال

في الجزء السابق، استخدمت متغيرين البيئة لإنشاء الحاوية. بشكل افتراضي، يمكن الوصول إلى متغيرات البيئة هذه من خلال مدخل Microsoft Azure وأدوات سطر الأوامر في النص العادي.

في هذا الجزء، ستتعلم كيفية منع عرض المعلومات الحساسة، مثل مفاتيح الاتصال، في النص العادي.

  1. دعونا نبدأ برؤية السلوك الحالي في أثناء العمل. شغل الأمر التالي ⁧⁧az container show⁩⁩ لعرض متغيرات البيئة الخاصة بالحاوية.

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

    سترى أن كلتا القيمتين تظهر في صورة نص عادي. وفيما يلي مثال على ذلك.

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

    على الرغم من أن هذه القيم لا تظهر للمستخدمين من خلال تطبيق التصويت، إلا أنها ممارسة أمنية جيدة لضمان عدم تخزين المعلومات الحساسة مثل مفاتيح الاتصال في نص عادي.

    متغيرات البيئة الآمنة تمنع مخرجات النص الواضح. لاستخدام متغيرات بيئة آمنة، يمكنك استخدام الوسيطة --secure-environment-variables بدلاً من الوسيطة --environment-variables.

  2. شغل الأمر التالي لإنشاء حاوية ثانية، المسماة بـ ⁦⁧⁩⁩aci-demo-secure⁦⁧⁩⁩، التي تستخدم متغيرات البيئة الآمنة.

    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
    

    لاحظ استخدام ⁧--secure-environment-variables ⁧الوسيطة.

  3. شغل الأمر التالي ⁧⁧az container show⁩⁩ لعرض متغيرات البيئة الخاصة بالحاوية.

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

    في هذه المرة، سترى أن متغيرات البيئة الخاصة بك لا تظهر في نص عادي.

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

    في الواقع، لا تظهر قيم متغيرات البيئة الخاصة بك على الإطلاق. وهذا جيد لأن هذه القيم تشير إلى معلومات حساسة. هنا، كل ما تحتاج إلى معرفته هو أن متغيرات البيئة موجودة.