Container Registry の管理者ユーザーが有効

共有管理者認証情報より、ユーザーやワークロードごとの認証と最小権限を優先してください。

説明

ACR の管理者アカウントはレジストリ全体に広い権限を持ちます。複数人でパスワードを共有すると操作主体を追跡しにくくなり、漏えいするとイメージの供給に影響する場合があります。連携で特に必要な場合を除き、Microsoft Entra ID とロールによる権限管理を優先してください。

想定される影響

  • 管理者認証情報が漏えいすると、イメージの読み取りや変更に悪用されるおそれがあります。
  • アカウント共有は、個別の操作追跡や権限の取り消しを難しくします。

対処方法

  • 代替認証と必要なロールを先に設定し、admin_enabled = false で管理者アカウントを無効にしてください。ユーザーやワークロードごとに、対応する Microsoft Entra ID またはマネージド ID 認証を使用してください。
  • 管理者アカウントが必要な連携では使用範囲を限定し、パスワードを保護・ローテーションしてください。漏えいした認証情報は別途再発行し、依存する処理の接続をテストしてください。

例

リソースグループの参照を合わせ、現在の AzureRM の georeplications ブロックを使用しています。レジストリ名は使用可能な名前に置き換えてください。

変更前

hcl
resource "azurerm_resource_group" "example" {
  name     = "resourceGroup1"
  location = "West US"
}

resource "azurerm_container_registry" "example" {
  name                     = "containerRegistry1"
  resource_group_name      = azurerm_resource_group.example.name
  location                 = azurerm_resource_group.example.location
  sku                      = "Premium"
  admin_enabled            = true
  georeplications {
    location = "East US"
  }
  georeplications {
    location = "West Europe"
  }
}

変更後

hcl
resource "azurerm_resource_group" "example" {
  name     = "resourceGroup1"
  location = "West US"
}

resource "azurerm_container_registry" "example" {
  name                     = "containerRegistry1"
  resource_group_name      = azurerm_resource_group.example.name
  location                 = azurerm_resource_group.example.location
  sku                      = "Premium"
  admin_enabled            = false
  georeplications {
    location = "East US"
  }
  georeplications {
    location = "West Europe"
  }
}

補足:

  • 変更前: レジストリの管理者アカウントを有効にします。
  • 変更後: 管理者アカウントを無効にします。代替の主体やロールが自動作成される設定ではありません。

参考資料