تمكين معيار معالجة المعلومات الفيدرالية (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

  1. إنشاء تجمع عقدة 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.

  2. تحقق من أن تجمع العقدة الخاص بك ممكن بواسطة 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  
    
  3. سرد العقد باستخدام 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
    
  4. قم بتشغيل توزيع مع جلسة عمل تفاعلية على إحدى العقد في تجمع العقد الممكنة FIPS باستخدام kubectl debug الأمر .

    kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
    
  5. من إخراج الجلسة التفاعلية، تحقق من تمكين مكتبات التشفير FIPS. يجب أن يبدو الإخراج مشابها لإخراج المثال التالي:

    root@aks-fipsnp-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled
    1
    

تحتوي تجمعات العقد التي تدعم FIPS أيضا على تسمية kubernetes.azure.com/fips_enabled=true ، والتي يمكن أن تستخدمها عمليات النشر لاستهداف تجمعات العقد هذه.

إنشاء تجمع عقدة لنظام Windows ممكن لـ FIPS

  1. إنشاء تجمع عقدة 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
    
  2. تحقق من أن تجمع العقدة الخاص بك ممكن بواسطة FIPS باستخدام az aks show الأمر والاستعلام لقيمة enableFIPS في agentPoolProfiles.

    az aks show \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" \
        -o table
    
  3. تحقق من أن تجمعات عقد Windows لديها حق الوصول إلى مكتبات التشفير FIPS عن طريق إنشاء اتصال RDP بعقدة Windows في تجمع عقدة FIPS ممكن وتحقق من السجل. من تطبيق Run، أدخل regedit.

  4. ابحث عن HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy في السجل.

  5. إذا Enabled تم تعيين إلى 1، تمكين FIPS.

لقطة شاشة توضح صورة لمحرر السجل في نهج خوارزمية FIPS Algorithm Polic، بينما يتم تمكينها.

تحتوي تجمعات العقد التي تدعم 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.

  1. تحديث تجمع عقدة باستخدام الأمر [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. تحدث إعادة الصورة هذه أثناء تحديث تجمع العقدة. لا توجد خطوات إضافية مطلوبة.

  1. تحقق من تمكين تجمع العقدة 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  
    
  2. سرد العقد باستخدام 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
    
  3. قم بتشغيل توزيع مع جلسة عمل تفاعلية على إحدى العقد في تجمع العقد الممكنة FIPS باستخدام kubectl debug الأمر .

    kubectl debug node/aks-np-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
    
  4. من إخراج الجلسة التفاعلية، تحقق من تمكين مكتبات التشفير 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. سيحدث تغيير صورة العقدة بعد إعادة الرسم.

  1. تحديث تجمع عقدة 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. تحدث إعادة الصورة هذه أثناء تحديث تجمع العقدة. لا توجد خطوات إضافية مطلوبة.

  1. تحقق من أن تجمع العقدة غير ممكن ل 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).