إدارة SSH للوصول الآمن إلى عقد خدمة Azure Kubernetes (AKS)

توضح هذه المقالة كيفية تكوين مفاتيح SSH (معاينة) على مجموعات AKS أو تجمعات العقد، أثناء النشر الأولي أو في وقت لاحق.

يدعم AKS خيارات التكوين التالية لإدارة مفاتيح SSH على عقد نظام المجموعة:

  • إنشاء نظام مجموعة باستخدام مفاتيح SSH
  • تحديث مفاتيح SSH على نظام مجموعة AKS موجود
  • تعطيل خدمة SSH وتمكينها

هام

تتوفر ميزات معاينة AKS على أساس الخدمة الذاتية والاشتراك. يتم توفير المعاينات "كما هي" و"كما هي متوفرة"، ويتم استبعادها من اتفاقيات مستوى الخدمة والضمان المحدود. تتم تغطية معاينات AKS جزئيًا بواسطة دعم العملاء على أساس بذل أفضل الجهود. على هذا النحو، هذه الميزات ليست مخصصة للاستخدام الإنتاجي. لمزيد من المعلومات، يُرجي الاطلاع على مقالات الدعم الآتية:

قبل البدء

  • تحتاج إلى aks-preview الإصدار 0.5.116 أو أحدث لاستخدام التحديث.
  • تحتاج إلى aks-preview الإصدار 1.0.0b6 أو أحدث لاستخدام Disable.
  • تدعم ميزة إنشاء وتحديث SSH تجمعات عقد Linux وWindows وAzure Linux على المجموعات الموجودة.
  • ميزة تعطيل SSH غير مدعومة في إصدار المعاينة هذا على تجمعات العقد التي تعمل بنظام التشغيل Windows Server.

تثبيت aks-preview امتداد Azure CLI

  1. تثبيت ملحق aks-preview باستخدام az extension add الأمر .

    az extension add --name aks-preview
    
  2. قم بتحديث إلى أحدث إصدار من الملحق باستخدام az extension update الأمر .

    az extension update --name aks-preview
    

تسجيل DisableSSHPreview العلامات المميزة

لاستخدام ميزة تعطيل SSH، قم بتنفيذ الخطوات التالية للتسجيل وتمكينها في اشتراكك.

  1. تسجيل علامة الميزة DisableSSHPreview باستخدام az feature register الأمر .

    az feature register --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
    

    يستغرق الأمر بضع دقائق حتى تظهر الحالة مُسجل.

  2. تحقق من حالة التسجيل باستخدام az feature show الأمر .

    az feature show --namespace "Microsoft.ContainerService" --name "DisableSSHPreview"
    
  3. عندما تعكس الحالة Registered، قم بتحديث تسجيل موفر موارد Microsoft.ContainerService باستخدام az provider register الأمر .

    az provider register --namespace Microsoft.ContainerService
    

إنشاء نظام مجموعة AKS باستخدام مفاتيح SSH

استخدم الأمر az aks create لنشر نظام مجموعة AKS باستخدام مفتاح عام SSH. يمكنك إما تحديد المفتاح أو ملف المفتاح باستخدام الوسيطة --ssh-key-value .

معلمة SSH ‏‏الوصف‬ القيمة الافتراضية
--generate-ssh-key إذا لم يكن لديك مفاتيح SSH الخاصة بك، فحدد --generate-ssh-key. يقوم Azure CLI تلقائيا بإنشاء مجموعة من مفاتيح SSH وحفظها في الدليل ~/.ssh/الافتراضي .
--ssh-key-value مسار المفتاح العام أو محتويات المفتاح المراد تثبيتها على الأجهزة الظاهرية للعقدة للوصول إلى SSH. على سبيل المثال، ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm ~/.ssh/id_rsa.pub
--no-ssh-key إذا لم تكن بحاجة إلى مفاتيح SSH، فحدد هذه الوسيطة. ومع ذلك، يقوم AKS تلقائيا بإنشاء مجموعة من مفاتيح SSH لأن تبعية مورد Azure Virtual Machine لا تدعم ملف مفاتيح SSH فارغ. ونتيجة لذلك، لا يتم إرجاع المفاتيح ولا يمكن استخدامها ل SSH في الأجهزة الظاهرية للعقدة. يتم تجاهل المفتاح الخاص وعدم حفظه.

إشعار

إذا لم يتم تحديد أي معلمات، فإن Azure CLI افتراضيا للإشارة إلى مفاتيح SSH المخزنة ~/.ssh/id_rsa.pub في الملف. إذا لم يتم العثور على المفاتيح، يقوم الأمر بإرجاع الرسالة An RSA key file or key value must be supplied to SSH Key Value.

فيما يلي أمثلة على هذا الأمر:

  • لإنشاء نظام مجموعة واستخدام مفاتيح SSH الافتراضية التي تم إنشاؤها:

    az aks create --name myAKSCluster --resource-group MyResourceGroup --generate-ssh-key
    
  • لتحديد ملف مفتاح عام SSH، قم بتضمين الوسيطة --ssh-key-value :

    az aks create --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
    

