内部 VNET 内の API Management と Application Gateway の統合Integrate API Management in an internal VNET with Application Gateway

概要 Overview

API Management サービスは、内部モードで仮想ネットワーク内に構成できます。これにより、API Management サービスを仮想ネットワーク内からのみアクセスできるようにします。The API Management service can be configured in a Virtual Network in internal mode, which makes it accessible only from within the Virtual Network. Azure Application Gateway は、レイヤー 7 のロード バランサーを提供する PAAS サービスです。Azure Application Gateway is a PAAS Service, which provides a Layer-7 load balancer. リバースプロキシ サービスとしての役目を果たすものであり、その機能の 1 つとして Web アプリケーション ファイアウォール (WAF) を備えています。It acts as a reverse-proxy service and provides among its offering a Web Application Firewall (WAF).

内部 VNET にプロビジョニング済みの API Management と Application Gateway フロントエンドを組み合わせることにより、次のシナリオが実現されます。Combining API Management provisioned in an internal VNET with the Application Gateway frontend enables the following scenarios:

  • 内部コンシューマーと外部コンシューマーの両方における消費用に同一の API Management リソースを使用する。Use the same API Management resource for consumption by both internal consumers and external consumers.
  • 単一の API Management リソースを使用しながら、API Management 内で定義した API の一部を外部コンシューマーが利用できるようにする。Use a single API Management resource and have a subset of APIs defined in API Management available for external consumers.
  • ターンキーを使用して、パブリック インターネットから API Management へのアクセスのオン/オフを切り替える。Provide a turn-key way to switch access to API Management from the public Internet on and off.

可用性Availability

重要

この機能は、API Management の Premium レベルと Developer レベルで使用できます。This feature is available in the Premium and Developer tiers of API Management.

前提条件Prerequisites

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

この記事で説明されている手順に従うには、以下が必要です。To follow the steps described in this article, you must have:

  • 有効な Azure サブスクリプションAn active Azure subscription.

    Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have an Azure subscription, create a free account before you begin.

  • 証明書 - API ホスト名の場合は pfx および cer、開発者ポータルのホスト名の場合は pfx です。Certificates - pfx and cer for the API hostname and pfx for the developer portal's hostname.

シナリオ Scenario

この記事では、内部コンシューマーと外部コンシューマーの両方で単一の API Management サービスを使用し、オンプレミスとクラウド双方の API シリーズの単一フロントエンドとして機能させる方法について説明します。This article covers how to use a single API Management service for both internal and external consumers and make it act as a single frontend for both on premises and cloud APIs. さらに、Application Gateway のルーティング機能を使用して、これらの API のうち外部消費用に公開するものを一部のみ (例の中で緑色で記載しています) に制限する方法について説明します。You will also see how to expose only a subset of your APIs (in the example they are highlighted in green) for External Consumption using routing functionality available in Application Gateway.

最初のセットアップ例では、すべての API の管理が仮想ネットワーク内から行われます。In the first setup example all your APIs are managed only from within your Virtual Network. 内部コンシューマー (オレンジ色で記載しています) は、内部 API と外部 API のすべてにアクセスできます。Internal consumers (highlighted in orange) can access all your internal and external APIs. トラフィックがインターネットに送信されることはありません。Traffic never goes out to the internet. ハイ パフォーマンス接続は、Express Route 回線によって提供されます。High performance connectivity is delivered via Express Route circuits.

url ルート

開始する前に Before you begin

  • Azure PowerShell の最新バージョンを使用していることを確認します。Make sure that you are using the latest version of Azure PowerShell. Azure PowerShell のインストールに関するページのインストール手順を参照してください。See the installation instructions at Install Azure PowerShell.

