Şirket içinde barındırılan ağ geçidi için Microsoft Entra kimlik doğrulamasını kullanma
ŞUNLAR IÇIN GEÇERLIDIR: Geliştirici | Premium
Azure API Management şirket içinde barındırılan ağ geçidinin durumu raporlamak, yapılandırma güncelleştirmelerini denetlemek ve uygulamak, ölçümler ve olaylar göndermek için ilişkili bulut tabanlı API Management örneğiyle bağlantıya ihtiyacı vardır.
Bulut tabanlı API Management örneğine bağlanmak için bir ağ geçidi erişim belirteci (kimlik doğrulama anahtarı) kullanmanın yanı sıra, microsoft entra uygulamasını kullanarak şirket içinde barındırılan ağ geçidinin ilişkili bulut örneğinde kimlik doğrulaması yapmasını sağlayabilirsiniz. Microsoft Entra kimlik doğrulaması ile gizli diziler için daha uzun süre sonu süreleri yapılandırabilir ve Active Directory'de gizli dizileri yönetmek ve döndürmek için standart adımları kullanabilirsiniz.
Senaryoya genel bakış
Şirket içinde barındırılan ağ geçidi yapılandırma API'si, ağ geçidi yapılandırmasını okuma izinlerine sahip olan kişileri belirlemek için Azure RBAC'yi denetleyebilir. Bu izinlere sahip bir Microsoft Entra uygulaması oluşturduktan sonra, şirket içinde barındırılan ağ geçidi uygulamayı kullanarak API Management örneğinde kimlik doğrulaması yapabilir.
Microsoft Entra kimlik doğrulamasını etkinleştirmek için aşağıdaki adımları tamamlayın:
- şu iki özel rol oluşturun:
- Yapılandırma API'sinin müşterinin RBAC bilgilerine erişmesine izin ver
- Şirket içinde barındırılan ağ geçidi yapılandırmasını okuma izinleri verme
- API Management örneğinin yönetilen kimliğine RBAC erişimi verme
- Bir Microsoft Entra uygulaması oluşturma ve ağ geçidi yapılandırmasını okuması için erişim verme
- Ağ geçidini yeni yapılandırma seçenekleriyle dağıtma
Önkoşullar
- Geliştirici veya Premium hizmet katmanındaki bir API Management örneği. Gerekirse aşağıdaki hızlı başlangıcı tamamlayın: Azure API Management örneği oluşturma.
- Örnekte bir ağ geçidi kaynağı sağlayın.
- Örnekte sistem tarafından atanan yönetilen kimliği etkinleştirin.
- Şirket içinde barındırılan ağ geçidi kapsayıcı görüntüsü sürüm 2.2 veya üzeri
Sınırlama notları
- Yalnızca sistem tarafından atanan yönetilen kimlik desteklenir.
Özel roller oluşturma
Sonraki adımlarda atanan aşağıdaki iki özel rolü oluşturun. Azure portalı, Azure CLI, Azure PowerShell veya diğer Azure araçlarını kullanarak özel roller oluşturmak için aşağıdaki JSON şablonlarında listelenen izinleri kullanabilirsiniz.
Özel rolleri yapılandırırken, api Management örneğinizin dağıtıldığı abonelik gibi dizininiz için uygun kapsam değerleriyle özelliğini güncelleştirin AssignableScopes
.
API Management Yapılandırma API'sinde Erişim Doğrulayıcı Hizmeti Rolü
{
"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}"
]
}
API Management Ağ Geçidi Yapılandırma OkuyucuSu Rolü
{
"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}"
]
}
Rol atamaları ekleme
API Management Yapılandırma API'si Erişim Doğrulayıcısı Hizmet Rolü Atama
API Management Yapılandırması API Erişim Doğrulayıcı Hizmeti Rolünü API Management örneğinin yönetilen kimliğine atayın. Rol atamaya yönelik ayrıntılı adımlar için bkz . Portalı kullanarak Azure rolleri atama.
- Kapsam: API Management örneğinin dağıtıldığı kaynak grubu veya abonelik
- Rol: API Management Yapılandırma API'si Erişim Doğrulayıcı Hizmeti Rolü
- Erişim atama: API Management örneğinin yönetilen kimliği
API Management Ağ Geçidi Yapılandırma Okuyucusu Rolü Atama
1. Adım: Microsoft Entra uygulamasını kaydetme
Yeni bir Microsoft Entra uygulaması oluşturun. Adımlar için bkz . Kaynaklara erişebilen bir Microsoft Entra uygulaması ve hizmet sorumlusu oluşturma. Bu uygulama, API Management örneğinde kimlik doğrulaması yapmak için şirket içinde barındırılan ağ geçidi tarafından kullanılır.
- İstemci gizli dizisi oluşturma
- Şirket içinde barındırılan ağ geçidini dağıtırken sonraki bölümde kullanmak üzere aşağıdaki uygulama değerlerini not edin: uygulama (istemci) kimliği, dizin (kiracı) kimliği ve istemci gizli dizisi
2. Adım: API Management Ağ Geçidi Yapılandırma Okuyucu Hizmeti Rolü Atama
Uygulamaya API Management Ağ Geçidi Yapılandırma Okuyucu hizmeti rolünü atayın .
- Kapsam: API Management örneği (veya dağıtıldığı kaynak grubu veya abonelik)
- Rol: API Management Ağ Geçidi Yapılandırma OkuyucuSu Rolü
- Erişim atama: Microsoft Entra uygulaması
Şirket içinde barındırılan ağ geçidini dağıtma
Şirket içinde barındırılan ağ geçidini Kubernetes'e dağıtın ve ağ geçitlerinin ConfigMap
öğesine Microsoft Entra uygulama kayıt ayarlarını data
ekleyin. Aşağıdaki örnek YAML yapılandırma dosyasında, ağ geçidi mygw ve dosya olarak adlandırılırmygw.yaml
.
Önemli
Mevcut Kubernetes dağıtım kılavuzunu izliyorsanız:
- komutunu kullanarak varsayılan kimlik doğrulama anahtarını depolama adımını atladığından
kubectl create secret generic
emin olun. - Aşağıdaki temel yapılandırma dosyasını Azure portalında sizin için oluşturulan varsayılan YAML dosyasıyla değiştirin. Aşağıdaki dosya, kimlik doğrulama anahtarı kullanmak üzere yapılandırma yerine Microsoft Entra yapılandırmasını ekler.
---
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
Aşağıdaki komutla ağ geçidini Kubernetes'e dağıtın:
kubectl apply -f mygw.yaml
Ağ geçidinin çalıştığını onaylayın
Dağıtımın başarılı olup olmadığını denetlemek için aşağıdaki komutu çalıştırın. Tüm nesnelerin oluşturulması ve podların başlatılması biraz zaman alabilir.
kubectl get deployments
Döndürülmesi gerekir
NAME READY UP-TO-DATE AVAILABLE AGE <gateway-name> 1/1 1 1 18s
Hizmetlerin başarıyla oluşturulup oluşturulmadığını denetlemek için aşağıdaki komutu çalıştırın. Hizmet IP'leriniz ve bağlantı noktalarınız farklı olacaktır.
kubectl get services
Döndürülmesi gerekir
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
Azure portalına dönün ve Genel Bakış'ı seçin.
Durum'un yeşil bir onay işareti ve ardından YAML dosyasında belirtilen çoğaltma sayısıyla eşleşen bir düğüm sayısı gösterdiğini onaylayın. Bu durum, dağıtılan şirket içinde barındırılan ağ geçidi podlarının API Management hizmetiyle başarıyla iletişim kurarak normal bir "sinyale" sahip olduğu anlamına gelir.
İpucu
kubectl logs deployment/<gateway-name>
Birden fazla pod varsa rastgele seçilen bir poddaki günlükleri görüntülemek için komutunu çalıştırın.- Belirli bir pod veya kapsayıcının günlüklerini görüntüleme gibi eksiksiz bir komut seçenekleri kümesi için komutunu çalıştırın
kubectl logs -h
.
Sonraki adımlar
- API Management şirket içinde barındırılan ağ geçidine genel bakış hakkında daha fazla bilgi edinin.
- Üretimde Kubernetes'te şirket içinde barındırılan ağ geçidini çalıştırma yönergeleri hakkında daha fazla bilgi edinin.
- API Management şirket içinde barındırılan ağ geçidini Azure Arc özellikli Kubernetes kümelerine dağıtmayı öğrenin.