تمكين معيار معالجة المعلومات الفيدرالية (FIPS) لتجمعات عقد خدمة Azure Kubernetes Service (AKS)
معيار معالجة المعلومات الفيدرالية (FIPS) 140-2 هو معيار حكومي أمريكي US يحدد الحد الأدنى من متطلبات الأمان لوحدات التشفير في منتجات وأنظمة تكنولوجيا المعلومات. تتيح لك خدمة Azure Kubernetes Service (AKS) إنشاء تجمعات عقد على نظامي Linux وWindows مع تمكين FIPS 140-2. يمكن أن تستخدم عمليات النشر التي تعمل على تجمعات العقد الممكنة من FIPS وحدات التشفير هذه لتوفير أمان متزايد والمساعدة في تلبية عناصر التحكم الأمنية كجزء من توافق FedRAMP. لمزيد من المعلومات حول FIPS 140-2، راجع معيار معالجة المعلومات الفيدرالية (FIPS) رقم 140.
المتطلبات الأساسية
- تم تثبيت الإصدار 2.32.0 من Azure CLI أو إصدار أحدث وتكوينه. للعثور على الإصدار، قم بتشغيل
az --version
. لمزيد من المعلومات عن تركيب Azure CLI أو ترقيتها، راجع تركيب Azure CLI.
إشعار
يدعم AKS Monitoring Addon تجمعات العقد الممكنة FIPS مع Ubuntu وAzure Linux وWindows بدءا من إصدار العامل 3.1.17 (Linux) وWin-3.1.17 (Windows).
القيود
- تحتوي تجمعات العقد التي تدعم FIPS على القيود التالية:
- تتطلب تجمعات العقد الممكنة من FIPS إصدار Kubernetes 1.19 وأكبر.
- لتحديث الحزم الأساسية أو الوحدات النمطية المستخدمة لـ FIPS، يجب استخدام ترقية صورة العقدة.
- لم يتم تقييم توافق صور الحاوية الموجودة على عقد FIPS مع FIPS.
- فشل تحميل مشاركة CIFS لأن FIPS يعطل بعض وحدات المصادقة. لحل هذه المشكلة، راجع الأخطاء عند تحميل مشاركة ملف على تجمع عقدة يدعم FIPS.
هام
صورة Linux التي تدعم FIPS هي صورة مختلفة عن صورة Linux الافتراضية المستخدمة في تجمعات العقد المستندة إلى Linux.
قد تحتوي صور العقد التي تدعم FIPS على أرقام إصدارات مختلفة، مثل إصدار kernel، عن الصور التي لم يتم تمكين FIPS بها. قد تختلف دورة التحديث لتجمعات العقد وصور العقد التي تدعم FIPS عن تجمعات العقد والصور غير الممكنة ل FIPS.
إصدارات نظام التشغيل المدعومة
يمكنك إنشاء تجمعات عقدة ممكنة بواسطة FIPS على جميع أنواع نظام التشغيل المدعومة، Linux وWindows. ومع ذلك، لا تدعم جميع إصدارات نظام التشغيل nodepools التي تدعم FIPS. بعد إصدار إصدار نظام تشغيل جديد، عادة ما تكون هناك فترة انتظار قبل أن يكون متوافقا مع FIPS.
يتضمن الجدول أدناه إصدارات نظام التشغيل المدعومة:
نوع نظام التشغيل | رمز SKU لنِظام التشغيل | توافق FIPS |
---|---|---|
Linux | Ubuntu | مدعوم |
Linux | Azure Linux | مدعوم |
Windows | Windows Server 2019 | مدعوم |
Windows | Windows Server 2022 | مدعوم |
عند طلب تمكين FIPS Ubuntu، إذا كان إصدار Ubuntu الافتراضي لا يدعم FIPS، تعيين AKS افتراضيا على أحدث إصدار مدعوم من FIPS من Ubuntu. على سبيل المثال، Ubuntu 22.04 هو الافتراضي لتجمعات عقد Linux. نظرا لأن 22.04 لا يدعم حاليا FIPS، يتم تعيين AKS افتراضيا إلى Ubuntu 20.04 للعقد التي تدعم Linux FIPS.
إشعار
في السابق، يمكنك استخدام واجهة برمجة تطبيقات GetOSOptions لتحديد ما إذا كان نظام تشغيل معين يدعم FIPS. تم الآن إهمال واجهة برمجة تطبيقات GetOSOptions ولن يتم تضمينها في إصدارات AKS API الجديدة بدءا من 2024-05-01.
إنشاء تجمع عقد نظام Linux الممكنة لـ FIPS
إنشاء تجمع عقدة Linux ممكنة FIPS باستخدام
az aks nodepool add
الأمر مع المعلمة--enable-fips-image
.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name fipsnp \ --enable-fips-image
إشعار
يمكنك أيضا استخدام المعلمة
--enable-fips-image
معaz aks create
الأمر عند إنشاء نظام مجموعة لتمكين FIPS على تجمع العقدة الافتراضي. عند إضافة تجمعات عقدة إلى مجموعة تم إنشاؤها بهذه الطريقة، لا يزال يتعين عليك استخدام المعلمة--enable-fips-image
عند إضافة تجمعات العقد لإنشاء تجمع عقدة يدعم FIPS.تحقق من أن تجمع العقدة الخاص بك ممكن بواسطة FIPS باستخدام
az aks show
الأمر والاستعلام لقيمة enableFIPS في agentPoolProfiles.az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \ -o table
يوضح إخراج المثال التالي أن تجمع عقدة fipsnp ممكن بواسطة FIPS:
Name enableFips --------- ------------ fipsnp True nodepool1 False
سرد العقد باستخدام
kubectl get nodes
الأمر .kubectl get nodes
يظهر إخراج المثال التالي قائمة بالعقد في نظام المجموعة. العقد التي تبدأ ب
aks-fipsnp
هي جزء من تجمع العقد التي تدعم FIPS.NAME STATUS ROLES AGE VERSION aks-fipsnp-12345678-vmss000000 Ready agent 6m4s v1.19.9 aks-fipsnp-12345678-vmss000001 Ready agent 5m21s v1.19.9 aks-fipsnp-12345678-vmss000002 Ready agent 6m8s v1.19.9 aks-nodepool1-12345678-vmss000000 Ready agent 34m v1.19.9
قم بتشغيل توزيع مع جلسة عمل تفاعلية على إحدى العقد في تجمع العقد الممكنة FIPS باستخدام
kubectl debug
الأمر .kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
من إخراج الجلسة التفاعلية، تحقق من تمكين مكتبات التشفير FIPS. يجب أن يبدو الإخراج مشابها لإخراج المثال التالي:
root@aks-fipsnp-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled 1
تحتوي تجمعات العقد التي تدعم FIPS أيضا على تسمية kubernetes.azure.com/fips_enabled=true ، والتي يمكن أن تستخدمها عمليات النشر لاستهداف تجمعات العقد هذه.
إنشاء تجمع عقدة لنظام Windows ممكن لـ FIPS
إنشاء تجمع عقدة Windows ممكنة FIPS باستخدام
az aks nodepool add
الأمر مع المعلمة--enable-fips-image
. على عكس تجمعات العقد المستندة إلى Linux، تشترك تجمعات عقد Windows في نفس مجموعة الصور.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name fipsnp \ --enable-fips-image \ --os-type Windows
تحقق من أن تجمع العقدة الخاص بك ممكن بواسطة FIPS باستخدام
az aks show
الأمر والاستعلام لقيمة enableFIPS في agentPoolProfiles.az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \ -o table
تحقق من أن تجمعات عقد Windows لديها حق الوصول إلى مكتبات التشفير FIPS عن طريق إنشاء اتصال RDP بعقدة Windows في تجمع عقدة FIPS ممكن وتحقق من السجل. من تطبيق Run، أدخل
regedit
.ابحث عن
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy
في السجل.إذا
Enabled
تم تعيين إلى 1، تمكين FIPS.
تحتوي تجمعات العقد التي تدعم FIPS أيضا على تسمية kubernetes.azure.com/fips_enabled=true ، والتي يمكن أن تستخدمها عمليات النشر لاستهداف تجمعات العقد هذه.
تحديث تجمع عقدة موجود لتمكين FIPS أو تعطيله
يمكن تحديث تجمعات عقد Linux الحالية لتمكين FIPS أو تعطيلها. إذا كنت تخطط لترحيل تجمعات العقد من غير FIPS إلى FIPS، فتحقق أولا من أن التطبيق الخاص بك يعمل بشكل صحيح في بيئة اختبار قبل ترحيله إلى بيئة إنتاج. يجب أن يمنع التحقق من صحة التطبيق الخاص بك في بيئة اختبار المشكلات الناجمة عن حظر نواة FIPS لبعض خوارزمية التشفير أو التشفير الضعيفة، مثل خوارزمية MD4 غير المتوافقة مع FIPS.
إشعار
عند تحديث تجمع عقدة Linux موجود لتمكين FIPS أو تعطيله، سينتقل تحديث تجمع العقدة بين صورة fips وغير fips. سيؤدي تحديث تجمع العقدة هذا إلى تشغيل إعادة تعيين لإكمال التحديث. قد يتسبب هذا في أن يستغرق تحديث تجمع العقدة بضع دقائق لإكماله.
المتطلبات الأساسية
- الإصدار 2.64.0 من Azure CLI أو أحدث. للعثور على الإصدار، قم بتشغيل
az --version
. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.
تمكين FIPS على تجمع عقدة موجود
يمكن تحديث تجمعات عقد Linux الحالية لتمكين FIPS. عند تحديث تجمع عقدة موجود، ستتغير صورة العقدة من الصورة الحالية إلى صورة FIPS الموصى بها لنفس نظام التشغيل SKU.
تحديث تجمع عقدة باستخدام الأمر [
az aks nodepool update
][az-aks-nodepool-update] مع المعلمة--enable-fips-image
.az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name np \ --enable-fips-image
يقوم الأمر أعلاه بتشغيل إعادة تعيين تجمع العقدة على الفور لنشر نظام التشغيل المتوافق مع FIPS. تحدث إعادة الصورة هذه أثناء تحديث تجمع العقدة. لا توجد خطوات إضافية مطلوبة.
تحقق من تمكين تجمع العقدة FIPS باستخدام
az aks show
الأمر والاستعلام لقيمة enableFIPS في agentPoolProfiles.az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \ -o table
يوضح إخراج المثال التالي أن تجمع عقدة np ممكن بواسطة FIPS:
Name enableFips --------- ------------ np True nodepool1 False
سرد العقد باستخدام
kubectl get nodes
الأمر .kubectl get nodes
يظهر إخراج المثال التالي قائمة بالعقد في نظام المجموعة. العقد التي تبدأ ب
aks-np
هي جزء من تجمع العقد التي تدعم FIPS.NAME STATUS ROLES AGE VERSION aks-np-12345678-vmss000000 Ready agent 6m4s v1.19.9 aks-np-12345678-vmss000001 Ready agent 5m21s v1.19.9 aks-np-12345678-vmss000002 Ready agent 6m8s v1.19.9 aks-nodepool1-12345678-vmss000000 Ready agent 34m v1.19.9
قم بتشغيل توزيع مع جلسة عمل تفاعلية على إحدى العقد في تجمع العقد الممكنة FIPS باستخدام
kubectl debug
الأمر .kubectl debug node/aks-np-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
من إخراج الجلسة التفاعلية، تحقق من تمكين مكتبات التشفير FIPS. يجب أن يبدو الإخراج مشابها لإخراج المثال التالي:
root@aks-np-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled 1
تحتوي تجمعات العقد التي تدعم FIPS أيضا على تسمية kubernetes.azure.com/fips_enabled=true ، والتي يمكن أن تستخدمها عمليات النشر لاستهداف تجمعات العقد هذه.
تعطيل FIPS على تجمع عقدة موجود
يمكن تحديث تجمعات عقد Linux الحالية لتعطيل FIPS. عند تحديث تجمع عقدة موجود، ستتغير صورة العقدة من صورة FIPS الحالية إلى صورة غير FIPS الموصى بها لنفس نظام التشغيل SKU. سيحدث تغيير صورة العقدة بعد إعادة الرسم.
تحديث تجمع عقدة Linux باستخدام الأمر [
az aks nodepool update
][az-aks-nodepool-update] مع المعلمة--disable-fips-image
.az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name np \ --disable-fips-image
يقوم الأمر أعلاه بتشغيل إعادة تعيين تجمع العقدة على الفور لنشر نظام التشغيل المتوافق مع FIPS. تحدث إعادة الصورة هذه أثناء تحديث تجمع العقدة. لا توجد خطوات إضافية مطلوبة.
تحقق من أن تجمع العقدة غير ممكن ل FIPS باستخدام
az aks show
الأمر والاستعلام لقيمة enableFIPS في agentPoolProfiles.az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \ -o table
يوضح إخراج المثال التالي أن تجمع عقدة np غير ممكن ل FIPS:
Name enableFips --------- ------------ np False nodepool1 False
الخطوات التالية
لمعرفة المزيد حول أمان AKS، راجع أفضل الممارسات لأمان نظام المجموعة والترقيات في خدمة Azure Kubernetes Service (AKS).
Azure Kubernetes Service