API Management'i Application Gateway ile iç sanal ağda tümleştirme

ŞUNLAR IÇIN GEÇERLIDIR: Geliştirici | Premium

Azure API Management'ı bir sanal ağda iç modda yapılandırarak yalnızca sanal ağ içinden erişilebilir hale getirebilirsiniz. Azure Uygulaması lication Gateway, Katman 7 yük dengeleyici işlevi gören bir hizmet olarak platformdur (PaaS). Ters ara sunucu hizmeti işlevi görür ve teklifleri arasında Azure Web Uygulaması Güvenlik Duvarı (WAF) sağlar.

Bir iç sanal ağda sağlanan API Management’ı Application Gateway ön ucuyla birleştirerek şunları yapabilirsiniz:

  • Hem iç tüketiciler hem de dış tüketiciler tarafından kullanılmak üzere aynı API Management kaynağını kullanın.
  • Tek bir API Management kaynağı kullanın ve dış tüketiciler için kullanılabilir olan API Management'ta tanımlanmış bir API alt kümesine sahip olun.
  • Genel internetten API Management erişimi açmak ve kapatmak için bir anahtar teslimi yolu sağlayın.

Mimari rehberlik için bkz:

Not

Bu makale Application Gateway WAF_v2 SKU'yu kullanacak şekilde güncelleştirildi.

Önkoşullar

Not

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Bu makalede açıklanan adımları izlemek için şunlara sahip olmanız gerekir:

  • Etkin bir Azure aboneliği

    Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

  • Sertifikalar

    • API Management'ın özel konak adları için Kişisel Bilgi Değişimi (PFX) dosyaları: ağ geçidi, geliştirici portalı ve yönetim uç noktası.
    • PFX sertifikalarının kök sertifikası için bir Sertifika (CER) dosyası.

    Daha fazla bilgi için bkz . Arka uç için sertifikalar. Test amacıyla isteğe bağlı olarak otomatik olarak imzalanan sertifikalar oluşturun.

  • Azure PowerShell'in en son sürümü

Senaryo

Bu makalede, iç ve dış tüketiciler için tek bir API Management örneği kullanmayı ve hem şirket içi hem de bulut API'leri için tek bir ön uç gibi davranmasını öğreneceksiniz. Daha yeni tek kiracılı sürüm 2 (stv2) türünde bir API Management örneği oluşturursunuz. Application Gateway'de genel ve özel dinleyicileri kullanmayı öğrenirsiniz. Application Gateway'de sağlanan yönlendirme işlevselliğini kullanarak API'lerinizin yalnızca bir alt kümesini dış tüketim için nasıl kullanıma sunabileceğinizi anlarsınız. Örnekte API'ler yeşil renkle vurgulanır.

İlk kurulum örneğinde tüm API'leriniz yalnızca sanal ağınızın içinden yönetilir. İç tüketiciler tüm iç ve dış API'lerinize erişebilir. Trafik asla İnternet'e gitmez. Yüksek performanslı bağlantı, Azure ExpressRoute bağlantı hatları aracılığıyla teslim edilebilir. Örnekte iç tüketiciler turuncu renkle vurgulanır.

URL yolunu gösteren diyagram.

API Management ve Application Gateway'i tümleştirmek için ne gereklidir?

  • Arka uç sunucu havuzu: Bu sunucu havuzu, API Management’ın iç sanal IP adresidir.
  • Arka uç sunucu havuzu ayarları: Her havuzun bağlantı noktası, protokol ve tanımlama bilgisi temelli benzeşim gibi ayarları vardır. Bu ayarlar havuzdaki tüm sunuculara uygulanır.
  • Ön uç bağlantı noktası: Bu genel bağlantı noktası uygulama ağ geçidinde açılır. Buna ulaşan trafik arka uç sunucularından birine yönlendirilir.
  • Dinleyici: Dinleyicinin ön uç bağlantı noktası, protokol (Http veya Https, bu değerler büyük/küçük harfe duyarlıdır) ve Aktarım Katmanı Güvenliği (TLS) sertifika adı (TLS yük boşaltma yapılandırılıyorsa) vardır.
  • Kural: Kural bir dinleyiciyi arka uç sunucu havuzuna bağlar.
  • Özel sistem durumu yoklaması: Application Gateway varsayılan olarak hangi sunucuların BackendAddressPool etkin olduğunu bulmak için IP adresi tabanlı yoklamaları kullanır. API Management istekleri yalnızca doğru konak üst bilgisi ile yanıtlar, böylece varsayılan yoklamalar başarısız olur. Uygulama ağ geçidinin hizmetin etkin olduğunu ve istekleri iletmesi gerektiğini belirlemesine yardımcı olmak için özel bir sistem durumu yoklaması tanımlarsınız.
  • Özel etki alanı sertifikaları: API Management'a İnternet'ten erişmek için, ana bilgisayar adlarını Application Gateway ön uç IP adresine eşlemek için Etki Alanı Adı Sistemi (DNS) kayıtları oluşturun. Bu eşleme, API Management’a gönderilen Konak üst bilgisinin ve sertifikanın geçerli olmasını sağlar. Bu örnekte üç sertifika kullanırız. Bunlar API Management’ın ağ geçidi (arka uç), geliştirici portalı ve yönetim uç noktası içindir.