تحديث المفتاح العام SSH على نظام مجموعة AKS موجود

az aks update استخدم الأمر لتحديث المفتاح العام SSH (معاينة) على نظام المجموعة. تحدث هذه العملية المفتاح على جميع تجمعات العقد. يمكنك إما تحديد مفتاح أو ملف مفتاح باستخدام الوسيطة --ssh-key-value .

إشعار

يتم دعم تحديث مفاتيح SSH على مجموعات مقياس الجهاز الظاهري Azure مع مجموعات AKS.

فيما يلي أمثلة على هذا الأمر:

  • لتحديد قيمة مفتاح عام SSH جديدة، قم بتضمين الوسيطة --ssh-key-value :

    az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value 'ssh-rsa AAAAB3Nza-xxx'
    
  • لتحديد ملف مفتاح عام SSH، حدده باستخدام الوسيطة --ssh-key-value :

    az aks update --name myAKSCluster --resource-group MyResourceGroup --ssh-key-value ~/.ssh/id_rsa.pub
    

هام

بعد تحديث مفتاح SSH، لا تقوم AKS بتحديث تجمع العقدة تلقائيا. في أي وقت، يمكنك اختيار تنفيذ عملية تحديث nodepool. تسري عملية تحديث مفاتيح SSH بعد اكتمال تحديث صورة العقدة.

تعطيل نظرة عامة على SSH

لتحسين الأمان ودعم متطلبات أمان الشركة أو استراتيجيتها، تدعم AKS تعطيل SSH (معاينة) على كل من نظام المجموعة وعلى مستوى تجمع العقدة. يقدم تعطيل SSH نهجا مبسطا مقارنة بالحل الوحيد المدعوم، والذي يتطلب تكوين قواعد مجموعة أمان الشبكة على بطاقة واجهة الشبكة للشبكة الفرعية/العقدة AKS (NIC). يدعم تعطيل SSH تجمعات عقد مجموعات مقياس الجهاز الظاهري فقط.

عند تعطيل SSH في وقت إنشاء نظام المجموعة، يصبح ساري المفعول بعد إنشاء نظام المجموعة. ومع ذلك، عند تعطيل SSH على مجموعة أو تجمع عقدة موجود، لا يقوم AKS بتعطيل SSH تلقائيا. في أي وقت، يمكنك اختيار تنفيذ عملية ترقية nodepool. تسري عملية تعطيل/تمكين مفاتيح SSH بعد اكتمال تحديث صورة العقدة.

إشعار

عند تعطيل SSH على مستوى نظام المجموعة، فإنه ينطبق على جميع تجمعات العقد الموجودة. سيتم تمكين SSH بشكل افتراضي لأي تجمعات عقد تم إنشاؤها بعد هذه العملية، وستحتاج إلى تشغيل هذه الأوامر مرة أخرى لتعطيلها.

معلمة SSH ‏‏الوصف
disabled تم تعطيل خدمة SSH.
localuser يتم تمكين خدمة SSH ويمكن للمستخدمين الذين لديهم مفاتيح SSH الوصول إلى العقدة بأمان.

إشعار

تستمر عقدة تصحيح أخطاء kubectl في العمل بعد تعطيل SSH لأنها لا تعتمد على خدمة SSH.

تعطيل SSH على نشر نظام مجموعة جديد

بشكل افتراضي، تكون خدمة SSH على عقد نظام مجموعة AKS مفتوحة لجميع المستخدمين والقرون التي تعمل على نظام المجموعة. يمكنك منع الوصول المباشر إلى SSH من أي شبكة إلى عقد نظام المجموعة للمساعدة في الحد من متجه الهجوم إذا تعرضت حاوية في جراب للخطر. az aks create استخدم الأمر لإنشاء نظام مجموعة جديد، وقم بتضمين الوسيطة --ssh-access disabled لتعطيل SSH (معاينة) على جميع تجمعات العقد أثناء إنشاء نظام المجموعة.

هام

بعد تعطيل خدمة SSH، لا يمكنك SSH في نظام المجموعة لتنفيذ المهام الإدارية أو لاستكشاف الأخطاء وإصلاحها.

إشعار

في نظام مجموعة تم إنشاؤه حديثا، سيؤدي تعطيل ssh إلى تكوين عقدة النظام الأولى فقط. يجب تكوين جميع تجمعات العقد الأخرى على مستوى nodepool.

az aks create --resource-group myResourceGroup --name myManagedCluster --ssh-access disabled

بعد بضع دقائق، الأمر إكمال وإرجاع معلومات منسقة JSON حول الكتلة. يشبه المثال التالي الإخراج والنتائج المتعلقة بتعطيل SSH:

"securityProfile": {
"sshAccess": "Disabled"
},

تعطيل SSH على مجموعة موجودة

az aks update استخدم الأمر لتحديث مجموعة موجودة، وقم بتضمين الوسيطة --ssh-access disabled لتعطيل SSH (معاينة) على جميع تجمعات العقد في نظام المجموعة.

