Front DoorからAPI Management、Blob Storageへのアクセスをセキュアにしたい

このエントリは2021/10/07現在の情報に基づいています。将来の機能追加や変更に伴い、記載内容との乖離が発生する可能性があります(Front Door Standard/Premium SKUは2021/10/07現在Public Previewです)。

前回、以下のようなエントリを書いた。

前回はApplication Gatewayを使っていたが、今度はFront Doorでやってみる。とはいえ、現在GAしているFront Doorでは(Microsoft Network内を通るとしても)Public accessのみになってしまうため、どうしてもIP Addressフィルタリングなどを使う必要があるため、ふつうに構成すれば以下のエントリに記載の通りになってしまう。

Integrate Azure Front Door with Azure API Management
https://techcommunity.microsoft.com/t5/azure-paas-blog/integrate-azure-front-door-with-azure-api-management/ba-p/2654925

そこで、今回はPremium SKUで利用可能な、Private Linkを使ってよりセキュアな接続が可能か確認してみる。

Front Door Premium SKU

2021/10/07現在Public Previewであり、GA版のFront DoorとはPortal上の設定が少々異なっている。以下はStorage (Blob) だけを構成した例。

OriginとしてStorage accountを使っているが、この中でOriginとの通信にPrivate Linkを設定できる部分がある通り、Private Linkでの接続が可能になっている。

では、API Managementとの接続はどうだろうか。2021/10/07現在、API ManagementへのPrivate LinkはFront Door如何を問わず作成できない。そのため、以下の方策が考えられる。

  1. Application Gatewayを組み合わせる
  2. Internal Load Balancerを組み合わせる

以下では現時点における可能性をまとめる。

1. Front DoorとApplication Gatewayの両方を使う

これは、Front Doorの背後にApplication Gatewayを配置し、さらにその背後にAPI Managementを配置しよう、というもの。Application GatewayはVNetに配置するため、特定のFront Doorからのアクセスだけを許可するには、以下のような方法が考えられる。

a) Public Accessで構成する場合

これはGA版のFront Doorを使う場合と同じ。

  • サービスタグAzureFrontDoor.Backendを使ってNSGの受信規則を構成
  • Application GatewayでHTTP HeaderのX-Azure-FDIDの存在ならびに値のチェックを実施

このあたりは以下のFAQにも記載がある。

バックエンドへのアクセスを Azure Front Door のみにロックダウンするにはどうしたらよいですか? / How do I lock down the access to my backend to only Azure Front Door?
https://docs.microsoft.com/azure/frontdoor/standard-premium/faq#how-do-i-lock-down-the-access-to-my-backend-to-only-azure-front-door

b) Internal Accessで構成する場合

Front Door Premium SKUでは、Application GatewayへのPrivate Linkを構成することも可能のように見えるが、現時点ではまだメニューにあるだけで利用できない。これが利用できれば、Public Access用に構成した場合に必要な設定はすべて不要になるのだが、今しばらく待つしかない。

2. Internal Load Balancerを使う

Private Link Serviceを構成できるよう、VNetにStandard SKUのInternal Load Balancerを作成し、その背後にAPI Managementを配置する、というアイデア。

プライベート リンクを使用して Azure Front Door Premium を配信元に接続する / Connect Azure Front Door Premium to an internal load balancer origin with Private Link
https://docs.microsoft.com/azure/frontdoor/standard-premium/how-to-enable-private-link-internal-load-balancer

2021/10/07時点では、ちょいと面倒なことになっている。というのも、Internal Load BalancerのBackend poolに要素を配置する場合、IPアドレスもしくはNICで指定できるが、

  • API Managementを配置する場合、IPアドレスで指定するしかない
  • Private Link Serviceは、Backend poolに追加されるbackendはNICで指定されたものだけをサポートする(IPアドレスで指定されたbackendが入っているとサポートされず、作成時にエラーが発生する)

という制限があるため。下図において、黄色でマークした部分を選択していなければならない。

実際にBackend PoolにIPアドレスで追加していれば、Private Link Serviceを構成すると、以下のようなエラーが発生する。

{
    "status": "Failed",
    "error": {
        "code": "PrivateLinkServiceIsNotSupportedForIPBasedLoadBalancer",
        "message": "Private link service is not supported for load balancer /subscriptions/{subscription_id}/resourceGroups/{resource_group}/providers/Microsoft.Network/privateLinkServices/{resource_name} with backend addresses set by (virtualNetwork, ipAddress) or (subnet, ipAddress).",
        "details": []
    }
}

そのため、Internal Load Balancerを使うのであれば、

  • Managed Gatewayを使うなら、VMを立ててIP forwarderを構成する
  • Self-hosted Gatewayを使うなら、VMを立ててSelf-hosted Gatewayをデプロイする

の2方式しかない。ただいずれもVMの管理が必要なので、手離れがいまいちである点は否定できない。

まとめ

ということで、現時点ではまだFront Door Premium SKUでPrivate Linkを使い、API Managementと連携するのは難しい。ということで、GAを待ちましょう。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中