Application Gateway aracılığıyla geliştirici portalını ve yönetim uç noktasını harici olarak kullanıma sunma

Bu makalede, uygulama ağ geçidi aracılığıyla geliştirici portalını ve yönetim uç noktasını dış hedef kitlelere de sunuyoruz. Her uç nokta için bir dinleyici, yoklama, ayarlar ve kurallar oluşturmak için ek adımlar gerekir. Tüm ayrıntılar ilgili adımlarda sağlanır.

Microsoft Entra Id veya üçüncü taraf kimlik doğrulaması kullanıyorsanız Application Gateway'de tanımlama bilgisi tabanlı oturum benzimliği özelliğini etkinleştirin.

Uyarı

Application Gateway WAF'nin geliştirici portalında OpenAPI belirtimlerinin indirilmesini bozmasını önlemek için güvenlik duvarı kuralını 942200 - "Detects MySQL comment-/space-obfuscated injections and backtick termination"devre dışı bırakın.

Portalın işlevselliğini bozabilecek Application Gateway WAF kuralları şunlardır:

  • 920300, , 931130920330, , 942100, 942110, 942180, 942200, 942260, , 942340yönetim 942370 modu için
  • 942200, 942260, 942370, 942430, , 942440 yayımlanan portal için

Değişkenleri Ayarlama

Bu kılavuz boyunca birkaç değişken tanımlamanız gerekir. Adlandırma, Bulut Benimseme Çerçevesi kısaltma kılavuzuna dayanır.

# These variables must be changed.
$subscriptionId = "00000000-0000-0000-0000-000000000000"      # GUID of your Azure subscription
$domain = "contoso.net"                                       # The custom domain for your certificate
$apimServiceName = "apim-contoso"                             # API Management service instance name, must be globally unique    
$apimDomainNameLabel = $apimServiceName                       # Domain name label for API Management's public IP address, must be globally unique
$apimAdminEmail = "admin@contoso.net"                         # Administrator's email address - use your email address

$gatewayHostname = "api.$domain"                              # API gateway host
$portalHostname = "portal.$domain"                            # API developer portal host
$managementHostname = "management.$domain"                    # API management endpoint host

$baseCertPath = "C:\Users\Contoso\"                           # The base path where all certificates are stored
$trustedRootCertCerPath = "${baseCertPath}trustedroot.cer"    # Full path to contoso.net trusted root .cer file
$gatewayCertPfxPath = "${baseCertPath}gateway.pfx"            # Full path to api.contoso.net .pfx file
$portalCertPfxPath = "${baseCertPath}portal.pfx"              # Full path to portal.contoso.net .pfx file
$managementCertPfxPath = "${baseCertPath}management.pfx"      # Full path to management.contoso.net .pfx file

$gatewayCertPfxPassword = "certificatePassword123"            # Password for api.contoso.net pfx certificate
$portalCertPfxPassword = "certificatePassword123"             # Password for portal.contoso.net pfx certificate
$managementCertPfxPassword = "certificatePassword123"         # Password for management.contoso.net pfx certificate

# These variables may be changed.
$resGroupName = "rg-apim-agw"                                 # Resource group name that will hold all assets
$location = "West US"                                         # Azure region that will hold all assets
$apimOrganization = "Contoso"                                 # Organization name    
$appgwName = "agw-contoso"                                    # The name of the Application Gateway

Resource Manager için kaynak grubu oluşturun

Azure Resource Manager için bir kaynak grubu oluşturmak için:

  1. Azure'da oturum açın.

    Connect-AzAccount
    
  2. Kimlik bilgilerinizle kimlik doğrulaması.

  3. İstediğiniz aboneliği seçin.

    Get-AzSubscription -Subscriptionid $subscriptionId | Select-AzSubscription
    
  4. Kaynak grubu oluşturun. Mevcut bir kaynak grubunu kullanıyorsanız bu adımı atlayabilirsiniz.

    New-AzResourceGroup -Name $resGroupName -Location $location
    