az aks update --resource-group myResourceGroup --name myManagedCluster --ssh-access disabled

بعد بضع دقائق، الأمر إكمال وإرجاع معلومات منسقة JSON حول الكتلة. يشبه المثال التالي الإخراج والنتائج المتعلقة بتعطيل SSH:

"securityProfile": {
"sshAccess": "Disabled"
},

لكي يسري التغيير، تحتاج إلى إعادة تعيين كافة تجمعات العقد باستخدام az aks nodepool upgrade الأمر .

az aks nodepool upgrade --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --node-image-only

هام

أثناء هذه العملية، تتم ترقية جميع مثيلات مجموعة مقياس الجهاز الظاهري وإعادة تصورها لاستخدام تكوين SSH الجديد.

تعطيل SSH لتجمع عقدة جديد

az aks nodepool add استخدم الأمر لإضافة تجمع عقدة، وقم بتضمين الوسيطة --ssh-access disabled لتعطيل SSH أثناء إنشاء تجمع العقدة.

az aks nodepool add --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled  

بعد بضع دقائق، يكمل الأمر ويعيد معلومات بتنسيق JSON حول المجموعة التي تشير إلى إنشاء mynodepool بنجاح. يشبه المثال التالي الإخراج والنتائج المتعلقة بتعطيل SSH:

"securityProfile": {
"sshAccess": "Disabled"
},

تعطيل SSH لتجمع عقدة موجود

استخدم الوسيطة [az aks nodepool update][az-aks-nodepool-update] command with the --ssh-access disabled" لتعطيل SSH (معاينة) على تجمع عقدة موجود.

az aks nodepool update --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --ssh-access disabled

بعد بضع دقائق، يكمل الأمر ويعيد معلومات بتنسيق JSON حول المجموعة التي تشير إلى إنشاء mynodepool بنجاح. يشبه المثال التالي الإخراج والنتائج المتعلقة بتعطيل SSH:

"securityProfile": {
"sshAccess": "Disabled"
},

لكي يسري التغيير، تحتاج إلى إعادة تعيين تجمع العقدة باستخدام az aks nodepool upgrade الأمر .

az aks nodepool upgrade --cluster-name myManagedCluster --name mynodepool --resource-group myResourceGroup --node-image-only

إعادة تمكين SSH على نظام مجموعة موجود

az aks update استخدم الأمر لتحديث مجموعة موجودة، وقم بتضمين الوسيطة --ssh-access localuser لإعادة تمكين SSH (معاينة) على جميع تجمعات العقد في نظام المجموعة.

az aks update --resource-group myResourceGroup --name myManagedCluster --ssh-access localuser

يتم إرجاع الرسالة التالية أثناء تنفيذ العملية:

Only after all the nodes are reimaged, does the disable/enable SSH Access operation take effect."

بعد إعادة تمكين SSH، لن يتم إعادة تصور العقد تلقائيا. في أي وقت، يمكنك اختيار إجراء عملية إعادة تعيين.

هام

أثناء هذه العملية، تتم ترقية جميع مثيلات مجموعة مقياس الجهاز الظاهري وإعادة تصورها لاستخدام مفتاح SSH العام الجديد.

إعادة تمكين SSH لتجمع عقدة معين

az aks update استخدم الأمر لتحديث تجمع عقدة معين، وقم بتضمين الوسيطة --ssh-access localuser لإعادة تمكين SSH (معاينة) على تجمع العقدة هذا في نظام المجموعة. في المثال التالي، nodepool1 هو تجمع العقدة الهدف.

az aks nodepool update --cluster-name myManagedCluster --name nodepool1 --resource-group myResourceGroup --ssh-access localuser 

يتم إرجاع الرسالة التالية عند تنفيذ العملية:

Only after all the nodes are reimaged, does the disable/enable SSH Access operation take effect.

هام

أثناء هذه العملية، تتم ترقية جميع مثيلات مجموعة مقياس الجهاز الظاهري وإعادة تصورها لاستخدام مفتاح SSH العام الجديد.

حالة خدمة SSH

قم بتنفيذ الخطوات التالية لاستخدام node-shell على عقدة واحدة وفحص حالة خدمة SSH باستخدام systemctl.

  1. احصل على bash shell القياسي عن طريق تشغيل أمر الأمر kubectl node-shell <node> .

    kubectl node-shell aks-nodepool1-20785627-vmss000001
    
  2. systemctl قم بتشغيل الأمر للتحقق من حالة خدمة SSH.

    systemctl status ssh
    

إذا تم تعطيل SSH، يظهر إخراج العينة التالي النتائج:

ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; disabled; vendor preset: enabled)
     Active: inactive (dead) since Wed 2024-01-03 15:36:57 UTC; 20min ago

إذا تم تمكين SSH، يظهر إخراج العينة التالي النتائج:

ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2024-01-03 15:40:20 UTC; 19min ago

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

للمساعدة في استكشاف أي مشكلات في اتصال SSH بعقد مجموعاتك وإصلاحها، يمكنك عرض سجلات kubelet أو عرض سجلات العقدة الرئيسية Kubernetes.