Mengintegrasikan API Management pada jaringan virtual internal dengan Application Gateway

Anda dapat mengonfigurasi Azure API Management pada jaringan virtual dalam mode internal, sehingga membuatnya agar hanya dapat diakses dari dalam jaringan virtual. Azure Application Gateway adalah platform as a service (PaaS) yang bertindak sebagai penyeimbang muatan Layer-7. Platform ini bertindak sebagai layanan proksi terbalik dan menyajikan Azure Web Application Firewall (WAF) sebagai salah satu penawarannya.

Dengan menggabungkan API Management yang diprovisikan pada jaringan virtual internal dengan ujung depan Application Gateway, Anda dapat:

  • Gunakan sumber daya API Management yang sama untuk konsumsi oleh konsumen internal dan konsumen eksternal.
  • Gunakan satu sumber daya API Management dan memiliki subkumpulan API yang ditentukan dalam API Management yang tersedia untuk konsumen eksternal.
  • Menyediakan cara cepat mengaktifkan dan menonaktifkan akses ke API Management dari internet publik.

Catatan

Artikel ini telah diperbarui untuk menggunakan Application Gateway WAF_v2 SKU.

Ketersediaan

Penting

Fitur ini tersedia di tingkat Premium dan Pengembang API Management.

Prasyarat

Catatan

Artikel ini menggunakan modul Azure Az PowerShell, yang merupakan modul PowerShell yang direkomendasikan untuk berinteraksi dengan Azure. Untuk mulai menggunakan modul Az PowerShell, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Untuk melakukan langkah-langkah yang dijelaskan dalam artikel ini, Anda harus memiliki:

Skenario

Di artikel ini, Anda akan mempelajari cara menggunakan satu instans API Management bagi pelanggan internal dan eksternal dan membuatnya agar bertindak sebagai satu front end untuk API lokal dan cloud. Anda juga akan memahami cara mengekspos hanya sebagian dari API Anda untuk penggunaan eksternal dengan menggunakan fungsionalitas perutean yang tersedia pada Application Gateway. Dalam contoh tersebut, API disorot dengan warna hijau.

Pada contoh pengaturan pertama, semua API Anda dikelola hanya dari dalam jaringan virtual. Konsumen internal dapat mengakses semua API internal dan eksternal Anda. Lalu lintas tidak pernah keluar ke internet. Konektivitas dengan performa yang tinggi dapat dicapai melalui sirkuit Azure ExpressRoute. Dalam contoh tersebut, konsumen internal disorot dengan warna oranye.

Diagram that shows the URL route.

Apa yang diperlukan untuk mengintegrasikan API Management dan Application Gateway?

  • Kluster server back-end: Kluster server ini adalah alamat IP virtual internal API Management.
  • Pengaturan kluster server back-end: Setiap kumpulan memiliki pengaturan seperti port, protokol, dan afinitas berbasis cookie. Pengaturan ini diterapkan ke semua server di dalam kumpulan.
  • Port front-end: Port publik ini dibuka pada gateway aplikasi. Lalu lintas yang menuju ke port tersebut akan dialihkan ke salah satu server back-end.
  • Pendengar: Pendengar memiliki port front-end, protokol (Http atau Https, dan nilai ini peka terhadap huruf besar/kecil), serta nama sertifikat TLS/SSL (jika mengonfigurasi offload SSL).
  • Aturan: Aturan ini mengikat pendengar ke kluster server back-end.
  • Probe kesehatan kustom: Secara default, Application Gateway menggunakan probe berbasis alamat IP untuk mengetahui server mana di BackendAddressPool yang aktif. Probe default gagal karena API Management hanya menanggapi permintaan dengan header host yang benar. Anda menentukan probe kesehatan kustom untuk membantu gateway aplikasi untuk menentukan bahwa layanan tersebut memang aktif dan harus meneruskan permintaan.
  • Sertifikat domain kustom: Untuk mengakses API Management dari internet, Anda perlu membuat pemetaan CNAME nama host-nya ke nama DNS front-end Application Gateway. Pemetaan ini memastikan bahwa header nama host dan sertifikat yang dikirimkan ke Application Gateway dan diteruskan ke API Management adalah header serta sertifikat yang dianggap valid oleh API Management. Dalam contoh ini, kita akan menggunakan tiga sertifikat. Sertifikat tersebut ditujukan untuk gateway API Management (back-end), portal pengembang, serta titik akhir manajemen.

Mengekspos portal pengembang dan titik akhir manajemen secara eksternal melalui Application Gateway

