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

توضح لك هذه المقالة كيفية استخدام نطاقات عناوين IP المصرح بها لخوادم API للحد من عناوين IP وCIDRs التي يمكنها الوصول إلى نقاط نهاية مستوى التحكم لأحمال عمل Azure Kubernetes Service (AKS) الخاصة بك.

المتطلبات الأساسية

  • تم تثبيت وتكوين نسخة Azure CLI 2.0.76 أو أحدث. تحقق من الإصدار الخاص بك باستخدام az --version الأمر . إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.
  • لمعرفة عناوين IP التي يجب تضمينها عند دمج عنقود AKS مع Azure DevOps، راجع عناوين IP المسموح بها وعناوين النطاق.

‏‫نصيحة

من خلال بوابة Azure، يمكنك استخدام Azure Copilot لإجراء تغييرات على عناوين IP التي يمكنها الوصول إلى مجموعة العناصر. لمزيد من المعلومات، راجع العمل مع عناقيد AKS بكفاءة باستخدام Azure Copilot.

تحديد الخدمة واعتباراتها

  • تدعم هذه الميزة فقط في موازن التحميل Standard SKU للعناقيد التي تم إنشاؤها بعد أكتوبر 2019. يجب أن تستمر أي مجموعات موجودة على موازن تحميل SKU الأساسي مع تفعيل الميزة في العمل بشكل صحيح إذا تم ترقية نسخة Kubernetes ومستوى التحكم. ومع ذلك، لا يمكنك نقل هذه العناقيد إلى موازن تحميل SKU القياسي.
  • لا يمكنك استخدام هذه الميزة مع العناقيد الخاصة.
  • عند استخدام هذه الميزة مع المجموعات التي تستخدم عناوين IP العامة للعقدة، يجب أن تستخدم مجموعات العقد التي تستخدم عناوين IP العامة بادئات IP عامة. يجب عليك إضافة بادئات IP العامة كنطاقات معتمدة.
  • يمكنك تحديد ما يصل إلى 200 نطاق IP مصرح به. لتجاوز هذا الحد، فكر في استخدام API Server VNet Integration، الذي يدعم حتى 2000 نطاق 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 المعتمدة هذه. يمكن أن يستغرق توزيع القواعد حوالي دقيقتين. اترك حتى ذلك الوقت عند اختبار الاتصال.

نوصي بتضمين نطاقات عناوين IP التالية في تكوين نطاقات IP المصرح بها لخادم واجهة برمجة التطبيقات الخاص بك:

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

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

إشعار

عند تفعيل نطاقات IP المصرح بها لخادم API أثناء إنشاء العنقود، يتم السماح تلقائيا بكل من عنوان IP العام لخادم API وIP العام الصادر لموزين تحميل SKU القياسي ، بالإضافة إلى أي نطاقات تحددها.

الحالة الخاصة - 0.0.0.0/32: هذه قيمة خاصة تخبر AKS بالسماح فقط لعنوان IP العام الصادر لموازن التحميل القياسي SKU بالوصول إلى خادم واجهة برمجة التطبيقات. تعمل القيمة 0.0.0.0/32 كبديل لها:

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

عند إنشاء عنقود مع تفعيل نطاقات IP المصرح بها لخادم API، تقدم قائمة بنطاقات عناوين IP العامة المصرح بها. عند تحديد نطاق CIDR، يجب عليك استخدام عنوان الشبكة (أول عنوان IP في النطاق). على سبيل المثال، إذا أردت السماح للنطاق 137.117.106.88 ب ، 137.117.106.95يجب عليك تحديد 137.117.106.88/29.

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

    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
    
  • إنشاء نظام مجموعة AKS مع تمكين نطاقات IP المعتمدة لخادم API باستخدام New-AzAksCluster cmdlet مع المعلمة -ApiServerAccessAuthorizedIpRange . المثال التالي ينشئ عنقودا يسمى myAKSCluster في مجموعة الموارد المسماة myResourceGroup ويسمح لنطاق 73.140.245.0/24 عناوين IP بالوصول إلى خادم واجهة برمجة التطبيقات (API):

    New-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -NodeVmSetType VirtualMachineScaleSets -LoadBalancerSku Standard -ApiServerAccessAuthorizedIpRange '73.140.245.0/24' -GenerateSshKey
    
  1. من الصفحة الرئيسية لمدخل Azure، حدد Create a resource>.>
  2. تكوين إعدادات نظام المجموعة حسب الحاجة.
  3. في قسم Networking ضمن Public access، حدد Set authorized IP ranges.
  4. لتحديد نطاقات IP، أدخل نطاقات عناوين IP التي تريد تخويلها للوصول إلى خادم API.
  5. تكوين بقية إعدادات نظام المجموعة حسب الحاجة.
  6. عندما تكون مستعدا، حدد Review + create>Create لإنشاء نظام المجموعة.