Resource Manager, tüm kaynak gruplarının bir konum belirtmelerini gerektirir. Bu konum, kaynak grubundaki kaynaklar için varsayılan değer olarak kullanılır. Uygulama ağ geçidi oluşturmak için tüm komutların aynı kaynak grubunu kullandığından emin olun.

Uygulama ağ geçidi için bir sanal ağ ve bir alt ağ oluşturun

Aşağıdaki örnek Resource Manager kullanarak nasıl sanal ağ oluşturulacağını gösterir. Bu örnekteki sanal ağ, Application Gateway ve API Management için ayrı alt ağlardan oluşur.

  1. Application Gateway IP adreslerini ayarlayın.

    Not

    Genel ve özel dinleyiciler olacağı için genel ve özel bir IP adresine ihtiyacımız vardır. Statik, genel IP adresi oluşturulmalı, özel IP adresi ise uygulama ağ geçidiyle ilişkili alt ağdan seçilmelidir. Özel IP adresi rastgele seçildi.

    $appGatewayExternalIP = New-AzPublicIpAddress -ResourceGroupName $resGroupName -name "pip-ag" -location $location -AllocationMethod Static -Sku Standard -Force
    $appGatewayInternalIP = "10.0.0.100"
    
    [String[]]$appGwNsgDestIPs = $appGatewayInternalIP, $appGatewayExternalIP.IpAddress
    
  2. Application Gateway alt ağı için bir ağ güvenlik grubu (NSG) ve NSG kuralları oluşturun.

    $appGwRule1 = New-AzNetworkSecurityRuleConfig -Name appgw-in -Description "AppGw inbound" `
        -Access Allow -Protocol * -Direction Inbound -Priority 100 -SourceAddressPrefix `
        GatewayManager -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 65200-65535
    
    $appGwRule2 = New-AzNetworkSecurityRuleConfig -Name appgw-in-internet -Description "AppGw inbound Internet" `
        -Access Allow -Protocol "TCP" -Direction Inbound -Priority 110 -SourceAddressPrefix `
        Internet -SourcePortRange * -DestinationAddressPrefix $appGwNsgDestIPs -DestinationPortRange 443
    
    $appGwNsg = New-AzNetworkSecurityGroup -ResourceGroupName $resGroupName -Location $location -Name `
        "nsg-agw" -SecurityRules $appGwRule1, $appGwRule2
    
  3. API Management alt ağı için bir ağ güvenlik grubu (NSG) ve NSG kuralları oluşturun. API Management stv2 birkaç özel NSG kuralı gerektirir.

    $apimRule1 = New-AzNetworkSecurityRuleConfig -Name APIM-Management -Description "APIM inbound" `
        -Access Allow -Protocol Tcp -Direction Inbound -Priority 100 -SourceAddressPrefix ApiManagement `
        -SourcePortRange * -DestinationAddressPrefix VirtualNetwork -DestinationPortRange 3443
    
    $apimRule2 = New-AzNetworkSecurityRuleConfig -Name AllowAppGatewayToAPIM -Description "Allows inbound App Gateway traffic to APIM" `
        -Access Allow -Protocol Tcp -Direction Inbound -Priority 110 -SourceAddressPrefix "10.0.0.0/24" `
        -SourcePortRange * -DestinationAddressPrefix "10.0.1.0/24" -DestinationPortRange 443
    
    $apimRule3 = New-AzNetworkSecurityRuleConfig -Name AllowAzureLoadBalancer -Description "Allows inbound Azure Infrastructure Load Balancer traffic to APIM" `
        -Access Allow -Protocol Tcp -Direction Inbound -Priority 120 -SourceAddressPrefix AzureLoadBalancer `
        -SourcePortRange * -DestinationAddressPrefix "10.0.1.0/24" -DestinationPortRange 6390
    
    $apimRule4 = New-AzNetworkSecurityRuleConfig -Name AllowKeyVault -Description "Allows outbound traffic to Azure Key Vault" `
        -Access Allow -Protocol Tcp -Direction Outbound -Priority 100 -SourceAddressPrefix "10.0.1.0/24" `
        -SourcePortRange * -DestinationAddressPrefix AzureKeyVault -DestinationPortRange 443
    
    $apimNsg = New-AzNetworkSecurityGroup -ResourceGroupName $resGroupName -Location $location -Name `
        "nsg-apim" -SecurityRules $apimRule1, $apimRule2, $apimRule3, $apimRule4
    
  4. Bir sanal ağ oluştururken Application Gateway için kullanılacak alt ağ değişkenine 10.0.0.0/24 adres aralığını atayın.

    $appGatewaySubnet = New-AzVirtualNetworkSubnetConfig -Name "appGatewaySubnet" -NetworkSecurityGroup $appGwNsg -AddressPrefix "10.0.0.0/24"
    
  5. Sanal ağ oluştururken API Management için kullanılacak alt ağ değişkenine 10.0.1.0/24 adres aralığını atayın.

    $apimSubnet = New-AzVirtualNetworkSubnetConfig -Name "apimSubnet" -NetworkSecurityGroup $apimNsg -AddressPrefix "10.0.1.0/24"
    
  6. vnet-contoso adlı bir sanal ağ oluşturun. 10.0.0.0/16 ön ekini 10.0.0.0/24 ve 10.0.1.0/24 alt ağlarıyla kullanın.

    $vnet = New-AzVirtualNetwork -Name "vnet-contoso" -ResourceGroupName $resGroupName `
      -Location $location -AddressPrefix "10.0.0.0/16" -Subnet $appGatewaySubnet,$apimSubnet
    
  7. Sonraki adımlar için alt ağ değişkenleri atayın.

    $appGatewaySubnetData = $vnet.Subnets[0]
    $apimSubnetData = $vnet.Subnets[1]
    

Sanal ağ içinde API Management örneği oluşturma

Aşağıdaki örnekte, yalnızca iç erişim için yapılandırılmış bir sanal ağda API Management örneğinin nasıl oluşturulacağı gösterilmektedir.

  1. API Management stv2, benzersiz DomainNameLabelbir genel IP gerektirir.

    $apimPublicIpAddressId = New-AzPublicIpAddress -ResourceGroupName $resGroupName -name "pip-apim" -location $location `
        -AllocationMethod Static -Sku Standard -Force -DomainNameLabel $apimDomainNameLabel
    
  2. Oluşturduğunuz alt $apimSubnetData ağı kullanarak bir API Management sanal ağ nesnesi oluşturun.

    $apimVirtualNetwork = New-AzApiManagementVirtualNetwork -SubnetResourceId $apimSubnetData.Id
    
  3. Sanal ağ içinde bir API Management örneği oluşturun. Bu örnek, hizmeti Geliştirici hizmet katmanında oluşturur. API Management örneğiniz için benzersiz bir ad kullanın.

    $apimService = New-AzApiManagement -ResourceGroupName $resGroupName -Location $location -Name $apimServiceName -Organization $apimOrganization `
        -AdminEmail $apimAdminEmail -VirtualNetwork $apimVirtualNetwork -VpnType "Internal" -Sku "Developer" -PublicIpAddressId $apimPublicIpAddressId.Id
    

Bu katmanda API Management örneğinin oluşturulması ve etkinleştirilmesi 30 ile 40 dakika arasında sürebilir. Önceki komut başarılı olduktan sonra, erişimi onaylamak için iç sanal ağ API Management hizmetine erişmek için gereken DNS yapılandırması bölümüne bakın.

API Management'ta özel etki alanı adlarını ayarlama

API Management'ta özel etki alanı adları ayarlamak için:

  1. Etki alanları ve güvenilen kök sertifika için özel anahtarlara sahip sertifikaların ayrıntılarıyla aşağıdaki değişkenleri başlatın. Bu örnekte , portal.contoso.netve management.contoso.netkullanırızapi.contoso.net.

    $certGatewayPwd = ConvertTo-SecureString -String $gatewayCertPfxPassword -AsPlainText -Force
    $certPortalPwd = ConvertTo-SecureString -String $portalCertPfxPassword -AsPlainText -Force
    $certManagementPwd = ConvertTo-SecureString -String $managementCertPfxPassword -AsPlainText -Force
    
  2. API Management uç noktaları için yapılandırma nesnelerini oluşturun ve ayarlayın Hostname .

    $gatewayHostnameConfig = New-AzApiManagementCustomHostnameConfiguration -Hostname $gatewayHostname `
      -HostnameType Proxy -PfxPath $gatewayCertPfxPath -PfxPassword $certGatewayPwd
    
    $portalHostnameConfig = New-AzApiManagementCustomHostnameConfiguration -Hostname $portalHostname `
      -HostnameType DeveloperPortal -PfxPath $portalCertPfxPath -PfxPassword $certPortalPwd
    
    $managementHostnameConfig = New-AzApiManagementCustomHostnameConfiguration -Hostname $managementHostname `
      -HostnameType Management -PfxPath $managementCertPfxPath -PfxPassword $certManagementPwd
    
    $apimService.ProxyCustomHostnameConfiguration = $gatewayHostnameConfig
    $apimService.PortalCustomHostnameConfiguration = $portalHostnameConfig
    $apimService.ManagementCustomHostnameConfiguration = $managementHostnameConfig
    
    Set-AzApiManagement -InputObject $apimService
    

