Azure App Service を作成すると <リソース名>.azurewebsites.net という、デフォルトのホスト名でアクセスする事ができます。このデフォルトのホスト名で何かしらの Web サイトをしばらく運用していて使わなくなった際、Azure App Service を削除するとします。その後、第三者が同じ <リソース名> で Azure App Service を作成すると、以前運用されていた Web サイトへのハイパーリンクなどから流入して、サブドメインハイジャック的な事が行えてしまいます。
その対策として Azure App Service 作成時にユニークなサブドメインを生成して防止しよう、というのが今回の Unique Default Hostname です。
そこで今回は、AutoGeneratedDomainNameLabelScope
の値を TenantReuse
と NoReuse
に設定した WebApp を作成して、どのように Default Hostname がユニークになるのか試してみました。
検証用の App Service Plan を作成
prefix=mnruniapp
region=japaneast
az group create \
--name ${prefix}-rg \
--location $region
az appservice plan create \
--name ${prefix}-asp \
--resource-group ${prefix}-rg \
--is-linux \
--sku B1
Azure CLI で REST API を実行する準備
rgpath=$(az group show \
--name ${prefix}-rg \
--query id \
--output tsv)
aspid=$(az appservice plan show \
--name ${prefix}-asp \
--resource-group ${prefix}-rg \
--query id \
--output tsv)
TenantReuse を試す
az rest \
--method put \
--url "$rgpath/providers/Microsoft.Web/sites/${prefix}-tenant?api-version=2022-03-01" \
--body '{
"location": "'$region'",
"kind": "app",
"properties": {
"serverFarmId": "'$aspid'",
"AutoGeneratedDomainNameLabelScope": "TenantReuse",
}
}'
az webapp show \
--name ${prefix}-tenant \
--resource-group ${prefix}-rg \
--query defaultHostName \
--output tsv
mnruniapp-tenant-bnctfua2f5bnd4ee.japaneast-01.azurewebsites.net
bnctfua2f5bnd4ee
というランダムな英数字が含まれる Default Hostname が作成されました。
WebApp を削除してもう一度 TenantReuse で作成
az webapp delete \
--name ${prefix}-tenant \
--resource-group ${prefix}-rg \
--keep-empty-plan
az rest \
--method put \
--url "$rgpath/providers/Microsoft.Web/sites/${prefix}-tenant?api-version=2022-03-01" \
--body '{
"location": "'$region'",
"kind": "app",
"properties": {
"serverFarmId": "'$aspid'",
"AutoGeneratedDomainNameLabelScope": "TenantReuse",
}
}'
az webapp show \
--name ${prefix}-tenant \
--resource-group ${prefix}-rg \
--query defaultHostName \
--output tsv
mnruniapp-tenant-bnctfua2f5bnd4ee.japaneast-01.azurewebsites.net
bnctfua2f5bnd4ee
というランダムな英数字は前回と同じものが作成されました。
NoReuse を試す
az rest \
--method put \
--url "$rgpath/providers/Microsoft.Web/sites/${prefix}-noreuse?api-version=2022-03-01" \
--body '{
"location": "'$region'",
"kind": "app",
"properties": {
"serverFarmId": "'$aspid'",
"AutoGeneratedDomainNameLabelScope": "NoReuse",
}
}'
az webapp show \
--name ${prefix}-noreuse \
--resource-group ${prefix}-rg \
--query defaultHostName \
--output tsv
mnruniapp-noreuse-b8a7ahbpb8gahzf3.japaneast-01.azurewebsites.net
b8a7ahbpb8gahzf3
というランダムな英数字が作成されました。
WebApp を削除してもう一度 NoReuse で作成
az webapp delete \
--name ${prefix}-noreuse \
--resource-group ${prefix}-rg \
--keep-empty-plan
az rest \
--method put \
--url "$rgpath/providers/Microsoft.Web/sites/${prefix}-noreuse?api-version=2022-03-01" \
--body '{
"location": "'$region'",
"kind": "app",
"properties": {
"serverFarmId": "'$aspid'",
"AutoGeneratedDomainNameLabelScope": "NoReuse",
}
}'
az webapp show \
--name ${prefix}-noreuse \
--resource-group ${prefix}-rg \
--query defaultHostName \
--output tsv
mnruniapp-noreuse-hnfrcjenatf5dqd5.japaneast-01.azurewebsites.net
前回とは違う hnfrcjenatf5dqd5
というランダムな英数字が作成されました。
検証結果
AutoGeneratedDomainNameLabelScope
の値には
- TenantReuse
- SubscriptionReuse
- ResourceGroupReuse
- NoReuse
が使用できるようですが、NoReuse
以外は言葉通りランダムな英数字がリユースされるようです。
後片付け
az group delete \
--name ${prefix}-rg \
--yes
参考