إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على: المطور | قسط
تحتاج البوابة المستضافة ذاتيا لإدارة واجهة برمجة تطبيقات Azure إلى الاتصال بمثيل إدارة واجهة برمجة التطبيقات المستند إلى السحابة المقترن بها للإبلاغ عن الحالة والتحقق من تحديثات التكوين وتطبيقها وإرسال المقاييس والأحداث.
بالإضافة إلى استخدام رمز مميز للوصول إلى البوابة (مفتاح المصادقة) للاتصال بمثيل إدارة واجهة برمجة التطبيقات المستند إلى السحابة، يمكنك تمكين البوابة المستضافة ذاتيا للمصادقة على مثيل السحابة المقترن بها باستخدام تطبيق Microsoft Entra. باستخدام مصادقة Microsoft Entra، يمكنك تكوين أوقات انتهاء صلاحية أطول للأسرار واستخدام الخطوات القياسية لإدارة الأسرار وتدويرها في Active Directory.
نظرة عامة على السيناريو
يمكن لواجهة برمجة تطبيقات تكوين البوابة المستضافة ذاتيا التحقق من التحكم في الوصول المستند إلى الدور (RBAC) في Azure لتحديد من لديه أذونات لقراءة تكوين البوابة. بعد إنشاء تطبيق Microsoft Entra بهذه الأذونات، يمكن للبوابة المستضافة ذاتيا المصادقة على مثيل إدارة واجهة برمجة التطبيقات باستخدام التطبيق.
لتمكين مصادقة Microsoft Entra، أكمل الخطوات التالية:
- إنشاء دورين مخصصين من أجل:
- السماح لواجهة برمجة تطبيقات التكوين بالوصول إلى معلومات RBAC الخاصة بالعميل
- منح أذونات لقراءة تكوين البوابة المستضافة ذاتيا
- منح RBAC حق الوصول إلى الهوية المدارة لمثيل إدارة واجهة برمجة التطبيقات
- قم بإنشاء تطبيق Microsoft Entra وامنحه حق الوصول لقراءة تكوين البوابة
- نشر البوابة باستخدام خيارات التكوين الجديدة
المتطلبات
- مثيل إدارة واجهة برمجة التطبيقات في طبقة خدمة المطور أو Premium. إذا لزم الأمر، أكمل التشغيل السريع التالي: إنشاء مثيل Azure API Management.
- توفير مورد بوابة على المثيل.
- قم بتمكين هوية مدارة معينة من قبل النظام على المثيل.
- صورة حاوية البوابة المستضافة ذاتيا الإصدار 2.2 أو أحدث
ملاحظات القيود
- يتم دعم الهوية المدارة المعينة من قبل النظام فقط.
إنشاء أدوار مخصصة
قم بإنشاء الدورين المخصصين التاليين اللذين تم تعيينهما في الخطوات اللاحقة. يمكنك استخدام الأذونات المدرجة في قوالب JSON التالية لإنشاء الأدوار المخصصة باستخدام مدخل Microsoft Azure أو Azure CLI أو Azure PowerShell أو أدوات Azure الأخرى.
عند تكوين الأدوار المخصصة، قم بتحديث AssignableScopes الخاصية بقيم النطاق المناسبة للدليل الخاص بك، مثل الاشتراك الذي يتم فيه نشر مثيل إدارة واجهة برمجة التطبيقات.
دور خدمة مدقق الوصول إلى واجهة برمجة تطبيقات تكوين إدارة واجهة برمجة التطبيقات
{
"Description": "Can access RBAC permissions on the API Management resource to authorize requests in Configuration API.",
"IsCustom": true,
"Name": "API Management Configuration API Access Validator Service Role",
"Permissions": [
{
"Actions": [
"Microsoft.Authorization/*/read"
],
"NotActions": [],
"DataActions": [],
"NotDataActions": []
}
],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/{subscriptionID}"
]
}
دور قارئ تكوين بوابة إدارة واجهة برمجة التطبيقات
{
"Description": "Can read self-hosted gateway configuration from Configuration API",
"IsCustom": true,
"Name": "API Management Gateway Configuration Reader Role",
"Permissions": [
{
"Actions": [],
"NotActions": [],
"DataActions": [
"Microsoft.ApiManagement/service/gateways/getConfiguration/action"
],
"NotDataActions": []
}
],
"NotDataActions": [],
"AssignableScopes": [
"/subscriptions/{subscriptionID}"
]
}
إضافة تعيينات الأدوار
تعيين دور خدمة مدقق الوصول إلى واجهة برمجة تطبيقات تكوين إدارة واجهة برمجة التطبيقات
قم بتعيين دور خدمة مدقق الوصول إلى واجهة برمجة تطبيقات تكوين إدارة واجهة برمجة التطبيقات إلى الهوية المدارة لمثيل إدارة واجهة برمجة التطبيقات. للحصول على خطوات مفصلة لتعيين دور، راجع تعيين أدوار Azure باستخدام المدخل.
- النطاق: مجموعة الموارد أو الاشتراك الذي يتم فيه نشر مثيل إدارة واجهة برمجة التطبيقات
- الدور: دور خدمة مدقق الوصول إلى واجهة برمجة تطبيقات تكوين إدارة واجهة برمجة التطبيقات
- تعيين حق الوصول إلى: الهوية المدارة لمثيل إدارة واجهة برمجة التطبيقات
تعيين دور قارئ تكوين بوابة إدارة واجهة برمجة التطبيقات
الخطوة 1: تسجيل تطبيق Microsoft Entra
قم بإنشاء تطبيق Microsoft Entra جديد. للحصول على الخطوات، راجع إنشاء تطبيق Microsoft Entra وكيان خدمة يمكنه الوصول إلى الموارد. يتم استخدام تطبيق Microsoft Entra بواسطة البوابة المستضافة ذاتيا للمصادقة على مثيل إدارة واجهة برمجة التطبيقات.
- إنشاء سر عميل
- لاحظ قيم التطبيق التالية لاستخدامها في القسم التالي عند نشر البوابة المستضافة ذاتيا: معرف التطبيق (العميل) ومعرف الدليل (المستأجر) وسر العميل
الخطوة 2: تعيين دور خدمة قارئ تكوين بوابة إدارة واجهة برمجة التطبيقات
قم بتعيين دور خدمة قارئ تكوين بوابة إدارة واجهة برمجة التطبيقات إلى التطبيق.
- النطاق: مثيل إدارة واجهة برمجة التطبيقات (أو مجموعة الموارد أو الاشتراك الذي يتم نشر التطبيق فيه)
- الدور: دور قارئ تكوين بوابة إدارة واجهة برمجة التطبيقات
- تعيين حق الوصول إلى: تطبيق Microsoft Entra
نشر البوابة المستضافة ذاتيا
انشر البوابة المستضافة ذاتيا إلى Kubernetes، وإضافة إعدادات تسجيل تطبيق Microsoft Entra إلى data عنصر البوابات ConfigMap. في المثال التالي ملف تكوين YAML، يتم تسمية البوابة mygw ويتم تسمية mygw.yamlالملف.
Important
إذا كنت تتبع إرشادات نشر Kubernetes الحالية:
- تأكد من حذف خطوة تخزين مفتاح المصادقة الافتراضي باستخدام الأمر
kubectl create secret generic. - استبدل ملف التكوين الأساسي التالي بملف YAML الافتراضي الذي ينشئه مدخل Microsoft Azure لك. يضيف الملف التالي تكوين Microsoft Entra بدلا من التكوين لاستخدام مفتاح المصادقة.
---
apiVersion: v1
kind: ConfigMap
metadata:
name: mygw-env
labels:
app: mygw
data:
config.service.endpoint: "<service-name>.configuration.azure-api.net"
config.service.auth: azureAdApp
config.service.auth.azureAd.authority: "https://login.microsoftonline.com"
config.service.auth.azureAd.tenantId: "<Azure AD tenant ID>"
config.service.auth.azureAd.clientId: "<Azure AD client ID>"
config.service.auth.azureAd.clientSecret: "<Azure AD client secret>"
gateway.name: <gateway-id>
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mygw
labels:
app: mygw
spec:
replicas: 1
selector:
matchLabels:
app: mygw
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 0
maxSurge: 25%
template:
metadata:
labels:
app: mygw
spec:
terminationGracePeriodSeconds: 60
containers:
- name: mygw
image: mcr.microsoft.com/azure-api-management/gateway:v2
ports:
- name: http
containerPort: 8080
- name: https
containerPort: 8081
# Container port used for rate limiting to discover instances
- name: rate-limit-dc
protocol: UDP
containerPort: 4290
# Container port used for instances to send heartbeats to each other
- name: dc-heartbeat
protocol: UDP
containerPort: 4291
readinessProbe:
httpGet:
path: /status-0123456789abcdef
port: http
scheme: HTTP
initialDelaySeconds: 0
periodSeconds: 5
failureThreshold: 3
successThreshold: 1
envFrom:
- configMapRef:
name: mygw-env
---
apiVersion: v1
kind: Service
metadata:
name: mygw-live-traffic
labels:
app: mygw
spec:
type: LoadBalancer
externalTrafficPolicy: Local
ports:
- name: http
port: 80
targetPort: 8080
- name: https
port: 443
targetPort: 8081
selector:
app: mygw
---
apiVersion: v1
kind: Service
metadata:
name: mygw-instance-discovery
labels:
app: mygw
annotations:
azure.apim.kubernetes.io/notes: "Headless service being used for instance discovery of self-hosted gateway"
spec:
clusterIP: None
type: ClusterIP
ports:
- name: rate-limit-discovery
port: 4290
targetPort: rate-limit-dc
protocol: UDP
- name: discovery-heartbeat
port: 4291
targetPort: dc-heartbeat
protocol: UDP
selector:
app: mygw
انشر البوابة إلى Kubernetes باستخدام الأمر التالي:
kubectl apply -f mygw.yaml
تأكد من تشغيل البوابة
قم بتشغيل الأمر التالي للتحقق مما إذا كان النشر قد نجح. قد يستغرق إنشاء جميع الكائنات وتهيئة القرون بعض الوقت.
kubectl get deploymentsيجب أن تعود
NAME READY UP-TO-DATE AVAILABLE AGE <gateway-name> 1/1 1 1 18sقم بتشغيل الأمر التالي للتحقق مما إذا كان قد تم إنشاء الخدمات بنجاح. ستكون عناوين IP ومنافذ الخدمة مختلفة.
kubectl get servicesيجب أن تعود
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE <gateway-name>-live-traffic ClusterIP None <none> 4290/UDP,4291/UDP 9m1s <gateway-name>-instance-discovery LoadBalancer 10.99.236.168 <pending> 80:31620/TCP,443:30456/TCP 9m1sارجع إلى مدخل Microsoft Azure وحدد نظرة عامة.
تأكد من أن الحالة تعرض علامة اختيار خضراء، متبوعة بعدد عقد يطابق عدد النسخ المتماثلة المحددة في ملف YAML. تعني هذه الحالة أن جرون البوابة المستضافة ذاتيا المنشورة تتواصل بنجاح مع خدمة إدارة واجهة برمجة التطبيقات ولها "نبضات قلب" منتظمة.
تلميح
- قم بتشغيل
kubectl logs deployment/<gateway-name>الأمر لعرض السجلات من جراب محدد عشوائيا إذا كان هناك أكثر من واحد. - قم بالتشغيل
kubectl logs -hللحصول على مجموعة كاملة من خيارات الأوامر، مثل كيفية عرض السجلات لجراب أو حاوية معينة.
المحتوى ذو الصلة
- تعرف على المزيد حول البوابة المستضافة ذاتيا لإدارة واجهة برمجة التطبيقات.
- تعرف على المزيد حول الإرشادات الخاصة بتشغيل البوابة المستضافة ذاتيا على Kubernetes في الإنتاج.
- تعرف على كيفية نشر البوابة المستضافة ذاتيًا لإدارة واجهة برمجة التطبيقات إلى مجموعات Kubernetes الممكّنة بواسطة Azure Arc.