Virtual Network Service Endpointsを理解するための前提
Service Endpointはsubnet identityをAzure PaaSへ拡張し、trafficをAzure backbone経由でserviceのpublic endpointへ送る。 DNSは通常public FQDN→public IPのままで、Private EndpointのようにVNet内private IPを作らない。
service側network ACLで許可subnetを指定して初めてaccess restrictionが成立する。 on-premからservice endpoint identityをそのまま使う設計には向かず、hybrid private accessはPrivate Linkを優先検討する。
Service Endpoint Policyは主にAzure Storage向けegressを特定resourceへ絞る用途でdata exfiltration抑制に使える。 Microsoftはprivate PaaS accessではPrivate Link/Private Endpointを推奨する。
Control plane と data plane
仕組みと設計上の意味
service endpointはpublic endpointを消さないため「private IPで接続する」機能ではない。
DNS変更が少なく導入は比較的簡単だが、on-prem private reachabilityやservice instance単位private IPが必要ならPrivate Endpointが適する。
subnet側enableだけでsecurityは完結せず、service側ACLを必ず確認する。
UDR/forced tunnelingとservice endpoint routeが競合する場合はeffective routeで実data pathを確認する。
Packet / decision path
source→destinationを1本のflowとして固定し、名前解決・routing・security・NAT/service processing・return pathを必要な範囲で順に確認する。
- clientが属するsubnetでendpoint enableを確認。
- DNSがservice public IPを返すことを確認。
- effective routeでservice tag/prefixのnext hopを確認。
- PaaS側firewall/VNet ruleでsubnetを許可。
- application認証とnetwork accessの両方を検証。
設計判断
| 判断点 | 推奨 | 理由 |
|---|---|---|
| Private IP必須 | Private Endpoint | Service Endpointはpublic endpoint model |
| 簡易subnet制限 | Service Endpoint | DNS変更が少ない |
| on-prem private access | Private Endpoint + hybrid DNS | service endpoint identityはon-prem用途に弱い |
| Exfiltration control | Private Linkまたは対応Service Endpoint Policy | service instance単位で絞る |
確認手順
Azure Portal
- Subnet → Service endpointsでservice/regionを確認。
- 対象PaaS → Networkingでselected networks/VNet rulesを確認。
- Private Endpointが併存する場合はDNS resultと実destination IPを確認。
Evidence contract
az network vnet subnet show -g <rg> --vnet-name <vnet> -n <subnet> --query serviceEndpoints -o jsonc
az network vnet subnet show -g <rg> --vnet-name <vnet> -n <subnet> --query serviceEndpointPolicies -o jsonc$vnet = Get-AzVirtualNetwork -ResourceGroupName <rg> -Name <vnet>
$vnet.Subnets | Select Name,ServiceEndpoints,ServiceEndpointPolicies
障害切り分け
| 症状 | 疑う点 | 証拠 | 次の確認 |
|---|---|---|---|
| endpoint enable済みなのに403 | service側ACL未許可/identity mismatch | service networking config | subnet resource IDを照合 |
| Private Endpointへ行くはずがpublic | DNS zone/link不足 | nslookup + private zone link | DNS chainを修正 |
| forced tunnel後に失敗 | route優先/next hop変化 | effective routes | service endpoint routeとUDRを比較 |
| on-premから同じ制御が効かない | service endpointのVNet identity前提 | source path | Private Linkへ再設計 |
変更・rollback
- service側ACLを変更する前に既存authorized subnet一覧をexport。
- Private Endpointへ移行時はDNS切替とservice public access設定を分けて実施。
- rollbackではsubnet endpointとservice ACLの両方を元に戻す。
- storage等でpolicy導入時は必要accountをallowlistしてからenforce。