Pada artikel ini, kami juga akan menunjukkan portal pengembang dan titik akhir manajemen ke audiens eksternal melalui gateway aplikasi. Langkah tambahan diperlukan untuk membuat pendengar, probe, pengaturan, dan aturan untuk setiap titik akhir. Semua detail telah disediakan dalam setiap langkahnya.

Jika Anda menggunakan Azure Active Directory atau autentikasi pihak ketiga, aktifkan fitur afinitas sesi berbasis cookie pada Application Gateway.

Peringatan

Untuk mencegah WAF Application Gateway agar tidak memutuskan pengunduhan spesifikasi OpenAPI pada portal pengembang, nonaktifkan aturan firewall 942200 - "Detects MySQL comment-/space-obfuscated injections and backtick termination".

Aturan WAF Application Gateway yang dapat memutuskan fungsionalitas portal antara lain:

  • 920300, 920330, 931130, 942100, 942110, 942180, 942200, 942260, 942340, 942370 untuk mode administratif
  • 942200, 942260, 942370, 942430, 942440 untuk portal yang diterbitkan

Membuat grup sumber daya untuk Resource Manager

Cara membuat grup sumber daya untuk Azure Resource Manager:

  1. Masuk ke Azure.

    Connect-AzAccount
    
  2. Autentikasi dengan kredensial Anda.

  3. Pilih langganan yang ingin Anda gunakan.

    $subscriptionId = "00000000-0000-0000-0000-000000000000" # GUID of your Azure subscription
    Get-AzSubscription -Subscriptionid $subscriptionId | Select-AzSubscription
    
  4. Membuat grup sumber daya. Anda bisa melewati langkah ini jika Anda menggunakan grup sumber daya yang sudah ada.

    $resGroupName = "apim-appGw-RG" # resource group name
    $location = "West US"           # Azure region
    New-AzResourceGroup -Name $resGroupName -Location $location
    

Resource Manager mengharuskan agar senya grup sumber daya menentukan lokasi. Lokasi ini akan digunakan sebagai lokasi default sumber daya yang dibuat di grup sumber daya tersebut. Pastikan semua perintah untuk membuat gateway aplikasi menggunakan grup sumber daya yang sama.

Buat jaringan virtual dan subnet untuk gateway aplikasi

