下記のアナウンスによると、「2025 年 9 月 30 日に、Azure の仮想マシンの既定の送信アクセス接続は廃止されます。」との事。まだまだ先の話ですが、実際に試す事ができるようなので、やってみました。
Azure CLI のバージョン確認
bash
az version
{
"azure-cli": "2.54.0",
"azure-cli-core": "2.54.0",
"azure-cli-telemetry": "1.1.0",
"extensions": {}
}
パブリック IP アドレスなしの VM 検証環境を作成
bash
prefix=mnrpoc
region=japaneast
az group create \
--name ${prefix}-rg \
--location $region
az vm create \
--resource-group ${prefix}-rg \
--name ${prefix}-vm \
--os-disk-name ${prefix}-vmOSDisk \
--image Ubuntu2204 \
--size Standard_B1s \
--admin-username azureuser \
--generate-ssh-keys \
--storage-sku Standard_LRS \
--nsg-rule NONE \
--public-ip-address ""
外部から VM のアウトバウンドに使用しているパブリック IP の取得を試す
bash
az vm run-command invoke \
--resource-group ${prefix}-rg \
--name ${prefix}-vm \
--command-id RunShellScript \
--scripts "curl -s inet-ip.info" \
--query "value[].message" \
--output tsv
下記のように、VM が使用しているパブリック IP が取得できました。
Enable succeeded:
[stdout]
20.210.237.177
[stderr]
サブネットの「既定の送信アクセスを無効」にしてみる
bash
az network vnet subnet update \
--resource-group ${prefix}-rg \
--name ${prefix}-vmSubnet \
--vnet-name ${prefix}-vmVNET \
--default-outbound false
(NotAllowedToModifyDefaultOutboundAccessPropertyOnSubnet) It is not allowed to modify DefaultOutboundAccess property on non-empty subnet. Current value . Provided value False.
というメッセージが表示され、空のサブネットではないと変更できない事がわかりました。
別環境に「既定の送信アクセスを無効」サブネットを作成
bash
prefix=mnrpoc2
region=japaneast
az group create \
--name ${prefix}-rg \
--location $region
az network vnet create \
--name ${prefix}-vnet \
--resource-group ${prefix}-rg \
--address-prefix 10.0.0.0/24
az network nsg create \
--resource-group ${prefix}-rg \
--name ${prefix}-nsg
az network vnet subnet create \
--vnet-name ${prefix}-vnet \
--resource-group ${prefix}-rg \
--name default-subnet \
--address-prefix 10.0.0.0/24 \
--network-security-group ${prefix}-nsg \
--default-outbound false
検証用 VM を作成し外部通信を試す
bash
az network nic create \
--name ${prefix}-nic \
--resource-group ${prefix}-rg \
--vnet-name ${prefix}-vnet \
--subnet default-subnet
az vm create \
--resource-group ${prefix}-rg \
--name ${prefix}-vm \
--os-disk-name ${prefix}-osdisk \
--image Ubuntu2204 \
--size Standard_B1s \
--admin-username azureuser \
--generate-ssh-keys \
--nics ${prefix}-nic \
--storage-sku Standard_LRS
az vm run-command invoke \
--resource-group ${prefix}-rg \
--name ${prefix}-vm \
--command-id RunShellScript \
--scripts "curl -s inet-ip.info" \
--query "value[].message" \
--output tsv
下記のように、VM が使用しているパブリック IP が取得できませんでした。
Enable succeeded:
[stdout]
[stderr]
VM を削除してから「既定の送信アクセスを無効」を有効に変更
bash
az vm delete \
--resource-group ${prefix}-rg \
--name ${prefix}-vm \
--yes
az network nic delete \
--name ${prefix}-nic \
--resource-group ${prefix}-rg
az disk delete \
--name ${prefix}-osdisk \
--resource-group ${prefix}-rg \
--yes
az network vnet subnet update \
--vnet-name ${prefix}-vnet \
--resource-group ${prefix}-rg \
--name default-subnet \
--default-outbound true
再度、検証用 VM を作成し外部通信を試す
bash
az network nic create \
--name ${prefix}-nic \
--resource-group ${prefix}-rg \
--vnet-name ${prefix}-vnet \
--subnet default-subnet
az vm create \
--resource-group ${prefix}-rg \
--name ${prefix}-vm \
--os-disk-name ${prefix}-osdisk \
--image Ubuntu2204 \
--size Standard_B1s \
--admin-username azureuser \
--generate-ssh-keys \
--nics ${prefix}-nic \
--storage-sku Standard_LRS
az vm run-command invoke \
--resource-group ${prefix}-rg \
--name ${prefix}-vm \
--command-id RunShellScript \
--scripts "curl -s inet-ip.info" \
--query "value[].message" \
--output tsv
下記のように、VM が使用しているパブリック IP が取得できました。
Enable succeeded:
[stdout]
23.100.99.116
[stderr]
参考