API Management と Application Gateway の統合作成に必要なものWhat is required to create an integration between API Management and Application Gateway?

  • バックエンド サーバー プール: これは、API Management サービスの内部仮想 IP アドレスです。Back-end server pool: This is the internal virtual IP address of the API Management service.
  • バックエンド サーバー プール設定: すべてのプールには、ポート、プロトコル、cookie ベースのアフィニティなどの設定があります。Back-end server pool settings: Every pool has settings like port, protocol, and cookie-based affinity. これらの設定は、プール内のすべてのサーバーに適用されます。These settings are applied to all servers within the pool.
  • フロントエンド ポート: これは、Application Gateway でオープンしているパブリック ポートです。Front-end port: This is the public port that is opened on the application gateway. このポートにヒットしたトラフィックは、バックエンド サーバーのいずれかにリダイレクトされます。Traffic hitting it gets redirected to one of the back-end servers.
  • リスナー: リスナーには、フロントエンド ポート、プロトコル (Http または Https で、値には大文字小文字の区別あり)、TLS/SSL 証明書名 (TLS オフロードを構成する場合) があります。Listener: The listener has a front-end port, a protocol (Http or Https, these values are case-sensitive), and the TLS/SSL certificate name (if configuring TLS offload).
  • ルール: このルールは、リスナーをバックエンド サーバー プールにバインドします。Rule: The rule binds a listener to a back-end server pool.
  • カスタムの正常性プローブ: 既定では、Application Gateway は、IP アドレス ベースのプローブを使用して、BackendAddressPool 内でアクティブなサーバーを見つけます。Custom Health Probe: Application Gateway, by default, uses IP address based probes to figure out which servers in the BackendAddressPool are active. API Management サービスは適切なホスト ヘッダーを持つ要求だけに応答するため、既定のプローブでは失敗します。The API Management service only responds to requests with the correct host header, hence the default probes fail. サービスが有効であり要求を転送する必要があることを Application Gateway が判定できるようにするには、カスタムの正常性プローブを定義する必要があります。A custom health probe needs to be defined to help application gateway determine that the service is alive and it should forward requests.
  • カスタム ドメイン証明書: インターネットから API Management にアクセスするには、ホスト名と Application Gateway のフロントエンド DNS 名との間の CNAME マッピングを作成する必要があります。Custom domain certificates: To access API Management from the internet, you need to create a CNAME mapping of its hostname to the Application Gateway front-end DNS name. これにより、API Management に転送される、Application Gateway に送信されたホスト名のヘッダーと証明書を、APIM が有効であると識別できるようになります。This ensures that the hostname header and certificate sent to Application Gateway that is forwarded to API Management is one APIM can recognize as valid. この例では、2 つの証明書 (バックエンド用と開発者ポータル用) を使用します。In this example, we will use two certificates - for the backend and for the developer portal.

API Management と Application Gateway を統合するために必要な手順 Steps required for integrating API Management and Application Gateway

  1. リソース マネージャーのリソース グループを作成します。Create a resource group for Resource Manager.
  2. Application Gateway の仮想ネットワーク、サブネット、およびパブリック IP を作成します。Create a Virtual Network, subnet, and public IP for the Application Gateway. API Management 用のサブネットを別途作成します。Create another subnet for API Management.
  3. 上記で作成した VNET サブネットの内部に API Management サービスを作成し、内部モードになっていることを確認します。Create an API Management service inside the VNET subnet created above and ensure you use the Internal mode.
  4. API Management サービスのカスタム ドメイン名を設定します。Set up a custom domain name in the API Management service.
  5. Application Gateway 構成オブジェクトを作成します。Create an Application Gateway configuration object.
  6. Application Gateway のリソースを作成します。Create an Application Gateway resource.
  7. Application Gateway のパブリック DNS 名から API Management プロキシのホスト名への CNAME を作成します。Create a CNAME from the public DNS name of the Application Gateway to the API Management proxy hostname.

Application Gateway を使用して外部から開発者ポータルを公開するExposing the developer portal externally through Application Gateway

