説明
誤操作や権限の悪用でコンテナーレジストリが削除されると、イメージのデプロイやサービス復旧が中断するおそれがあります。管理ロックは、アクセス権限とは別にリソースの削除を防ぐ仕組みです。
CanNotDelete ロックは管理プレーンでのレジストリ削除を防ぎますが、イメージやタグへのデータ操作は保護しません。リソースグループやサブスクリプションから継承するロックも確認してください。
想定される影響
- 必要なイメージを取得できず、新しいデプロイや復旧が遅れるおそれがあります。
- レジストリの再構成やイメージの復元に時間と費用がかかる可能性があります。
対処方法
重要なレジストリに azurerm_management_lock の CanNotDelete を適用するか、有効な継承ロックを確認してください。ロックを解除する権限を制限し、変更手順を整えてください。イメージの削除権限と復旧手段は別途管理してください。
例
同じレジストリに削除防止ロックを追加する例です。
変更前
hcl
resource "azurerm_container_registry" "acr" {
name = "containerRegistry1"
resource_group_name = azurerm_resource_group.rg.name
location = azurerm_resource_group.rg.location
sku = "Standard"
admin_enabled = false
}
この抜粋には個別のロックがありません。上位スコープから保護を継承しているか確認してください。
変更後
hcl
resource "azurerm_container_registry" "acr" {
name = "containerRegistry1"
resource_group_name = azurerm_resource_group.rg.name
location = azurerm_resource_group.rg.location
sku = "Standard"
admin_enabled = false
}
resource "azurerm_management_lock" "acr_lock" {
name = "acr-lock"
scope = azurerm_container_registry.acr.id
lock_level = "CanNotDelete"
notes = "Protect registry from accidental deletion"
}
レジストリの削除を防ぐロックを追加します。ロックを解除できる主体は保護を無効にできるため、権限管理も必要です。