التشغيل السريع: نشر نظام مجموعة AKS مع عقد عامل Intel SGX للحوسبة السرية باستخدام Azure CLI
في هذه البداية السريعة، ستستخدم Azure CLI لنشر مجموعة خدمة Azure Kubernetes (AKS) مع عقد VM محملة بجيوب (DCsv2/DCSv3). ثم ستقوم بتشغيل تطبيق مرحبًا بالعالم البسيط في الجيب. كما يمكنك أيضًا توفير نظام مجموعة وإضافة عُقد الحوسبة السرية من مدخل Azure ولكن يُركز التشغيل السريع هذا على Azure CLI.
AKS عبارة عن خدمة Kubernetes مدارة تمكن المطورين أو مشغلي نظام المجموعة من توزيع أنظمة المجموعات وإدارتها بسرعة. لمعرفة المزيد، اقرأ مقدمة AKS ونظرة عامة على العقد السرية ل AKS.
تتضمن ميزات عُقد الحوسبة السرية ما يلي:
- عُقد عامل Linux تدعم حاويات Linux.
- الجيل 2 من الجهاز الظاهري (VM) مع عُقد Ubuntu 18.04 VM.
- وحدة المعالجة المركزية Intel SGX قادرة على المساعدة في تشغيل حاوياتك في جيب محمي بالسرية يستفيد من ذاكرة ذاكرة التخزين المؤقت للصفحة المشفرة (EPC). لمزيد من المعلومات، راجع الأسئلة المتداولة للحوسبة السرية في Azure.
- برنامج تشغيل DCAP SGX Intel مثبت مسبقًا على عُقد الحوسبة السرية. لمزيد من المعلومات، راجع الأسئلة المتداولة للحوسبة السرية في Azure.
إشعار
تستخدم أجهزة DCsv2/DCsv3 الظاهرية أجهزة متخصصة توفر منطقة الموضوع. لمزيد من المعلومات، راجع وحدات SKU المتوفرة والمناطق المدعومة.
المتطلبات الأساسية
يتطلب هذا التشغيل السريع:
ما لا يقل عن ثمانية مراكز DCsv2/DCSv3/DCdsv3 متوفرة في اشتراكك.
بشكل افتراضي، لا توجد حصة نسبية معينة مسبقا لأحجام Intel SGX VM لاشتراكات Azure. يجب اتباع هذه الإرشادات لطلب الحصة النسبية الأساسية للجهاز الظاهري لاشتراكاتك.
إنشاء نظام مجموعة AKS مع عقد الحوسبة السرية المدركة للجيب والوظيفة الإضافية Intel SGX
استخدم الإرشادات التالية لإنشاء مجموعة AKS مع تمكين الوظيفة الإضافية Intel SGX، وإضافة تجمع عقدة إلى المجموعة، والتحقق مما قمت بإنشائه باستخدام تطبيق hello world enclave.
إنشاء نظام مجموعة AKS مع تجمع عقدة نظام وADON Intel SGX
إشعار
إذا كان لديك بالفعل مجموعة AKS تفي بمعايير المتطلبات الأساسية المذكورة سابقا، فانتقل إلى القسم التالي لإضافة تجمع عقدة حوسبة سرية.
يعرض Intel SGX AKS Addon "confcom" برامج تشغيل جهاز Intel SGX لحاوياتك لتجنب التغييرات المضافة إلى pod yaml.
أولا، قم بإنشاء مجموعة موارد للمجموعة باستخدام الأمر az group create . ينشئ المثال التالي مجموعة موارد تسمى myResourceGroup في منطقة eastus2 :
az group create --name myResourceGroup --location eastus2
الآن قم بإنشاء مجموعة AKS، مع تمكين الوظيفة الإضافية للحوسبة السرية، باستخدام الأمر az aks create :
az aks create -g myResourceGroup --name myAKSCluster --generate-ssh-keys --enable-addons confcom
سينشر الأمر أعلاه مجموعة AKS جديدة مع تجمع عقدة النظام لعقدة الحوسبة غير السرية. لا يوصى بعقد Intel SGX للحوسبة السرية لتجمعات عقد النظام.
إضافة تجمع عقدة مستخدم مع قدرات الحوسبة السرية إلى مجموعة AKS
قم بتشغيل الأمر التالي لإضافة تجمع عقدة مستخدم بحجم Standard_DC4s_v3
ثلاث عقد إلى نظام مجموعة AKS. يمكنك اختيار SKU بحجم أكبر آخر من قائمة وحدات SKU والمناطق المعتمدة DCsv2/DCsv3.
az aks nodepool add --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup --node-vm-size Standard_DC4s_v3 --node-count 2
بعد تشغيل الأمر، يجب أن يكون تجمع عقدة جديد مع DCsv3 مرئيا مع الوظيفة الإضافية للحوسبة السرية DaemonSets (المكون الإضافي لجهاز SGX).
تحقق من تجمع العُقدة والوظيفة الإضافية
احصل على بيانات الاعتماد لنظام مجموعة AKS باستخدام الأمر az aks get-credentials :
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
kubectl get pods
استخدم الأمر للتحقق من إنشاء العقد بشكل صحيح وتشغيل DaemonSets المتعلقة ب SGX على تجمعات عقد DCsv2:
kubectl get pods --all-namespaces
kube-system sgx-device-plugin-xxxx 1/1 Running
إذا كان الإخراج يطابق التعليمات البرمجية السابقة، فإن نظام مجموعة AKS جاهزًا الآن لتشغيل التطبيقات السرية.
يمكنك الانتقال إلى قسم نشر مرحبًا بالعالم من تطبيق جيب معزول في هذا التشغيل السريع لاختبار تطبيق في جيب. أو استخدم الإرشادات التالية لإضافة المزيد من تجمعات العُقد على AKS. (يدعم AKS مزج تجمعات عقدة SGX وتجمعات عقدة غير SGX.)
إضافة تجمع عقدة حوسبة سرية إلى مجموعة AKS موجودة
يفترض هذا المقطع أنك تقوم بتشغيل نظام مجموعة AKS بالفعل، والذي يفي بالمعايير المطلوبة مسبقًا في التشغيل السريع هذا.
تمكين الوظيفة الإضافية AKS للحوسبة السرية على نظام المجموعة الموجود
تشغيل الأمر التالي لتمكين الوظيفة الإضافية للحوسبة السرية:
az aks enable-addons --addons confcom --name MyManagedCluster --resource-group MyResourceGroup
إضافة تجمع عقدة مستخدم DCsv3 إلى نظام المجموعة
إشعار
لاستخدام الحوسبة السرية، يجب أن يكون لديك مجموعة AKS وذلك للحصول على أقل تجمع للعقد القائمة على DCsv2/DCsv3 VM SKU. لمعرفة المزيد حول وحدات SKU للأجهزة الظاهرية DCs-v2/Dcs-v3 للحوسبة السرية، راجع وحدات SKU المتوفرة والمناطق المدعومة.
قم بتشغيل الأمر التالي لإنشاء تجمع عقدة:
az aks nodepool add --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup --node-count 2 --node-vm-size Standard_DC4s_v3
تحقق من إنشاء تجمع العقدة الجديد باسم confcompool1 :
az aks nodepool list --cluster-name myAKSCluster --resource-group myResourceGroup
تحقق من تشغيل DaemonSets على تجمعات عقدة سرية
تسجيل الدخول إلى نظام مجموعة AKS الموجود لديك لإجراء التحقق التالي:
kubectl get nodes
يجب أن يظهر الإخراج تجمع confcompool1 المضاف حديثا على نظام مجموعة AKS. قد تظهر أيضًا DaemonSets أخرى.
kubectl get pods --all-namespaces
kube-system sgx-device-plugin-xxxx 1/1 Running
إذا كان الإخراج يطابق التعليمات البرمجية السابقة، فإن نظام مجموعة AKS جاهزًا الآن لتشغيل التطبيقات السرية.
نشر مرحبًا بالعالم من تطبيق جيب معزول
أنت الآن جاهز لتوزيع تطبيق اختبار.
أنشئ ملفا باسم hello-world-enclave.yaml والصقه في بيان YAML التالي. يمكنك العثور على نموذج التعليمات البرمجية للتطبيق هذا في مشروع Open Enclave. يفترض هذا النشر أنك قمت بنشر الوظيفة الإضافية confcom .
إشعار
يسحب المثال التالي صورة حاوية عامة من Docker Hub. نوصي بتعيين سحب سري للإثبات باستخدام حساب Docker Hub بدلاً من إجراء طلب سحب مجهول. لتحسين الموثوقية عند العمل مع المحتوى العامّ، قم باستيراد الصورة وإدارتها في سجل حاويات Azure خاص. تعرف على المزيد حول العمل مع الصور العامة.
apiVersion: batch/v1
kind: Job
metadata:
name: oe-helloworld
namespace: default
spec:
template:
metadata:
labels:
app: oe-helloworld
spec:
containers:
- name: oe-helloworld
image: mcr.microsoft.com/acc/samples/oe-helloworld:latest
resources:
limits:
sgx.intel.com/epc: "10Mi"
requests:
sgx.intel.com/epc: "10Mi"
volumeMounts:
- name: var-run-aesmd
mountPath: /var/run/aesmd
restartPolicy: "Never"
volumes:
- name: var-run-aesmd
hostPath:
path: /var/run/aesmd
backoffLimit: 0
بدلا من ذلك يمكنك أيضا القيام بنشر تحديد تجمع عقدة لنشر الحاوية كما هو موضح أدناه
apiVersion: batch/v1
kind: Job
metadata:
name: oe-helloworld
namespace: default
spec:
template:
metadata:
labels:
app: oe-helloworld
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: agentpool
operator: In
values:
- acc # this is the name of your confidential computing nodel pool
- acc_second # this is the name of your confidential computing nodel pool
containers:
- name: oe-helloworld
image: mcr.microsoft.com/acc/samples/oe-helloworld:latest
resources:
limits:
sgx.intel.com/epc: "10Mi"
requests:
sgx.intel.com/epc: "10Mi"
volumeMounts:
- name: var-run-aesmd
mountPath: /var/run/aesmd
restartPolicy: "Never"
volumes:
- name: var-run-aesmd
hostPath:
path: /var/run/aesmd
backoffLimit: 0
الآن استخدم kubectl apply
الأمر لإنشاء عينة مهمة سيتم فتحها في جيب آمن، كما هو موضح في إخراج المثال التالي:
kubectl apply -f hello-world-enclave.yaml
job "oe-helloworld" created
يمكنك تأكيد إنشاء حمل العمل لبيئة تنفيذ موثوق بها (جيب) بنجاح بواسطة تشغيل الأوامر التالية:
kubectl get jobs -l app=oe-helloworld
NAME COMPLETIONS DURATION AGE
oe-helloworld 1/1 1s 23s
kubectl get pods -l app=oe-helloworld
NAME READY STATUS RESTARTS AGE
oe-helloworld-rchvg 0/1 Completed 0 25s
kubectl logs -l app=oe-helloworld
Hello world from the enclave
Enclave called into host to print: Hello World!
تنظيف الموارد
لإزالة تجمع عقدة الحوسبة السرية التي قمت بإنشائها في التشغيل السريع هذا، استخدم الأمر التالي:
az aks nodepool delete --cluster-name myAKSCluster --name confcompool1 --resource-group myResourceGroup
لحذف نظام المجموعة AKS استخدم الأمر التالي:
az aks delete --resource-group myResourceGroup --cluster-name myAKSCluster
الخطوات التالية
قم بتشغيل Python أو Node أو تطبيقات أخرى من خلال حاويات سرية باستخدام برنامج تضمين ISV/OSS SGX. راجع عينات الحاوية السرية في GitHub.
تشغيل التطبيقات المدركة للجيب باستخدام عينات حاوية Azure المدركة للجيب في GitHub.