このガイドでは、Application Gateway を使用して開発者ポータルを外部の対象ユーザーにも公開します。In this guide we will also expose the developer portal to external audiences through the Application Gateway. 開発者ポータルのリスナー、プローブ、設定、およびルールを作成するには、追加の手順が必要です。It requires additional steps to create developer portal's listener, probe, settings and rules. 詳細はすべて、それぞれの手順で示されます。All details are provided in respective steps.

警告

Azure AD またはサード パーティの認証を使用している場合は、Application Gateway で cookie ベースのセッション アフィニティ機能を有効にしてください。If you use Azure AD or third party authentication, please enable cookie-based session affinity feature in Application Gateway.

警告

Application Gateway WAF が開発者ポータルで OpenAPI 仕様のダウンロードを中断しないようにするには、ファイアウォール規則 942200 - "Detects MySQL comment-/space-obfuscated injections and backtick termination" を無効にする必要があります。To prevent Application Gateway WAF from breaking the download of OpenAPI specification in the developer portal, you need to disable the firewall rule 942200 - "Detects MySQL comment-/space-obfuscated injections and backtick termination".

以下の Application Gateway WAF ルールは、ポータルの機能を破損する可能性があります。Application Gateway WAF rules, which may break portal's functionality include:

  • 管理モード用: 920300920330931130942100942110942180942200942260942340、および 942370920300, 920330, 931130, 942100, 942110, 942180, 942200, 942260, 942340, 942370 for the administrative mode
  • 発行されたポータル用: 942200942260942370942430、および 942440942200, 942260, 942370, 942430, 942440 for the published portal

リソース マネージャーのリソース グループの作成Create a resource group for Resource Manager

手順 1Step 1

Azure にログインするLog in to Azure

Connect-AzAccount

資格情報を使用して認証を行います。Authenticate with your credentials.

手順 2.Step 2

目的のサブスクリプションを選択します。Select the desired subscription.

$subscriptionId = "00000000-0000-0000-0000-000000000000" # GUID of your Azure subscription
Get-AzSubscription -Subscriptionid $subscriptionId | Select-AzSubscription

手順 3.Step 3