Sanal ağda DNS çözümlemesi için özel bölge yapılandırma

Sanal ağda DNS çözümlemesi için özel bir DNS bölgesi yapılandırmak için:

  1. Özel bir DNS bölgesi oluşturun ve sanal ağı bağlayın.

    $myZone = New-AzPrivateDnsZone -Name $domain -ResourceGroupName $resGroupName
    
    $link = New-AzPrivateDnsVirtualNetworkLink -ZoneName $domain `
      -ResourceGroupName $resGroupName -Name "mylink" `
      -VirtualNetworkId $vnet.id
    
  2. API Management'ın özel IP adresine eşlenen özel etki alanı konak adları için A kayıtları oluşturun.

    $apimIP = $apimService.PrivateIPAddresses[0]
    
    New-AzPrivateDnsRecordSet -Name api -RecordType A -ZoneName $domain `
      -ResourceGroupName $resGroupName -Ttl 3600 `
      -PrivateDnsRecords (New-AzPrivateDnsRecordConfig -IPv4Address $apimIP)
    
    New-AzPrivateDnsRecordSet -Name portal -RecordType A -ZoneName $domain `
      -ResourceGroupName $resGroupName -Ttl 3600 `
      -PrivateDnsRecords (New-AzPrivateDnsRecordConfig -IPv4Address $apimIP)
    
    New-AzPrivateDnsRecordSet -Name management -RecordType A -ZoneName $domain `
      -ResourceGroupName $resGroupName -Ttl 3600 `
      -PrivateDnsRecords (New-AzPrivateDnsRecordConfig -IPv4Address $apimIP)
    

