تحميل وحدة تخزين سرية في مثيلات حاوية 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:
- تحميل مشاركة ملف Microsoft Azure في مثيلات حاوية Microsoft Azure
- تحميل وحدة تخزين Dir فارغة في Azure Container Instances
- تحميل وحدة تخزين gitRepo في مثيلات حاوية Azure
متغيرات البيئة الآمنة
هناك طريقة أخرى لتوفير المعلومات الحساسة للحاويات (بما في ذلك حاويات Windows) وهي من خلال استخدام متغيرات البيئة الآمنة .