تحميل وحدة تخزين سرية في مثيلات حاوية Azure

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

  • بمجرد نشرها مع وجود أسرار في مجموعة حاويات، تصبح وحدة التخزين السرية للقراءة فقط.
  • يتم دعم كافة وحدات التخزين السرية بواسطة tmpfs، وهو نظام ملفات مدعوم بذاكرة الوصول العشوائي؛ ولا يتم كتابة محتوياتها أبدًا في مساحة تخزين غير متقلبة.

ملاحظة

وحدات التخزين السرية مقصورة حاليًا على حاويات Linux. تعرف على كيفية تمرير متغيرات البيئة الآمنة لكل من حاويات Windows وLinux في تعيين متغيرات البيئة. في حين أننا نعمل على جلب جميع الميزات إلى حاويات Windows، يمكنك العثور على اختلافات النظام الأساسي الحالية في النظرة العامة.

تحميل وحدة التخزين السرية - Azure CLI

لنشر حاوية مع واحد أو أكثر من الأسرار باستخدام CLI Azure، قم بتضمين المعلمات --secrets و--secrets-mount-path في الأمر إنشاء حاوية az. يقوم هذا المثال بتحميل وحدة تخزين سرية تتكون من ملفين يحتويان على أسرار "mysecret1" و"mysecret2،" في /mnt/secrets:

az container create \
    --resource-group myResourceGroup \
    --name secret-volume-demo \
    --image mcr.microsoft.com/azuredocs/aci-helloworld \
    --secrets mysecret1="My first secret FOO" mysecret2="My second secret BAR" \
    --secrets-mount-path /mnt/secrets

يُظهر إخراج az container exec التالي فتح غلاف في الحاوية قيد التشغيل، وإدراج الملفات داخل وحدة التخزين السرية، ثم عرض محتوياتها:

az container exec \
  --resource-group myResourceGroup \
  --name secret-volume-demo --exec-command "/bin/sh"
/usr/src/app # ls /mnt/secrets
mysecret1
mysecret2
/usr/src/app # cat /mnt/secrets/mysecret1
My first secret FOO
/usr/src/app # cat /mnt/secrets/mysecret2
My second secret BAR
/usr/src/app # exit
Bye.

تحميل وحدة التخزين السرية - YAML

يمكنك أيضًا نشر مجموعات الحاويات باستخدام Azure CLI ونموذج YAML. يُعد النشر بواسطة نموذج YAML طريقة مفضلة عند نشر مجموعات الحاويات التي تتكون من عدة حاويات.

عند النشر باستخدام نموذج YAML، يجب أن تكون القيم السرية بترميز Base64 في القالب. ومع ذلك، تظهر القيم السرية في نص عادي داخل الملفات الموجودة في الحاوية.

يعرّف نموذج YAML التالي مجموعة حاويات بحاوية واحدة تحمل وحدة تخزين سرية في /mnt/secrets. تحتوي وحدة التخزين السرية على ملفين يحتويان على أسرار "mysecret1" و "mysecret2".

apiVersion: '2019-12-01'
location: eastus
name: secret-volume-demo
properties:
  containers:
  - name: aci-tutorial-app
    properties:
      environmentVariables: []
      image: mcr.microsoft.com/azuredocs/aci-helloworld:latest
      ports: []
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
      volumeMounts:
      - mountPath: /mnt/secrets
        name: secretvolume1
  osType: Linux
  restartPolicy: Always
  volumes:
  - name: secretvolume1
    secret:
      mysecret1: TXkgZmlyc3Qgc2VjcmV0IEZPTwo=
      mysecret2: TXkgc2Vjb25kIHNlY3JldCBCQVIK
tags: {}
type: Microsoft.ContainerInstance/containerGroups

للنشر باستخدام نموذج YAML، احفظ YAML السابق في ملف باسم deploy-aci.yaml، ثم نفذ الأمر az container create باستخدام المعلمة --file:

# Deploy with YAML template
az container create \
  --resource-group myResourceGroup \
  --file deploy-aci.yaml

تحميل وحدة التخزين السرية - مدير الموارد

بالإضافة إلى نشر CLI وYAML، يمكنك نشر مجموعة حاويات باستخدام قالب Azure Resource Manager.

أولًا- قم بملء المصفوفة volumesفي قسم مجموعة الحاويةproperties بالقالب. عند النشر باستخدام نموذج مدير الموارد، يجب أن تكون القيم السرية بترميز Base64 في القالب. ومع ذلك، تظهر القيم السرية في نص عادي داخل الملفات الموجودة في الحاوية.

بعد ذلك، لكل حاوية في مجموعة الحاوية التي تريد تحميل وحدة التخزين السرية فيها، قم بتعبئة الصفيف volumeMounts في القسم properties من تعريف الحاوية.

يعرّف نموذج مدير الموارد التالي مجموعة حاويات بحاوية واحدة تحمل وحدة تخزين سرية في /mnt/secrets. تحتوي وحدة التخزين السرية على سرين "mysecret1" و"mysecret2".

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "container1name": "aci-tutorial-app",
    "container1image": "microsoft/aci-helloworld:latest"
  },
  "resources": [
    {
      "type": "Microsoft.ContainerInstance/containerGroups",
      "apiVersion": "2021-03-01",
      "name": "secret-volume-demo",
      "location": "[resourceGroup().location]",
      "properties": {
        "containers": [
          {
            "name": "[variables('container1name')]",
            "properties": {
              "image": "[variables('container1image')]",
              "resources": {
                "requests": {
                  "cpu": 1,
                  "memoryInGb": 1.5
                }
              },
              "ports": [
                {
                  "port": 80
                }
              ],
              "volumeMounts": [
                {
                  "name": "secretvolume1",
                  "mountPath": "/mnt/secrets"
                }
              ]
            }
          }
        ],
        "osType": "Linux",
        "ipAddress": {
          "type": "Public",
          "ports": [
            {
              "protocol": "tcp",
              "port": "80"
            }
          ]
        },
        "volumes": [
          {
            "name": "secretvolume1",
            "secret": {
              "mysecret1": "TXkgZmlyc3Qgc2VjcmV0IEZPTwo=",
              "mysecret2": "TXkgc2Vjb25kIHNlY3JldCBCQVIK"
            }
          }
        ]
      }
    }
  ]
}

للنشر باستخدام قالب Resource Manager، احفظ JSON السابق في ملف باسم deploy-aci.json ثم نفذ الأمر az publish group create باستخدام المعلمة--template-file:

# Deploy with Resource Manager template
az deployment group create \
  --resource-group myResourceGroup \
  --template-file deploy-aci.json

الخطوات التالية

وحدات التخزين

تعرف على كيفية تحميل أنواع وحدات التخزين الأخرى في مثيلات حاوية Azure:

متغيرات البيئة الآمنة

هناك طريقة أخرى لتوفير المعلومات الحساسة للحاويات (بما في ذلك حاويات Windows) وهي من خلال استخدام متغيرات البيئة الآمنة .