Uygulama ağ geçidi yapılandırması oluşturma

Uygulama ağ geçidini oluşturmadan önce tüm yapılandırma öğelerinin ayarlanması gerekir. Aşağıdaki adımlar bir Application Gateway kaynağı için gereken yapılandırma öğelerini oluşturur.

  1. gatewayIP01 adlı bir Application Gateway IP yapılandırması oluşturun. Application Gateway başladığında, yapılandırılan alt ağdan bir IP adresi alır ve ağ trafiğini arka uç IP havuzundaki IP adreslerine yönlendirir. Her örneğin bir IP adresi aldığını göz önünde bulundurun.

    $gipconfig = New-AzApplicationGatewayIPConfiguration -Name "gatewayIP01" -Subnet $appGatewaySubnetData
    
  2. Ortak ve özel IP uç noktası için aynı ön uç bağlantı noktasını yapılandırın. Bu bağlantı noktası, kullanıcıların bağlanacakları bağlantı noktasıdır. Hem için aynı bağlantı noktasını kullanarak hem iç hem de dış isteklerin aynı bağlantı noktasına yapılabilmesini sağlıyoruz.

    $fp01 = New-AzApplicationGatewayFrontendPort -Name "port01"  -Port 443
    
  3. Biri genel, diğeri özel olan iki ön uç IP adresi yapılandırın. Özel IP adresi, dizin 0'da ilk oluşturulan uygulama ağ geçidi alt ağından alınır.

    $fipconfig01 = New-AzApplicationGatewayFrontendIPConfig `
      -Name "gateway-public-ip" -PublicIPAddress $appGatewayExternalIP
    
    $fipconfig02 = New-AzApplicationGatewayFrontendIPConfig `
      -Name "gateway-private-ip" -PrivateIPAddress $appGatewayInternalIP `
      -Subnet $vnet.Subnets[0]
    
  4. Uygulama ağ geçidi için sertifikaları yapılandırın. Bunlar, geçen trafiğin şifresini çözmek ve yeniden şifrelemek için kullanılır.

    Not

    Application Gateway özel TLS seçeneklerini tanımlamayı, belirli TLS protokol sürümlerini devre dışı bırakmayı ve şifre paketlerini ve tercih sırasını belirtmeyi destekler. Yapılandırılabilir TLS seçenekleri hakkında daha fazla bilgi edinmek için bkz. TLS ilkesine genel bakış.

    $certGateway = New-AzApplicationGatewaySslCertificate -Name "gatewaycert" `
      -CertificateFile $gatewayCertPfxPath -Password $certGatewayPwd
    
    $certPortal = New-AzApplicationGatewaySslCertificate -Name "portalcert" `
      -CertificateFile $portalCertPfxPath -Password $certPortalPwd
    
    $certManagement = New-AzApplicationGatewaySslCertificate -Name "managementcert" `
      -CertificateFile $managementCertPfxPath -Password $certManagementPwd
    
  5. Uygulama ağ geçidi için HTTP dinleyicileri oluşturun. Ön uç IP yapılandırmasını, bağlantı noktasını ve TLS/SSL sertifikalarını onlara atayın.

    # Public/external listeners
    $gatewayListener = New-AzApplicationGatewayHttpListener -Name "gatewaylistener" `
      -Protocol "Https" -FrontendIPConfiguration $fipconfig01 -FrontendPort $fp01 `
      -SslCertificate $certGateway -HostName $gatewayHostname -RequireServerNameIndication true
    
    $portalListener = New-AzApplicationGatewayHttpListener -Name "portallistener" `
      -Protocol "Https" -FrontendIPConfiguration $fipconfig01 -FrontendPort $fp01 `
      -SslCertificate $certPortal -HostName $portalHostname -RequireServerNameIndication true
    
    $managementListener = New-AzApplicationGatewayHttpListener -Name "managementlistener" `
      -Protocol "Https" -FrontendIPConfiguration $fipconfig01 -FrontendPort $fp01 `
      -SslCertificate $certManagement -HostName $managementHostname -RequireServerNameIndication true
    
    # Private/internal listeners
    $gatewayListenerPrivate = New-AzApplicationGatewayHttpListener -Name "gatewaylistener-private" `
      -Protocol "Https" -FrontendIPConfiguration $fipconfig02 -FrontendPort $fp01 `
      -SslCertificate $certGateway -HostName $gatewayHostname -RequireServerNameIndication true
    
    $portalListenerPrivate = New-AzApplicationGatewayHttpListener -Name "portallistener-private" `
      -Protocol "Https" -FrontendIPConfiguration $fipconfig02 -FrontendPort $fp01 `
      -SslCertificate $certPortal -HostName $portalHostname -RequireServerNameIndication true
    
    $managementListenerPrivate = New-AzApplicationGatewayHttpListener -Name "managementlistener-private" `
      -Protocol "Https" -FrontendIPConfiguration $fipconfig02 -FrontendPort $fp01 `
      -SslCertificate $certManagement -HostName $managementHostname -RequireServerNameIndication true
    
  6. API Management ContosoApi ağ geçidi etki alanı uç noktasında özel yoklamalar oluşturun. Yol /status-0123456789abcdef , API Management'ın tüm örneklerinde barındırılan varsayılan bir sistem durumu uç noktasıdır. TLS/SSL sertifikasıyla güvenliğini sağlamak için özel bir yoklama ana bilgisayar adı olarak ayarlayın api.contoso.net .

    Not

    Ana bilgisayar adı contosoapi.azure-api.net , genel Azure'da adlı contosoapi bir hizmet oluşturulduğunda yapılandırılan varsayılan proxy ana bilgisayar adıdır.

    $apimGatewayProbe = New-AzApplicationGatewayProbeConfig -Name "apimgatewayprobe" `
      -Protocol "Https" -HostName $gatewayHostname -Path "/status-0123456789abcdef" `
      -Interval 30 -Timeout 120 -UnhealthyThreshold 8
    
    $apimPortalProbe = New-AzApplicationGatewayProbeConfig -Name "apimportalprobe" `
      -Protocol "Https" -HostName $portalHostname -Path "/signin" `
      -Interval 60 -Timeout 300 -UnhealthyThreshold 8
    
    $apimManagementProbe = New-AzApplicationGatewayProbeConfig -Name "apimmanagementprobe" `
      -Protocol "Https" -HostName $managementHostname -Path "/ServiceStatus" `
      -Interval 60 -Timeout 300 -UnhealthyThreshold 8
    
  7. Arka uç sertifikalarının güvenilen kök sertifikasını yapılandırın. Bu sertifika, arka uç sertifikalarının orijinalliğini doğrular.

    $trustedRootCert = New-AzApplicationGatewayTrustedRootCertificate `
      -Name "allowlistcert1" -CertificateFile $trustedRootCertCerPath
    
  8. Arka uç istekleri için zaman aşımı sınırı dahil olmak üzere uygulama ağ geçidi için HTTP arka uç ayarlarını yapılandırın ve ardından bunlar iptal edilir. Bu değer yoklama zaman aşımından farklıdır.

    $apimPoolGatewaySetting = New-AzApplicationGatewayBackendHttpSettings -Name "apimPoolGatewaySetting" `
      -Port 443 -Protocol "Https" -CookieBasedAffinity "Disabled" -Probe $apimGatewayProbe `
      -TrustedRootCertificate $trustedRootCert -PickHostNameFromBackendAddress -RequestTimeout 180
    
    $apimPoolPortalSetting = New-AzApplicationGatewayBackendHttpSettings -Name "apimPoolPortalSetting" `
      -Port 443 -Protocol "Https" -CookieBasedAffinity "Disabled" -Probe $apimPortalProbe `
      -TrustedRootCertificate $trustedRootCert -PickHostNameFromBackendAddress -RequestTimeout 180
    
    $apimPoolManagementSetting = New-AzApplicationGatewayBackendHttpSettings -Name "apimPoolManagementSetting" `
      -Port 443 -Protocol "Https" -CookieBasedAffinity "Disabled" -Probe $apimManagementProbe `
      -TrustedRootCertificate $trustedRootCert -PickHostNameFromBackendAddress -RequestTimeout 180
    
  9. İlgili etki alanı adını kullanarak her API Management uç noktası için bir arka uç IP adresi havuzu yapılandırın.

    $apimGatewayBackendPool = New-AzApplicationGatewayBackendAddressPool -Name "gatewaybackend" `
      -BackendFqdns $gatewayHostname
    
    $apimPortalBackendPool = New-AzApplicationGatewayBackendAddressPool -Name "portalbackend" `
      -BackendFqdns $portalHostname
    
    $apimManagementBackendPool = New-AzApplicationGatewayBackendAddressPool -Name "managementbackend" `
      -BackendFqdns $managementHostname
    
  10. Temel yönlendirmeyi kullanmak üzere uygulama ağ geçidi için yönlendirme kuralları oluşturun.

    # Public/external gateway rules
    $gatewayRule = New-AzApplicationGatewayRequestRoutingRule -Name "gatewayrule" `
      -RuleType Basic -HttpListener $gatewayListener -BackendAddressPool $apimGatewayBackendPool `
      -BackendHttpSettings $apimPoolGatewaySetting -Priority 10
    
    $portalRule = New-AzApplicationGatewayRequestRoutingRule -Name "portalrule" `
      -RuleType Basic -HttpListener $portalListener -BackendAddressPool $apimPortalBackendPool `
      -BackendHttpSettings $apimPoolPortalSetting -Priority 20
    
    $managementRule = New-AzApplicationGatewayRequestRoutingRule -Name "managementrule" `
      -RuleType Basic -HttpListener $managementListener -BackendAddressPool $apimManagementBackendPool `
      -BackendHttpSettings $apimPoolManagementSetting -Priority 30
    
    # Private/internal gateway rules
    $gatewayRulePrivate = New-AzApplicationGatewayRequestRoutingRule -Name "gatewayrule-private" `
      -RuleType Basic -HttpListener $gatewayListenerPrivate -BackendAddressPool $apimGatewayBackendPool `
      -BackendHttpSettings $apimPoolGatewaySetting -Priority 11
    
    $portalRulePrivate = New-AzApplicationGatewayRequestRoutingRule -Name "portalrule-private" `
      -RuleType Basic -HttpListener $portalListenerPrivate -BackendAddressPool $apimPortalBackendPool `
      -BackendHttpSettings $apimPoolPortalSetting -Priority 21
    
    $managementRulePrivate = New-AzApplicationGatewayRequestRoutingRule -Name "managementrule-private" `
      -RuleType Basic -HttpListener $managementListenerPrivate -BackendAddressPool $apimManagementBackendPool `
      -BackendHttpSettings $apimPoolManagementSetting -Priority 31
    

    İpucu

    Geliştirici portalının belirli sayfalarına erişimi kısıtlamak için değişiklik -RuleType ve yönlendirme.

  11. Uygulama ağ geçidi için örnek sayısını ve boyutu yapılandırın. Bu örnekte API Management kaynağının daha fazla güvenliği için WAF_v2 SKU'yu kullanacağız.

    Üretim iş yükleri için en az iki örnek (Kapasite) kullanın. Üretim dışı senaryolar veya genel denemeler için yalnızca bir örnek kullanmak isteyebilirsiniz. Daha fazla bilgi için bkz. Azure Uygulaması lication Gateway fiyatlandırması.

    $sku = New-AzApplicationGatewaySku -Name "WAF_v2" -Tier "WAF_v2" -Capacity 2
    
  12. WAF modunu yapılandırın.

    İpucu

    Kurulum sırasında kısa bir süre için ve güvenlik duvarı kurallarınızı test etmek için tehdit uyarılarını izleyen ve günlüğe kaydeden ancak trafiği engellemeyen "Algılama" modunu yapılandırmak isteyebilirsiniz. Ardından, kuralların algıladığı yetkisiz erişimleri ve saldırıları engelleyen "Önleme" moduna geçmeden önce güvenlik duvarı kurallarında herhangi bir güncelleştirme yapabilirsiniz.

    $config = New-AzApplicationGatewayWebApplicationFirewallConfiguration -Enabled $true -FirewallMode "Prevention"
    
  13. TLS 1.0 şu anda varsayılan olduğundan, uygulama ağ geçidini son TLS 1.2 ilkelerinden birini kullanacak şekilde ayarlayın.

    $policy = New-AzApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName AppGwSslPolicy20220101
    

