https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/management/lock-resources?tabs=json
https://learn.microsoft.com/ja-jp/azure/virtual-machines/tag-cli
https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/management/resource-providers-and-types
管理者であれば、
Azure サブスクリプション、
リソース グループ、
またはリソースをロックして、ユーザーの不注意による削除や変更から保護できます。
CanNotDelete は、正規ユーザーはリソースの読み取りと変更を実行できますが、削除ができないことを示します。
ReadOnly は、正規ユーザーはリソースの読み取りを実行できますが、削除または更新ができないことを示します。
vm01とvm02をそれぞれCanNotDeleteとReadOnlyで作成し、下記を確認
vm01はタグ付与できるが、削除できない
vm02はタグ付与も削除もどちらもできない
-- 1. 前作業
az login --use-device-code
az account show
az version
az configure --list-defaults
az configure --defaults location=japaneast
az configure --list-defaults
az group create \
--name rg9999999 \
--location japaneast
az group list
az upgrade
-- 2. vmの作成
az vm create \
--resource-group rg9999999 \
--name vm01 \
--image UbuntuLTS \
--size Standard_B1ls \
--admin-username azureuser \
--generate-ssh-keys \
--storage-sku Standard_LRS
az vm create \
--resource-group rg9999999 \
--name vm02 \
--image UbuntuLTS \
--size Standard_B1ls \
--admin-username azureuser \
--generate-ssh-keys \
--storage-sku Standard_LRS
az vm list \
--resource-group rg9999999
-- 3. リソースのロック
az provider list --query "[].{Provider:namespace, Status:registrationState}" --out table
az provider show --namespace Microsoft.Compute --query "resourceTypes[*].resourceType" --out table
az lock create \
--name lock01 \
--lock-type CanNotDelete \
--resource-group rg9999999 \
--resource vm01 \
--resource-type Microsoft.Compute/virtualMachines
az lock create \
--name lock02 \
--lock-type ReadOnly \
--resource-group rg9999999 \
--resource vm02 \
--resource-type Microsoft.Compute/virtualMachines
az lock list
-- 4. タグの付与(ロックあり)
az vm update \
--resource-group rg9999999 \
--name vm01 \
--set tags.key1=val1 tags.key2=val2
az vm update \
--resource-group rg9999999 \
--name vm02 \
--set tags.key1=val1 tags.key2=val2
→ (ScopeLocked)エラー
az vm show \
--resource-group rg9999999 \
--name vm01 \
--query tags
az vm show \
--resource-group rg9999999 \
--name vm02 \
--query tags
-- 5. vmの削除(ロックあり)
az vm delete \
--resource-group rg9999999 \
--name vm01 \
--yes
→ (ScopeLocked)エラー
az vm delete \
--resource-group rg9999999 \
--name vm02 \
--yes
→ (ScopeLocked)エラー
-- 6. ロック解除
az lock delete \
--name lock01 \
--resource-group rg9999999 \
--resource vm01 \
--resource-type Microsoft.Compute/virtualMachines
az lock delete \
--name lock02 \
--resource-group rg9999999 \
--resource vm02 \
--resource-type Microsoft.Compute/virtualMachines
az lock list
-- 7. タグの付与(ロック解除後)
az vm update \
--resource-group rg9999999 \
--name vm01 \
--set tags.key1=val1 tags.key2=val2
az vm update \
--resource-group rg9999999 \
--name vm02 \
--set tags.key1=val1 tags.key2=val2
az vm show \
--resource-group rg9999999 \
--name vm01 \
--query tags
az vm show \
--resource-group rg9999999 \
--name vm02 \
--query tags
-- 8. vmの削除(ロック解除後)
az vm delete \
--resource-group rg9999999 \
--name vm01 \
--yes
az vm delete \
--resource-group rg9999999 \
--name vm02 \
--yes
az vm list \
--resource-group rg9999999
-- 9. クリーンアップ
az group list
az group delete \
--name rg9999999 \
--yes
az group delete \
--name NetworkWatcherRG \
--yes