تحديد عناوين 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، ويسمح لنطاق 73.140.245.0/24 عناوين IP بالوصول إلى خادم API، ويحدد عنواني IP صادرين لموازن تحميل SKU القياسي. تأكد من استبدال الوحدات <public-ip-id-1> المؤقتة ومعرفات <public-ip-id-2> الموارد الفعلية لعناوين IP العامة الخاصة بك.

    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 القياسية

  • قم بإنشاء نظام مجموعة 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
    
  • قم بإنشاء نظام مجموعة AKS مع تمكين نطاقات IP المعتمدة لخادم API والسماح فقط ب IP العام الصادر لموازن تحميل SKU القياسي باستخدام المعلمة -ApiServerAccessAuthorizedIpRange . ينشئ المثال التالي مجموعة تسمى myAKSCluster في مجموعة الموارد المسماة myResourceGroup مع تمكين نطاقات IP المعتمدة لخادم API ويسمح فقط ب IP العام الصادر لموازن تحميل SKU القياسي:

    New-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -NodeVmSetType VirtualMachineScaleSets -LoadBalancerSku Standard -ApiServerAccessAuthorizedIpRange '0.0.0.0/32' -GenerateSshKey
    
  1. من الصفحة الرئيسية لمدخل Azure، حدد Create a resource>.>
  2. تكوين إعدادات نظام المجموعة حسب الحاجة.
  3. في قسم Networking ضمن Public access، حدد Set authorized IP ranges.
  4. لتحديد نطاقات IP، أدخل 0.0.0.0/32. يسمح هذا الإعداد فقط بعنوان IP العام الصادر لموازن التحميل SKU القياسي.
  5. تكوين بقية إعدادات نظام المجموعة حسب الحاجة.
  6. عندما تكون مستعدا، حدد Review + create>Create لإنشاء نظام المجموعة.

تحديث نطاقات IP المصرح بها لخادم واجهة برمجة التطبيقات على مجموعة موجودة

  • تحديث نطاقات IP المعتمدة لخادم API لنظام مجموعة موجود باستخدام az aks update الأمر مع المعلمة --api-server-authorized-ip-ranges . المثال التالي يقوم بتحديث نطاقات IP المصرح بها لخوادم واجهة برمجة التطبيقات على العنقود المسمى 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 متعددة، يمكنك سرد العديد من عناوين IP، مفصولة بفواصل.

  • قم بتحديث نطاقات IP المصرح بها لخادم واجهة برمجة التطبيقات الخاصة بالعنقود الحالي للسماح بعدة نطاقات عناوين IP باستخدام az aks update الأمر مع المعاملة --api-server-authorized-ip-ranges . المثال التالي يحدث نطاقات IP المصرح بها لخوادم API على العنقود المسمى myAKSCluster في مجموعة الموارد المسماة myResourceGroup ويسمح بعدة نطاقات عناوين 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
    
  • تحديث نطاقات IP المعتمدة لخادم API لنظام مجموعة موجود باستخدام Set-AzAksCluster cmdlet مع المعلمة -ApiServerAccessAuthorizedIpRange . المثال التالي يقوم بتحديث نطاقات IP المصرح بها لخوادم واجهة برمجة التطبيقات على العنقود المسمى myAKSCluster في مجموعة الموارد المسماة myResourceGroup وتحديث نطاق عناوين IP إلى:73.140.245.0/24

    Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -ApiServerAccessAuthorizedIpRange '73.140.245.0/24'
    
  1. انتقل إلى مدخل Microsoft Azure وحدد مجموعة AKS التي تريد تحديثها.
  2. من قائمة الخدمة، ضمن الإعدادات، حدد الاتصال بالشبكة.
  3. ضمن إعدادات الموارد، حدد إدارة.
  4. في صفحة نطاقات IP المعتمدة ، قم بتحديث نطاقات IP المعتمدة حسب الحاجة.
  5. عندما تنتهي، حدد حفظ.