Uygulama ağ geçidi oluşturma

  1. Önceki adımlarda yer alan tüm yapılandırma nesneleriyle bir uygulama ağ geçidi oluşturun. Örneğin oluşturulması 15 dakika sürebilir.

    $appgw = New-AzApplicationGateway `
      -Name $appgwName `
      -ResourceGroupName $resGroupName `
      -Location $location `
      -Sku $sku `
      -SslPolicy $policy `
      -SslCertificates $certGateway, $certPortal, $certManagement `
      -TrustedRootCertificate $trustedRootCert `
      -BackendAddressPools $apimGatewayBackendPool, $apimPortalBackendPool, $apimManagementBackendPool `
      -BackendHttpSettingsCollection $apimPoolGatewaySetting, $apimPoolPortalSetting, $apimPoolManagementSetting `
      -GatewayIpConfigurations $gipconfig `
      -FrontendIpConfigurations $fipconfig01, $fipconfig02 `
      -FrontendPorts $fp01 `
      -HttpListeners $gatewayListener, $portalListener, $managementListener, $gatewayListenerPrivate, $portalListenerPrivate, $managementListenerPrivate `
      -RequestRoutingRules $gatewayRule, $portalRule, $managementRule, $gatewayRulePrivate, $portalRulePrivate, $managementRulePrivate `
      -Probes $apimGatewayProbe, $apimPortalProbe, $apimManagementProbe `
      -WebApplicationFirewallConfig $config
    
  2. API Management arka uçlarının sistem durumunu onaylayın.

    Get-AzApplicationGatewayBackendHealth -Name $appgwName -ResourceGroupName $resGroupName
    

