はじめに
Azure Private Endpointでは以前からNSGをプレビューとして公開していました。今回はGAしたので改めて確認していきたいと思います。
-
Manage network policies for private endpoints - Azure Private Link | Microsoft Learn
Learn how to manage network policies for private endpoints.
docs.microsoft.com
有効化には privateEndpointNetworkPolicies
をEnabled
に設定する手順が必要です。
また、様々な制限事項があるため事前に確認することをお勧めします。
-
What is a private endpoint? - Azure Private Link | Microsoft Learn
In this article, you learn how to use the Private Endpoint feature of Azure Private Link.
docs.microsoft.com
前提
Private Endpointの設定が完了していること。
今回はサンプルとしてWebAppsに適用しています。
プライベートエンドポイントには無効化されますと書いていますが、privateEndpointNetworkPolicies
設定後に反映されるようになります。
問題なく内部からアクセスできていることが分かります。
$ dig webapp1289367.azurewebsites.net ; <<>> DiG 9.16.1-Ubuntu <<>> webapp1289367.azurewebsites.net ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52816 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;webapp1289367.azurewebsites.net. IN A ;; ANSWER SECTION: webapp1289367.azurewebsites.net. 732 IN CNAME webapp1289367.privatelink.azurewebsites.net. webapp1289367.privatelink.azurewebsites.net. 10 IN A 10.2.1.4
アクセスできるかを確認
$ curl -I https://webapp1289367.azurewebsites.net HTTP/1.1 200 OK Content-Length: 3269 Content-Type: text/html Date: Mon, 22 Aug 2022 05:01:01 GMT Server: Microsoft-IIS/10.0 Accept-Ranges: bytes ETag: "4ca1444be1b5d81:0" Last-Modified: Mon, 22 Aug 2022 04:40:24 GMT Set-Cookie: ARRAffinity=4b3e9d7243043145f30ef214452b71163b8defc4e171d81090f8c904e96ebe98;Path=/;HttpOnly;Secure;Domain=webapp1289367.azurewebsites.net Set-Cookie: ARRAffinitySameSite=4b3e9d7243043145f30ef214452b71163b8defc4e171d81090f8c904e96ebe98;Path=/;HttpOnly;SameSite=None;Secure;Domain=webapp1289367.azurewebsites.net X-Powered-By: ASP.NET
privateEndpointNetworkPolicies
設定値を確認します。
az network vnet subnet show --resource-group MyResourceGroup --name MySubnet --vnet-name MyVNet
Disabledになっていることが分かります。これを
"privateEndpointNetworkPolicies": "Disabled"
設定を変更します。CLI利用 --disable-private-endpoint-network-policies false
az network vnet subnet show --resource-group MyResourceGroup --name MySubnet --vnet-name MyVNet --disable-private-endpoint-network-policies false
変更されたことを確認します。
"privateEndpointNetworkPolicies": "Enabled"
以上で設定は完了です。サブネットにNSGを適用します。
ちなみにポータルからも変更できます。サブネットを開き最下部に設定項目があります。
NSGの適用
サブネットに適用するNSGを作成します。試しにHTTPSを拒否してみます。
サブネットに適用します。
アクセスできるか確認してみます。
$ curl -m 10 -I https://webapp1289367.azurewebsites.net -vvvv * Trying 10.2.1.4:443... * TCP_NODELAY set * Connection timed out after 10001 milliseconds * Closing connection 0 curl: (28) Connection timed out after 10001 milliseconds
アクセスを許可に変更してみます。
再度、アクセスが行われるか確認してみます。
$ curl -m 10 -I https://webapp1289367.azurewebsites.net -vvvv * Trying 10.2.1.4:443... * TCP_NODELAY set * Connected to webapp1289367.azurewebsites.net (10.2.1.4) port 443 (#0)
接続できることを確認できます。
まとめ
Private EndpointでもNSGを設定することが可能になりました(GA)。これまでPrivate EndpointのNSGがプレビューだったのでかけることに躊躇していましたが、これからは問題なく適用できると思います。さらに細かなネットワークセキュリティ要件に適用することができるでしょう。