Contoh berikut menjelaskan cara membuat jaringan virtual dengan menggunakan Resource Manager. Jaringan virtual pada contoh ini terdiri dari subnet terpisah untuk Application Gateway dan API Management.

  1. Buat kelompok keamanan jaringan (NSG) dan aturan NSG untuk subnet Application Gateway dan API Management.

    $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 * -DestinationPortRange 443
    $appGwNsg = New-AzNetworkSecurityGroup -ResourceGroupName $resGroupName -Location $location -Name `
        "NSG-APPGW" -SecurityRules $appGwRule1, $appGwRule2
    
    $apimRule1 = New-AzNetworkSecurityRuleConfig -Name apim-in -Description "APIM inbound" `
        -Access Allow -Protocol Tcp -Direction Inbound -Priority 100 -SourceAddressPrefix `
        ApiManagement -SourcePortRange * -DestinationAddressPrefix VirtualNetwork -DestinationPortRange 3443
    $apimNsg = New-AzNetworkSecurityGroup -ResourceGroupName $resGroupName -Location $location -Name `
        "NSG-APIM" -SecurityRules $apimRule1
    
  2. Tetapkan rentang alamat 10.0.0.0/24 ke variabel subnet agar digunakan oleh Application Gateway saat Anda membuat jaringan virtual.

    $appGatewaySubnet = New-AzVirtualNetworkSubnetConfig -Name "appGatewaySubnet" -NetworkSecurityGroup $appGwNsg -AddressPrefix "10.0.0.0/24"
    
  3. Tetapkan rentang alamat 10.0.1.0/24 ke variabel subnet agar digunakan oleh API Management saat Anda membuat jaringan virtual.

    $apimSubnet = New-AzVirtualNetworkSubnetConfig -Name "apimSubnet" -NetworkSecurityGroup $apimNsg -AddressPrefix "10.0.1.0/24"
    
  4. Membuat jaringan virtual bernama appgwvnet pada grup sumber daya apim-appGw-RG untuk wilayah US Barat. Gunakan awalan 10.0.0.0/16 dengan subnet 10.0.0.0/24 dan 10.0.1.0/24.

    $vnet = New-AzVirtualNetwork -Name "appgwvnet" -ResourceGroupName $resGroupName `
      -Location $location -AddressPrefix "10.0.0.0/16" -Subnet $appGatewaySubnet,$apimSubnet
    
  5. Tetapkan variabel subnet untuk langkah selanjutnya.

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

Membuat instans API Management di dalam jaringan virtual

Contoh berikut menunjukkan cara membuat instans API Management dalam jaringan virtual yang dikonfigurasi khusus untuk akses internal.

  1. Buat objek jaringan virtual API Management dengan menggunakan subnet $apimSubnetData yang telah Anda buat.

    $apimVirtualNetwork = New-AzApiManagementVirtualNetwork -SubnetResourceId $apimSubnetData.Id
    
  2. Buat instans API Management di dalam jaringan virtual. Contoh ini membuat layanan pada tingkat layanan Pengembang. Ganti nama unik instans API Management Anda.

    $apimServiceName = "ContosoApi"       # API Management service instance name, must be globally unique
    $apimOrganization = "Contoso"         # Organization name
    $apimAdminEmail = "admin@contoso.com" # Administrator's email address
    $apimService = New-AzApiManagement -ResourceGroupName $resGroupName -Location $location -Name $apimServiceName -Organization $apimOrganization -AdminEmail $apimAdminEmail -VirtualNetwork $apimVirtualNetwork -VpnType "Internal" -Sku "Developer"
    

Dibutuhkan waktu antara 30 dan 40 menit untuk membuat dan mengaktifkan instans API Management di tingkat ini. Setelah perintah sebelumnya berhasil, lihat Konfigurasi DNS yang diperlukan untuk mengakses jaringan virtual internal layanan API Management untuk memastikan aksesnya.

Mengatur nama domain kustom pada API Management

Cara menyiapkan nama domain kustom di API Management:

  1. Menginisialisasi variabel berikut dengan detail sertifikat yang memiliki kunci pribadi untuk domain dan sertifikat root yang tepercaya. Pada contoh berikut, kami menggunakan mapi.contoso.net, portal.contoso.net, dan management.contoso.net.

    $gatewayHostname = "api.contoso.net"                 # API gateway host
    $portalHostname = "portal.contoso.net"               # API developer portal host
    $managementHostname = "management.contoso.net"               # API management endpoint host
    $gatewayCertPfxPath = "C:\Users\Contoso\gateway.pfx" # Full path to api.contoso.net .pfx file
    $portalCertPfxPath = "C:\Users\Contoso\portal.pfx"   # Full path to portal.contoso.net .pfx file
    $managementCertPfxPath = "C:\Users\Contoso\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
    # Path to trusted root CER file used in Application Gateway HTTP settings
    $trustedRootCertCerPath = "C:\Users\Contoso\trustedroot.cer" # Full path to contoso.net trusted root .cer file
    
    $certGatewayPwd = ConvertTo-SecureString -String $gatewayCertPfxPassword -AsPlainText -Force
    $certPortalPwd = ConvertTo-SecureString -String $portalCertPfxPassword -AsPlainText -Force
    $certManagementPwd = ConvertTo-SecureString -String $managementCertPfxPassword -AsPlainText -Force
    
  2. Buat dan atur objek konfigurasi Hostname untuk titik akhir API Management.

    $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
    

Catatan

Untuk mengonfigurasi konektivitas ke portal pengembang warisan, Anda perlu mengganti -HostnameType DeveloperPortal dengan -HostnameType Portal.

Mengonfigurasi zona pribadi untuk resolusi DNS pada jaringan virtual

Cara mengonfigurasi zona DNS privat untuk resolusi DNS pada jaringan virtual:

  1. Membuat zona DNS pribadi dan menautkan jaringan virtual.

    $myZone = New-AzPrivateDnsZone -Name "contoso.net" -ResourceGroupName $resGroupName 
    $link = New-AzPrivateDnsVirtualNetworkLink -ZoneName contoso.net `
      -ResourceGroupName $resGroupName -Name "mylink" `
      -VirtualNetworkId $vnet.id
    
  2. Buat catatan-A untuk nama host domain kustom yang memetakan ke alamat IP privat API Management.

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

Membuat alamat IP publik untuk konfigurasi ujung depan

Membuat sumber daya IP publik Standar publicIP01 pada grup sumber daya.

$publicip = New-AzPublicIpAddress -ResourceGroupName $resGroupName `
  -name "publicIP01" -location $location -AllocationMethod Static -Sku Standard

Alamat IP akan ditetapkan ke gateway aplikasi saat layanan dimulai.

Membuat konfigurasi gateway aplikasi