قم بتعطيل نطاقات IP المصرح بها لخوادم واجهة برمجة التطبيقات على مجموعة موجودة

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

    az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges ""
    
  • قم بتعطيل نطاقات IP المصرح بها لخادم API باستخدام Set-AzAksCluster cmdlet وحدد نطاقا '' فارغا للمعامل -ApiServerAccessAuthorizedIpRange .

    Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -ApiServerAccessAuthorizedIpRange ''
    
  1. انتقل إلى مدخل Microsoft Azure وحدد مجموعة AKS التي تريد تحديثها.
  2. من قائمة الخدمة، ضمن الإعدادات، حدد الاتصال بالشبكة.
  3. ضمن إعدادات الموارد، حدد إدارة.
  4. في صفحة نطاقات IP المعتمدة ، قم بإلغاء تحديد خانة الاختيار تعيين نطاقات IP المعتمدة .
  5. حدد حفظ.

ابحث عن نطاقات IP المصرح بها لخوادم واجهة برمجة التطبيقات الحالية

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

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

    مثال على الإخراج:

    [
      "73.140.245.0/24"
    ]
    
  • ابحث عن نطاقات IP المصرح بها لخادم API باستخدام Get-AzAksCluster cmdlet.

    Get-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster | Select-Object -ExpandProperty ApiServerAccessProfile
    

    مثال على الإخراج:

    AuthorizedIPRanges: {73.140.245.0/24}
    ...
    
  1. انتقل إلى مدخل Microsoft Azure وحدد نظام مجموعة AKS.

  2. من قائمة الخدمة، ضمن الإعدادات، حدد الاتصال بالشبكة. نطاقات IP المصرح بها لخادم واجهة برمجة التطبيقات الحالية مدرجة تحت إعدادات الموارد.

    لقطة شاشة لنطاقات IP المصرح بها لخادم API في بوابة Azure.

الوصول إلى خادم واجهة برمجة التطبيقات من جهاز التطوير أو الأدوات أو الأتمتة

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

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

إشعار

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

  1. استرجع عنوان IP الخاص بك وضبطه على متغير البيئة باستخدام الأمر التالي:

    # Retrieve your IP address
    CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
    
  2. أضف عنوان IP الخاص بك إلى القائمة المعتمدة باستخدام az aks update الأمر الذي يحتوي على --api-server-authorized-ip-ranges المعاملة. المثال التالي يضيف عنوان IP الحالي الخاص بك إلى نطاقات IP المصرح بها لخادم واجهة برمجة التطبيقات الحالية على العنقود المسمى myAKSCluster في مجموعة الموارد المسماة myResourceGroup:

    az aks update --resource-group myResourceGroup --name myAKSCluster --api-server-authorized-ip-ranges $CURRENT_IP/24,73.140.245.0/24
    
  1. استرجع عنوان IP الخاص بك وضبطه على متغير البيئة باستخدام الأمر التالي:

    # Retrieve your IP address
    CURRENT_IP=$(dig +short "myip.opendns.com" "@resolver1.opendns.com")
    
  2. أضف عنوان IP الخاص بك إلى القائمة المعتمدة باستخدام cmdlet Set-AzAksCluster مع المعلمة -ApiServerAccessAuthorizedIpRange . المثال التالي يضيف عنوان IP الحالي الخاص بك إلى نطاقات IP المصرح بها لخادم واجهة برمجة التطبيقات الحالية على العنقود المسمى myAKSCluster في مجموعة الموارد المسماة myResourceGroup:

    Set-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -ApiServerAccessAuthorizedIpRange '$CURRENT_IP/24,73.140.245.0/24'
    

خيار آخر هو استخدام الأمر التالي على أنظمة ويندوز للحصول على عنوان IPv4 العام:

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

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

لمعرفة المزيد عن الأمن في AKS، راجع المقالات التالية: