الوصول الآمن إلى خادم API باستخدام نطاقات عناوين IP المعتمدة في خدمة Azure Kubernetes (AKS)

توضح هذه المقالة كيفية استخدام ميزة نطاقات عناوين IP المعتمدة لخادم API للحد من عناوين IP وCIDRs التي يمكنها الوصول إلى مستوى التحكم.

خادم واجهة برمجة تطبيقات Kubernetes هو جوهر وحدة تحكم Kubernetes وهو الطريقة المركزية للتفاعل مع مجموعاتك وإدارتها. لتحسين أمان المجموعات وتقليل مخاطر الهجمات، نوصي بالحد من نطاقات عناوين IP التي يمكنها الوصول إلى خادم واجهة برمجة التطبيقات. للقيام بذلك، يمكنك استخدام ميزة نطاقات IP المعتمدة لخادم API.

قبل البدء

القيود

تحتوي ميزة نطاقات IP المعتمدة لخادم API على القيود التالية:

  • تم نقل ميزة نطاقات IP المعتمدة لخادم API خارج المعاينة في أكتوبر 2019. بالنسبة للمجموعات التي تم إنشاؤها بعد نقل الميزة خارج المعاينة، يتم دعم هذه الميزة فقط على موازن تحميل SKU القياسي . ستستمر أي مجموعات موجودة على موازن تحميل SKU الأساسي مع تمكين ميزة نطاقات IP المعتمدة لخادم API في العمل كما هي. ومع ذلك، لا يمكن ترحيل هذه المجموعات إلى موازن تحميل SKU قياسي . ستستمر المجموعات الموجودة في العمل إذا تمت ترقية إصدار Kubernetes ومستوى التحكم.
  • ميزة نطاقات IP المعتمدة لخادم API غير مدعومة على المجموعات الخاصة.
  • عند استخدام هذه الميزة مع المجموعات التي تستخدم عنوان IP العام للعقدة، يجب أن تستخدم تجمعات العقدة التي تستخدم عنوان IP العام للعقدة بادئات IP العامة. يجب إضافة بادئات IP العامة كنطاقات معتمدة.

نظرة عامة على نطاقات IP المعتمدة لخادم API

يعرض خادم Kubernetes API واجهات برمجة تطبيقات Kubernetes الأساسية ويوفر التفاعل لأدوات الإدارة مثل kubectl ولوحة معلومات Kubernetes. يوفر AKS وحدة تحكم نظام مجموعة مستأجر واحد مع خادم API مخصص. يتم تعيين عنوان IP عام لخادم API بشكل افتراضي. يمكنك التحكم في الوصول باستخدام التحكم في الوصول المستند إلى دور Kubernetes (Kubernetes RBAC) أو Azure RBAC.

لتأمين الوصول إلى وحدة التحكم AKS / خادم API التي يمكن الوصول إليها بشكل عام خلاف ذلك، يمكنك تمكين واستخدام نطاقات IP المعتمدة. لا تسمح نطاقات IP المعتمدة هذه إلا لنطاقات عناوين IP المعرفة بالاتصال بخادم API. يتم حظر أي طلبات يتم إجراؤها على خادم API من عنوان IP ليس جزءا من نطاقات IP المعتمدة هذه.

إنشاء نظام مجموعة AKS مع تمكين نطاقات IP المعتمدة لخادم API

هام

بشكل افتراضي، يستخدم نظام المجموعة موازنة التحميل SKU القياسية التي يمكنك استخدامها لتكوين بوابة الصادرة. عند تمكين نطاقات IP المعتمدة لخادم API أثناء إنشاء نظام المجموعة، يسمح ب IP العام لنظام المجموعة بشكل افتراضي بالإضافة إلى النطاقات التي تحددها. إذا قمت بتحديد "" أو لا قيمة لنطاقات IP المعتمدة لخادم --api-server-authorized-ip-rangesAPI. لاحظ أنه إذا كنت تستخدم PowerShell، فاستخدم --api-server-authorized-ip-ranges="" (مع علامات يساوي) لتجنب أي مشكلات في التحليل.

إشعار

يجب إضافة هذه النطاقات إلى قائمة السماح:

  • عنوان IP للخروج من نظام المجموعة (جدار الحماية أو بوابة NAT أو عنوان آخر، اعتمادا على نوع الصادر).
  • أي نطاق يمثل الشبكات التي ستقوم بإدارة نظام المجموعة منها.

الحد الأعلى لعدد نطاقات IP التي يمكنك تحديدها هو 200.

يمكن أن يستغرق توزيع القواعد حوالي دقيقتين. الرجاء الانتظار حتى ذلك الوقت عند اختبار الاتصال.

عند إنشاء نظام مجموعة مع تمكين نطاقات IP المعتمدة لخادم API، يمكنك استخدام المعلمة --api-server-authorized-ip-ranges لتوفير قائمة نطاقات عناوين IP العامة المعتمدة. عند تحديد نطاق CIDR، ابدأ بعنوان IP الأول في النطاق. على سبيل المثال، تعد 137.117.106.90/29نطاقًا صالحًا، ولكن تأكد من تحديد عنوان IP الأول في النطاق، مثل 137.117.106.88/29.

  • إنشاء نظام مجموعة AKS مع تمكين نطاقات IP المعتمدة لخادم API باستخدام az aks create الأمر مع المعلمة --api-server-authorized-ip-ranges . ينشئ المثال التالي مجموعة تسمى myAKSCluster في مجموعة الموارد المسماة myResourceGroup مع تمكين نطاقات IP المعتمدة لخادم API. نطاقات عناوين IP المسموح بها هي 73.140.245.0/24:

    az aks create --resource-group myResourceGroup --name myAKSCluster --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 73.140.245.0/24 --generate-ssh-keys
    

تحديد عناوين IP الصادرة لموازن تحميل SKU قياسي

عند إنشاء نظام مجموعة مع تمكين نطاقات IP المعتمدة لخادم API، يمكنك أيضا تحديد عناوين IP الصادرة أو بادئات نظام المجموعة باستخدام --load-balancer-outbound-ips المعلمات أو --load-balancer-outbound-ip-prefixes . يسمح بجميع عناوين IP المتوفرة في المعلمات جنبا إلى جنب مع عناوين IP في المعلمة --api-server-authorized-ip-ranges .

  • إنشاء نظام مجموعة AKS مع تمكين نطاقات IP المعتمدة لخادم API وتحديد عناوين IP الصادرة لموازن تحميل SKU القياسي باستخدام المعلمة --load-balancer-outbound-ips . ينشئ المثال التالي مجموعة تسمى myAKSCluster في مجموعة الموارد المسماة myResourceGroup مع تمكين نطاقات IP المعتمدة لخادم API وعناوين <public-ip-id-1> IP الصادرة و <public-ip-id-2>:

    az aks create --resource-group myResourceGroup --name myAKSCluster --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 73.140.245.0/24 --load-balancer-outbound-ips <public-ip-id-1>,<public-ip-id-2> --generate-ssh-keys
    

عدم السماح إلا لعنوان IP العام الصادر من موازنة التحميل SKU القياسية

عند تمكين نطاقات IP المعتمدة لخادم API أثناء إنشاء نظام المجموعة، يكون عنوان IP عام الصادر لموازنة التحميل SKU القياسية لنظام المجموعة أيضًا مسموحًا به بشكل افتراضي بالإضافة إلى النطاقات التي تحددها. للسماح فقط ب IP العام الصادر لموازن تحميل SKU القياسي، يمكنك استخدام 0.0.0.0/32 عند تحديد المعلمة --api-server-authorized-ip-ranges .

  • قم بإنشاء نظام مجموعة AKS مع تمكين نطاقات IP المعتمدة لخادم API والسماح فقط ب IP العام الصادر لموازن تحميل SKU القياسي باستخدام المعلمة --api-server-authorized-ip-ranges . ينشئ المثال التالي مجموعة تسمى myAKSCluster في مجموعة الموارد المسماة myResourceGroup مع تمكين نطاقات IP المعتمدة لخادم API ويسمح فقط ب IP العام الصادر لموازن تحميل SKU القياسي:

    az aks create --resource-group myResourceGroup --name myAKSCluster --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --api-server-authorized-ip-ranges 0.0.0.0/32 --generate-ssh-keys
    

تحديث نطاقات IP المعتمدة لخادم API لنظام المجموعة الحالي

  • تحديث نطاقات IP المعتمدة لخادم API لنظام مجموعة موجود باستخدام az aks update الأمر مع المعلمة --api-server-authorized-ip-ranges . يقوم المثال التالي بتحديث نطاقات IP المعتمدة لخادم API في نظام المجموعة المسماة myAKSCluster في مجموعة الموارد المسماة myResourceGroup. نطاق عنوان IP للتفويض هو 73.140.245.0/24:

    az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges 73.140.245.0/24
    
  • للسماح لنطاقات عناوين IP متعددة، يمكنك سرد العديد من عناوين IP، مفصولة بفواصل.

    az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges 73.140.245.0/24,193.168.1.0/24,194.168.1.0/24
    

    يمكنك أيضًا استخدام 0.0.0.0/32 عند تحديد المعلمة --api-server-authorized-ip-ranges للسماح فقط لعنوان IP العام من موازنة التحميل SKU القياسية.

تعطيل نطاقات IP المعتمدة

  • تعطيل نطاقات IP المعتمدة az aks update باستخدام الأمر وتحديد نطاق "" فارغ للمعلمة --api-server-authorized-ip-ranges .

    az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges ""
    

البحث عن نطاقات IP المعتمدة الحالية

  • ابحث عن نطاقات IP المعتمدة الموجودة باستخدام az aks show الأمر مع تعيين المعلمة --query إلى apiServerAccessProfile.authorizedIpRanges.

    az aks show --resource-group myResourceGroup --name myAKSCluster --query apiServerAccessProfile.authorizedIpRanges
    

كيفية العثور على عنوان IP الخاص بي لتضمينه في --api-server-authorized-ip-ranges؟

يجب إضافة أجهزة التطوير أو الأدوات أو عناوين IP التلقائية إلى قائمة نظام مجموعة AKS لنطاقات IP المعتمدة من أجل الوصول إلى خادم API من هناك.

ثمة خيار آخر وهو تكوين jumpbox باستخدام الأدوات المطلوبة داخل شبكة فرعية منفصلة في شبكة جدار الحماية الظاهرية. يفترض هذا أن البيئة الخاصة بك لديها جدار حماية مع الشبكة المعنية، وقد قمت بإضافة عناوين IP جدار حماية إلى نطاقات معتمدة. وبالمثل، إذا قمت بفرض توجيه لأسفل من الشبكة الفرعية AKS إلى الشبكة الفرعية لجدار الحماية، فلا ضرر حينها أيضًا من وجود jumpbox في الشبكة الفرعية لنظام مجموعة.

  1. استرداد عنوان IP الخاص بك باستخدام الأمر التالي:

    # Retrieve your IP address
    CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
    
  2. أضف عنوان IP الخاص بك إلى القائمة المعتمدة باستخدام Azure CLI أو Azure PowerShell:

    # Add to AKS approved list using Azure CLI
    az aks update --resource-group $RG --name $AKSNAME --api-server-authorized-ip-ranges $CURRENT_IP/24,73.140.245.0/24
    
    # Add to AKS approved list using Azure PowerShell
    Set-AzAksCluster -ResourceGroupName $RG -Name $AKSNAME -ApiServerAccessAuthorizedIpRange '$CURRENT_IP/24,73.140.245.0/24'
    

إشعار

يضيف المثال أعلاه عنوان IP آخر إلى النطاقات المعتمدة. لاحظ أنه لا يزال يتضمن عنوان IP من تحديث نطاقات IP المعتمدة لخادم API الخاص بالمجموعة. إذا لم تقم بتضمين عنوان IP الحالي، فسيستبدله هذا الأمر بعنوان جديد بدلا من إضافته إلى النطاقات المعتمدة. لتعطيل نطاقات IP المعتمدة، استخدم az aks update وحدد نطاقًا فارغًا "".

هناك خيار آخر وهو استخدام الأمر أدناه على أنظمة Windows للحصول على عنوان IPv4 العام، أو يمكنك استخدام الخطوات في البحث عن عنوان IP الخاص بك.

Invoke-RestMethod http://ipinfo.io/json | Select -exp ip

يمكنك أيضًا العثور على هذا العنوان بالبحث عن ما هو عنوان IP الخاص بي في متصفح الإنترنت.

استخدام علامات الخدمة لنطاقات IP المعتمدة لخادم API - (معاينة)

علامات الخدمة هي طريقة ملائمة لتحديد مجموعة من عناوين IP المقابلة لخدمة Kubernetes. يمكنك استخدام علامات الخدمة لتحديد عناوين IP لخدمات Kubernetes وعناوين IP المحددة في نطاقات IP المعتمدة لخادم API عن طريق فصلها بفاصلة.

القيود

  • هذه الميزة غير متوافقة مع تكامل API Server VNet.

هام

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

تثبيت ملحق معاينة Azure CLI

  1. قم بتثبيت ملحق معاينة Azure CLI باستخدام الأمر [az extension add][az-extension-add].

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

    az extension update --name aks-preview
    

تسجيل علامة ميزة IP المعتمدة لعلامة الخدمة

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

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

    يستغرق التسجيل بضع دقائق حتى يكتمل.

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

    az feature show --namespace "Microsoft.ContainerService" --name "EnableServiceTagAuthorizedIPPreview"
    

إنشاء نظام مجموعة AKS مع نطاقات IP المعتمدة لعلامة الخدمة

إنشاء نظام مجموعة مع نطاقات IP المعتمدة لعلامة الخدمة باستخدام المعلمة --api-server-authorized-ip-ranges مع علامة AzureCloud الخدمة للسماح لجميع خدمات Azure بالوصول إلى خادم واجهة برمجة التطبيقات وتحديد عنوان IP إضافي.

إشعار

يسمح بعلامة خدمة واحدة فقط في المعلمة --api-server-authorized-ip-ranges . لا يمكنك تحديد علامات خدمة متعددة.

az aks create --resource-group myResourceGroup \
  --name myAKSCluster \
  --api-server-authorized-ip-ranges AzureCloud,20.20.20.20

يجب أن تكون قادرا على تجعيد خادم API من Azure VM أو خدمة Azure التي تعد جزءا من AzureCloud علامة الخدمة.

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

في هذه المقالة، قمت بتمكين نطاقات IP المعتمدة لخادم API. يُعد هذا الأسلوب واحد من الطرق المتبعة لتشغيل نظام مجموعة AKS آمنة. لمزيدٍ من المعلومات، راجع مفاهيم الأمان للتطبيقات وأنظمة المجموعة في AKS وأفضل الممارسات لأمن نظام المجموعة والترقيات في AKS.