Semua item konfigurasi harus disiapkan sebelum membuat gateway aplikasi. Langkah-langkah berikut bertujuan untuk membuat item konfigurasi yang diperlukan untuk sumber daya Application Gateway.

  1. Buat konfigurasi IP Application Gateway yang diberi nama gatewayIP01. Saat Application Gateway dimulai, Application Gateway akan mengambil alamat IP dari subnet yang dikonfigurasi dan merutekan lalu lintas ke alamat IP di kumpulan IP back-end. Perlu diingat bahwa setiap instans mengambil satu alamat IP.

    $gipconfig = New-AzApplicationGatewayIPConfiguration -Name "gatewayIP01" -Subnet $appGatewaySubnetData
    
  2. Konfigurasikan port IP ujung depan untuk titik akhir IP publik. Port ini adalah port yang digunakan oleh pengguna untuk tersambung.

    $fp01 = New-AzApplicationGatewayFrontendPort -Name "port01"  -Port 443
    
  3. Konfigurasikan IP front-end dengan titik akhir IP publik.

    $fipconfig01 = New-AzApplicationGatewayFrontendIPConfig -Name "frontend1" -PublicIPAddress $publicip
    
  4. Konfigurasikan sertifikat untuk gateway aplikasi. Sertifikat tersebut akan digunakan untuk membatalkan enkripsi dan mendekripsi ulang lalu lintas yang melewatinya.

    Catatan

    Application Gateway mendukung penentuan opsi TLS kustom, menonaktifkan versi protokol TLS tertentu, dan menentukan suite cipher serta urutan preferensi. Untuk mempelajari lebih lanjut tentang opsi TLS yang dapat dikonfigurasi, lihat ikhtisar kebijakan TLS.

    $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. Buat pendengar HTTP untuk gateway aplikasi. Tetapkan konfigurasi IP front-end, port, dan sertifikat TLS/SSL untuk digunakan.

    $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
    
  6. Buat probe kustom ke titik akhir domain gateway ContosoApi API Management. Jalur /status-0123456789abcdef adalah titik akhir kesehatan default yang dihosting di semua instans API Management. Atur api.contoso.net sebagai nama host probe kustom untuk mengamankannya dengan sertifikat TLS/SSL.

    Catatan

    Nama host contosoapi.azure-api.net adalah nama host proksi default yang dikonfigurasi saat layanan bernama contosoapi dibuat di Azure publik.

    $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. Mengunggah sertifikat akar tepercaya untuk dikonfigurasi pada pengaturan HTTP.

    $trustedRootCert = New-AzApplicationGatewayTrustedRootCertificate -Name "whitelistcert1" -CertificateFile $trustedRootCertCerPath
    
  8. Konfigurasikan pengaturan back-end HTTP untuk gateway aplikasi, termasuk batas waktu habis untuk permintaan back-end setelah dibatalkan. Nilai ini berbeda dengan waktu habis probe.

    $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. Konfigurasikan kumpulan alamat IP back-end untuk setiap titik akhir API Management dengan menggunakan setiap nama domain.

    $apimGatewayBackendPool = New-AzApplicationGatewayBackendAddressPool -Name "gatewaybackend" `
      -BackendFqdns $gatewayHostname
    $apimPortalBackendPool = New-AzApplicationGatewayBackendAddressPool -Name "portalbackend" `
      -BackendFqdns $portalHostname
    $apimManagementBackendPool = New-AzApplicationGatewayBackendAddressPool -Name "managementbackend" `
      -BackendFqdns $managementHostname
    
  10. Membuat aturan untuk gateway aplikasi untuk menggunakan perutean dasar.

    $gatewayRule = New-AzApplicationGatewayRequestRoutingRule -Name "gatewayrule" `
      -RuleType Basic -HttpListener $gatewayListener -BackendAddressPool $apimGatewayBackendPool `
      -BackendHttpSettings $apimPoolGatewaySetting
    $portalRule = New-AzApplicationGatewayRequestRoutingRule -Name "portalrule" `
      -RuleType Basic -HttpListener $portalListener -BackendAddressPool $apimPortalBackendPool `
      -BackendHttpSettings $apimPoolPortalSetting
    $managementRule = New-AzApplicationGatewayRequestRoutingRule -Name "managementrule" `
      -RuleType Basic -HttpListener $managementListener -BackendAddressPool $apimManagementBackendPool `
      -BackendHttpSettings $apimPoolManagementSetting
    

    Tip

    Ubah -RuleType dan perutean untuk membatasi akses ke halaman portal pengembang tertentu.

  11. Mengonfigurasi jumlah instans dan ukuran untuk gateway aplikasi. Pada contoh berikut, kita menggunakan SKU WAF_v2 untuk tingkat keamanan yang lebih tinggi pada sumber daya API Management.

    Gunakan minimal dua instans (Kapasitas) untuk beban kerja produksi. Anda mungkin hanya ingin menggunakan satu instans untuk skenario nonproduksi atau untuk eksperimen umum. Untuk informasi lebih lanjut, lihat Harga Azure Application Gateway.

    $sku = New-AzApplicationGatewaySku -Name "WAF_v2" -Tier "WAF_v2" -Capacity 2
    
  12. Mengonfigurasi WAF agar berada dalam mode "Pencegahan".

    $config = New-AzApplicationGatewayWebApplicationFirewallConfiguration -Enabled $true -FirewallMode "Prevention"
    
  13. Karena dafault-nya saat ini adalah TLS 1.0, atur gateway aplikasi agar menggunakan salah satu dari kebijakan TLS 1.2 terbaru.

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

Membuat gateway aplikasi

Cara membuat sumber daya Application Gateway:

  1. Buat gateway aplikasi dengan semua objek konfigurasi dari langkah-langkah sebelumnya.

    $appgwName = "apim-app-gw"
    $appgw = New-AzApplicationGateway -Name $appgwName -ResourceGroupName $resGroupName -Location $location `
      -BackendAddressPools $apimGatewayBackendPool,$apimPortalBackendPool,$apimManagementBackendPool `
      -BackendHttpSettingsCollection $apimPoolGatewaySetting, $apimPoolPortalSetting, $apimPoolManagementSetting `
      -FrontendIpConfigurations $fipconfig01 -GatewayIpConfigurations $gipconfig -FrontendPorts $fp01 `
      -HttpListeners $gatewayListener,$portalListener,$managementListener `
      -RequestRoutingRules $gatewayRule,$portalRule,$managementRule `
      -Sku $sku -WebApplicationFirewallConfig $config -SslCertificates $certGateway,$certPortal,$certManagement `
      -TrustedRootCertificate $trustedRootCert -Probes $apimGatewayProbe,$apimPortalProbe,$apimManagementProbe `
      -SslPolicy $policy
    
  2. Setelah penyebaran gateway aplikasi selesai, pastikan status kesehatan backend API Management pada portal atau dengan menjalankan perintah berikut:

    Get-AzApplicationGatewayBackendHealth -Name $appgwName -ResourceGroupName $resGroupName
    

Pastikan bahwa status kesehatan setiap kumpulan backend memang Sehat. Jika Anda perlu memecahkan masalah terkait backend yang tidak sehat atau backend dengan status kesehatan yang tidak diketahui, lihat Memecahkan masalah terkait kesehatan backend pada Application Gateway.

Membuat data CNAME dari nama DNS publik

Setelah gateway dibuat, konfigurasikan front end untuk komunikasi. Saat menggunakan alamat IP publik, Application Gateway memerlukan nama DNS yang ditetapkan secara dinamis, yang mungkin tidak mudah akan digunakan.

Gunakan nama DNS gateway aplikasi untuk membuat data CNAME yang mengarahkan nama host gateway API Management (api.contoso.net pada contoh sebelumnya) ke nama DNS ini. Untuk mengonfigurasi data CNAME IP front end, ambil detail gateway aplikasi beserta nama IP/DNS terkait dengan menggunakan elemen PublicIPAddress. Jangan menggunakan catatan-A karena VIP dapat berubah saat gateway dihidupkan ulang.

Get-AzPublicIpAddress -ResourceGroupName $resGroupName -Name "publicIP01"

Untuk tujuan pengujian, Anda dapat memperbarui file host pada komputer lokal dengan entri yang memetakan alamat IP publik gateway aplikasi ke masing-masing nama host titik akhir API Management yang telah Anda konfigurasikan. Contohnya adalah api.contoso.net, portal.contoso.net, dan management.contoso.net.

Ringkasan

API Management yang dikonfigurasikan dalam jaringan virtual memberikan satu antarmuka gateway untuk semua API yang dikonfigurasikan, baik yang dihosting secara lokal maupun di cloud. Integrasi Application Gateway dengan API Management memberi Anda fleksibilitas yang secara selektif mengaktifkan agar API tertentu dapat diakses di internet. Integrasi juga menyediakan WAF sebagai front end instans API Management Anda.

Langkah berikutnya