Her arka uç havuzunun sistem durumunun Sağlıklı olduğundan emin olun. İyi durumda olmayan bir arka uç veya sistem durumu bilinmeyen bir arka uç sorunlarını gidermeniz gerekiyorsa bkz . Application Gateway'de arka uç sistem durumu sorunlarını giderme.

İNTERNET'ten API Management uç noktalarına erişmek için DNS kayıtları oluşturma

Uygulama ağ geçidi oluşturulduktan sonra, İnternet'ten API Management ile iletişimi yapılandırın. Yapılandırdığınız API Management uç nokta ana bilgisayar adlarının her birini uygulama ağ geçidinin statik genel IP adresiyle eşleyen DNS A kayıtları oluşturun. Bu makalede, örnek konak adları , portal.contoso.netve management.contoso.netşeklindedirapi.contoso.net.

Bağlan ivity doğrulaması

Hızlı test amacıyla, uygulama ağ geçidinin genel IP adresini API Management uç noktası ana bilgisayar adlarıyla eşleyen girdilerle bilgisayarınızın konak dosyasını geçici olarak değiştirmeyi göz önünde bulundurun:

  1. Konak dosyalarını değiştirin. Örneğin, uygulama ağ geçidinin genel IP'si ise 172.203.129.101girdi olabilir 172.203.129.101 api.contoso.net.
  2. API Management'ın durum uç noktasında (daha önce sistem durumu yoklaması için kullanılan yol) bir curl komutu yürütür: curl -v https://api.contoso.net/status-0123456789abcdef Bu, Application Gateway aracılığıyla API Management ile başarılı bir iletişim olduğunu gösteren bir 200 Service Operational durum döndürmelidir.