リソース グループを作成します (既存のリソース グループを使用する場合は、この手順をスキップしてください)。Create a resource group (skip this step if you're using an existing resource group).

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

Azure リソース マネージャーでは、すべてのリソース グループの場所を指定する必要があります。Azure Resource Manager requires that all resource groups specify a location. 指定した場所は、そのリソース グループ内のリソースの既定の場所として使用されます。This is used as the default location for resources in that resource group. アプリケーション ゲートウェイを作成するためのすべてのコマンドで、同じリソース グループが使用されていることを確認します。Make sure that all commands to create an application gateway use the same resource group.

Application Gateway の仮想ネットワークとサブネットを作成するCreate a Virtual Network and a subnet for the application gateway

次の例では、リソース マネージャーを使用して仮想ネットワークを作成する方法を示します。The following example shows how to create a Virtual Network using Resource Manager.

手順 1Step 1

仮想ネットワークの作成時に Application Gateway 用に使用するサブネット変数に、アドレス範囲 10.0.0.0/24 を割り当てます。Assign the address range 10.0.0.0/24 to the subnet variable to be used for Application Gateway while creating a Virtual Network.

$appgatewaysubnet = New-AzVirtualNetworkSubnetConfig -Name "apim01" -AddressPrefix "10.0.0.0/24"

手順 2.Step 2

仮想ネットワークの作成時に API Management 用に使用するサブネット変数に、アドレス範囲 10.0.1.0/24 を割り当てます。Assign the address range 10.0.1.0/24 to the subnet variable to be used for API Management while creating a Virtual Network.

$apimsubnet = New-AzVirtualNetworkSubnetConfig -Name "apim02" -AddressPrefix "10.0.1.0/24"

手順 3.Step 3

米国西部リージョンのリソース グループ apim-appGw-RGappgwvnet という名前の仮想ネットワークを作成します。Create a Virtual Network named appgwvnet in resource group apim-appGw-RG for the West US region. サブネット 10.0.0.0/24 および 10.0.1.0/24 と共に、プレフィックス 10.0.0.0/16 を使用します。Use the prefix 10.0.0.0/16 with subnets 10.0.0.0/24 and 10.0.1.0/24.

$vnet = New-AzVirtualNetwork -Name "appgwvnet" -ResourceGroupName $resGroupName -Location $location -AddressPrefix "10.0.0.0/16" -Subnet $appgatewaysubnet,$apimsubnet

手順 4.Step 4

次の手順のためにサブネット変数を割り当てます。Assign a subnet variable for the next steps

$appgatewaysubnetdata = $vnet.Subnets[0]
$apimsubnetdata = $vnet.Subnets[1]

内部モードで構成された VNET 内に API Management サービスを作成するCreate an API Management service inside a VNET configured in internal mode

次の例は、内部アクセス専用に構成された VNET に API Management サービスを作成する方法を示しています。The following example shows how to create an API Management service in a VNET configured for internal access only.

手順 1Step 1

上記の手順で作成したサブネット $apimsubnetdata を使用して、API Management の仮想ネットワーク オブジェクトを作成します。Create an API Management Virtual Network object using the subnet $apimsubnetdata created above.

$apimVirtualNetwork = New-AzApiManagementVirtualNetwork -SubnetResourceId $apimsubnetdata.Id

手順 2.Step 2

仮想ネットワーク内に API Management サービスを作成します。Create an API Management service inside the Virtual Network.

$apimServiceName = "ContosoApi"       # API Management service instance name
$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"

上記のコマンドが成功したら、内部 VNET の API Management サービスへのアクセスに必要な DNS 構成に関するセクションを参照してアクセスします。After the above command succeeds refer to DNS Configuration required to access internal VNET API Management service to access it. この手順には、30 分以上かかる場合があります。This step may take more than half an hour.

API Management でカスタム ドメイン名をセットアップするSet-up a custom domain name in API Management

重要

新しい開発者ポータルでは、次の手順に加えて、API Management の管理エンドポイントへの接続も有効にする必要があります。The new developer portal also requires enabling connectivity to the API Management's management endpoint in addition to the steps below.

手順 1Step 1

ドメインの秘密キーを含む証明書の詳細で以下の変数を初期化します。Initialize the following variables with the details of the certificates with private keys for the domains. この例では、api.contoso.netportal.contoso.net を使用します。In this example, we will use api.contoso.net and portal.contoso.net.

$gatewayHostname = "api.contoso.net"                 # API gateway host
$portalHostname = "portal.contoso.net"               # API developer portal host
$gatewayCertCerPath = "C:\Users\Contoso\gateway.cer" # full path to api.contoso.net .cer file
$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
$gatewayCertPfxPassword = "certificatePassword123"   # password for api.contoso.net pfx certificate
$portalCertPfxPassword = "certificatePassword123"    # password for portal.contoso.net pfx certificate

$certPwd = ConvertTo-SecureString -String $gatewayCertPfxPassword -AsPlainText -Force
$certPortalPwd = ConvertTo-SecureString -String $portalCertPfxPassword -AsPlainText -Force

手順 2.Step 2

プロキシとポータルに対して、ホスト名構成オブジェクトを作成し、設定します。Create and set the hostname configuration objects for the proxy and for the portal.

$proxyHostnameConfig = New-AzApiManagementCustomHostnameConfiguration -Hostname $gatewayHostname -HostnameType Proxy -PfxPath $gatewayCertPfxPath -PfxPassword $certPwd
$portalHostnameConfig = New-AzApiManagementCustomHostnameConfiguration -Hostname $portalHostname -HostnameType DeveloperPortal -PfxPath $portalCertPfxPath -PfxPassword $certPortalPwd

$apimService.ProxyCustomHostnameConfiguration = $proxyHostnameConfig
$apimService.PortalCustomHostnameConfiguration = $portalHostnameConfig
Set-AzApiManagement -InputObject $apimService

注意

従来の開発者ポータルの接続を構成するには、-HostnameType DeveloperPortal-HostnameType Portal に置き換える必要があります。To configure the legacy developer portal connectivity you need to replace -HostnameType DeveloperPortal with -HostnameType Portal.

フロントエンド構成のパブリック IP アドレスの作成Create a public IP address for the front-end configuration

リソース グループにパブリック IP リソースの publicIP01 を作成します。Create a public IP resource publicIP01 in the resource group.

$publicip = New-AzPublicIpAddress -ResourceGroupName $resGroupName -name "publicIP01" -location $location -AllocationMethod Dynamic

サービスが開始すると、Application Gateway に IP アドレスが割り当てられます。An IP address is assigned to the application gateway when the service starts.

Application Gateway 構成の作成Create application gateway configuration

Application Gateway を作成するには、すべての構成項目を設定する必要があります。All configuration items must be set up before creating the application gateway. 次の手順では、Application Gateway のリソースに必要な構成項目を作成します。The following steps create the configuration items that are needed for an application gateway resource.

手順 1Step 1

gatewayIP01 という名前のアプリケーション ゲートウェイの IP 構成を作成します。Create an application gateway IP configuration named gatewayIP01. アプリケーション ゲートウェイが起動すると、構成されているサブネットから IP アドレスが取得されて、ネットワーク トラフィックがバックエンド IP プール内の IP アドレスにルーティングされます。When Application Gateway starts, it picks up an IP address from the subnet configured and route network traffic to the IP addresses in the back-end IP pool. 各インスタンスが IP アドレスを 1 つ取得することに注意してください。Keep in mind that each instance takes one IP address.

$gipconfig = New-AzApplicationGatewayIPConfiguration -Name "gatewayIP01" -Subnet $appgatewaysubnetdata

手順 2.Step 2

パブリック IP エンドポイントのフロントエンド IP ポートを構成します。Configure the front-end IP port for the public IP endpoint. このポートは、エンドユーザーが接続するポートです。This port is the port that end users connect to.

$fp01 = New-AzApplicationGatewayFrontendPort -Name "port01"  -Port 443

手順 3.Step 3

パブリック IP エンドポイントでフロント エンド IP を構成します。Configure the front-end IP with public IP endpoint.

$fipconfig01 = New-AzApplicationGatewayFrontendIPConfig -Name "frontend1" -PublicIPAddress $publicip

手順 4.Step 4

通過するトラフィックの暗号化解除と再暗号化に使用される、Application Gateway 用に証明書を構成します。Configure the certificates for the Application Gateway, which will be used to decrypt and re-encrypt the traffic passing through.

$cert = New-AzApplicationGatewaySslCertificate -Name "cert01" -CertificateFile $gatewayCertPfxPath -Password $certPwd
$certPortal = New-AzApplicationGatewaySslCertificate -Name "cert02" -CertificateFile $portalCertPfxPath -Password $certPortalPwd

手順 5.Step 5

Application Gateway 用の HTTP リスナーを作成します。Create the HTTP listeners for the Application Gateway. フロントエンド IP 構成、ポート、および TLS/SSL 証明書をリスナーに割り当てます。Assign the front-end IP configuration, port, and TLS/SSL certificates to them.

$listener = New-AzApplicationGatewayHttpListener -Name "listener01" -Protocol "Https" -FrontendIPConfiguration $fipconfig01 -FrontendPort $fp01 -SslCertificate $cert -HostName $gatewayHostname -RequireServerNameIndication true
$portalListener = New-AzApplicationGatewayHttpListener -Name "listener02" -Protocol "Https" -FrontendIPConfiguration $fipconfig01 -FrontendPort $fp01 -SslCertificate $certPortal -HostName $portalHostname -RequireServerNameIndication true

手順 6.Step 6

API Management サービスの ContosoApi プロキシのドメイン エンドポイントに対するカスタム プローブを作成します。Create custom probes to the API Management service ContosoApi proxy domain endpoint. パス /status-0123456789abcdef は、すべての API Management サービスでホストされている既定の正常性エンドポイントです。The path /status-0123456789abcdef is a default health endpoint hosted on all the API Management services. api.contoso.net をカスタム プローブのホスト名として設定し、TLS/SSL 証明書でセキュリティ保護します。Set api.contoso.net as a custom probe hostname to secure it with the TLS/SSL certificate.

注意

ホスト名 contosoapi.azure-api.net は、contosoapi という名前のサービスがパブリック Azure に作成されたときに構成された既定のプロキシ ホスト名です。The hostname contosoapi.azure-api.net is the default proxy hostname configured when a service named contosoapi is created in public Azure.

$apimprobe = New-AzApplicationGatewayProbeConfig -Name "apimproxyprobe" -Protocol "Https" -HostName $gatewayHostname -Path "/status-0123456789abcdef" -Interval 30 -Timeout 120 -UnhealthyThreshold 8
$apimPortalProbe = New-AzApplicationGatewayProbeConfig -Name "apimportalprobe" -Protocol "Https" -HostName $portalHostname -Path "/internal-status-0123456789abcdef" -Interval 60 -Timeout 300 -UnhealthyThreshold 8

手順 7.Step 7

TLS 対応バックエンド プール リソースで使用する証明書をアップロードします。Upload the certificate to be used on the TLS-enabled backend pool resources. これは、前の手順 4 で指定したものと同じ証明書です。This is the same certificate which you provided in Step 4 above.

$authcert = New-AzApplicationGatewayAuthenticationCertificate -Name "whitelistcert1" -CertificateFile $gatewayCertCerPath

手順 8.Step 8

Application Gateway の HTTP バックエンド設定を構成します。Configure HTTP backend settings for the Application Gateway. これには、バックエンド要求が取り消されるまでのタイムアウト制限の設定が含まれます。This includes setting a time-out limit for backend request, after which they're canceled. この値はプローブのタイムアウトとは異なります。This value is different from the probe time-out.

$apimPoolSetting = New-AzApplicationGatewayBackendHttpSettings -Name "apimPoolSetting" -Port 443 -Protocol "Https" -CookieBasedAffinity "Disabled" -Probe $apimprobe -AuthenticationCertificates $authcert -RequestTimeout 180
$apimPoolPortalSetting = New-AzApplicationGatewayBackendHttpSettings -Name "apimPoolPortalSetting" -Port 443 -Protocol "Https" -CookieBasedAffinity "Disabled" -Probe $apimPortalProbe -AuthenticationCertificates $authcert -RequestTimeout 180

手順 9.Step 9

apimbackend という名前のバックエンド IP アドレス プールを、上記で作成した API Management サービスの内部仮想 IP アドレスを指定して構成します。Configure a back-end IP address pool named apimbackend with the internal virtual IP address of the API Management service created above.

$apimProxyBackendPool = New-AzApplicationGatewayBackendAddressPool -Name "apimbackend" -BackendIPAddresses $apimService.PrivateIPAddresses[0]

手順 10.Step 10

基本のルーティングを使用するように、Application Gateway 用のルールを作成します。Create rules for the Application Gateway to use basic routing.

$rule01 = New-AzApplicationGatewayRequestRoutingRule -Name "rule1" -RuleType Basic -HttpListener $listener -BackendAddressPool $apimProxyBackendPool -BackendHttpSettings $apimPoolSetting
$rule02 = New-AzApplicationGatewayRequestRoutingRule -Name "rule2" -RuleType Basic -HttpListener $portalListener -BackendAddressPool $apimProxyBackendPool -BackendHttpSettings $apimPoolPortalSetting

ヒント

開発者ポータルの特定のページへのアクセスを制限するには、-RuleType とルーティングを変更します。Change the -RuleType and routing, to restrict access to certain pages of the developer portal.

手順 11.Step 11

Application Gateway のインスタンス数とサイズを構成します。Configure the number of instances and size for the Application Gateway. この例では、API Management リソースのセキュリティを強化するために、WAF SKU を使用しています。In this example, we are using the WAF SKU for increased security of the API Management resource.

$sku = New-AzApplicationGatewaySku -Name "WAF_Medium" -Tier "WAF" -Capacity 2

手順 12.Step 12

WAF を "Prevention" モードに構成します。Configure WAF to be in "Prevention" mode.

$config = New-AzApplicationGatewayWebApplicationFirewallConfiguration -Enabled $true -FirewallMode "Prevention"

Application Gateway の作成Create Application Gateway

前述の手順の構成オブジェクトをすべて使用して、Application Gateway を作成します。Create an Application Gateway with all the configuration objects from the preceding steps.

$appgwName = "apim-app-gw"
$appgw = New-AzApplicationGateway -Name $appgwName -ResourceGroupName $resGroupName -Location $location -BackendAddressPools $apimProxyBackendPool -BackendHttpSettingsCollection $apimPoolSetting, $apimPoolPortalSetting  -FrontendIpConfigurations $fipconfig01 -GatewayIpConfigurations $gipconfig -FrontendPorts $fp01 -HttpListeners $listener, $portalListener -RequestRoutingRules $rule01, $rule02 -Sku $sku -WebApplicationFirewallConfig $config -SslCertificates $cert, $certPortal -AuthenticationCertificates $authcert -Probes $apimprobe, $apimPortalProbe

API Management プロキシのホスト名から Application Gateway リソースのパブリック DNS 名への CNAME を作成するCNAME the API Management proxy hostname to the public DNS name of the Application Gateway resource

ゲートウェイを作成したら、次は通信用にフロントエンドを構成します。Once the gateway is created, the next step is to configure the front end for communication. パブリック IP を使用する場合、Application Gateway は動的に割り当てられる DNS 名を必要としますが、これを使用するのは必ずしも簡単ではありません。When using a public IP, Application Gateway requires a dynamically assigned DNS name, which may not be easy to use.

Application Gateway の DNS 名を使用して、この DNS 名に対して構成した APIM プロキシ ホスト名 (上の例の api.contoso.net) を指す CNAME レコードを作成する必要があります。The Application Gateway's DNS name should be used to create a CNAME record which points the APIM proxy host name (e.g. api.contoso.net in the examples above) to this DNS name. フロントエンド IP CNAME レコードを構成するには、PublicIPAddress 要素を使用して、Application Gateway の詳細とそれに関連付けられている IP/DNS 名を取得します。To configure the frontend IP CNAME record, retrieve the details of the Application Gateway and its associated IP/DNS name using the PublicIPAddress element. ゲートウェイの再起動時に VIP が変更される可能性があるため、A レコードの使用はお勧めしません。The use of A-records is not recommended since the VIP may change on restart of gateway.

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

まとめ Summary

VNET で構成された Azure API Management は、ホスト先がオンプレミスかクラウドかにかかわらず、すべての構成済みの API に単一のゲートウェイ インターフェイスを提供します。Azure API Management configured in a VNET provides a single gateway interface for all configured APIs, whether they are hosted on premises or in the cloud. Application Gateway を API Management と統合すると、インターネット上で特定の API に選択的にアクセスできる柔軟性が提供されるほか、API Management インスタンスのフロントエンドとして Web アプリケーション ファイアウォールを利用できるようになります。Integrating Application Gateway with API Management provides the flexibility of selectively enabling particular APIs to be accessible on the Internet, as well as providing a Web Application Firewall as a frontend to your API Management instance.

次のステップ Next steps