DNS ile ilgili dikkat edilmesi gerekenler

Application Gateway'in artık özel ve genel yolları vardır. Aynı etki alanlarının ve bağlantı noktalarının kullanılması, bir dış DNS çözümleyicisinin uygulama ağ geçidinin dış IP adresine çözümlenecek api.contoso.net şekilde ayarlanması gereken bir bölünmüş beyin DNS durumu oluştururken, bir iç DNS çözümleyicisinin aynı etki alanını uygulama ağ geçidinin iç IP adresine çözümlemesi gerekir. Bu kurulum, uygulamaların ve API'lerin iç veya dış hedeflemesi için etki alanını veya bağlantı noktasını değiştirmesi gerekmediğinden bir avantaj sağlar. Hedefleme sorumluluğu, DNS çözümleyicilerine uygun şekilde ertelenmektedir.

Özet

Sanal ağda yapılandırılan API Management, şirket içinde veya bulutta barındırılan tüm yapılandırılmış API'ler için tek bir ağ geçidi arabirimi sağlar. Application Gateway'i API Management ile tümleştirmek, belirli API'lerin İnternet'te erişilebilir olmasını seçmeli olarak etkinleştirme esnekliği sağlar. Tümleştirme ayrıca API Management örneğinize ön uç olarak bir WAF sağlar.

Sonraki adımlar