App Service スロットのマネージド ID 使用の確認

スロットから Azure リソースへアクセスする際の長期シークレットを減らしてください。

説明

マネージド ID を使うと、コードや設定に長期の認証情報を保存せず、デプロイスロットから対応する Azure リソースへアクセスできます。ID はスロットごとに設定するため、本番アプリとステージングスロットの必要な権限を個別に確認してください。

想定される影響

個別のシークレットやアクセスキーは、漏えい、交換漏れ、認証情報の管理負担につながる可能性があります。

対処方法

対応リソースへアクセスするスロットに identity を設定してください。運用に合わせて SystemAssigned または UserAssigned を選び、対象リソースに必要な最小権限だけを付与してください。アプリがその ID でトークンを取得するよう変更し、従来のシークレットを削除してください。

例

Windows Web App スロットの ID 設定だけを比較します。親アプリと対象リソースへの権限は別途設定します。

変更前

hcl
resource "azurerm_windows_web_app_slot" "example" {
  name           = "staging"
  app_service_id = azurerm_windows_web_app.example.id

  site_config {}
}

変更後

hcl
resource "azurerm_windows_web_app_slot" "example" {
  name           = "staging"
  app_service_id = azurerm_windows_web_app.example.id

  site_config {}

  identity {
    type = "SystemAssigned"
  }
}

変更後はスロットのシステム割り当て ID を有効にします。ID の作成だけでデータアクセス権限が付与されたり、既存コードの認証方法が変わったりするわけではありません。

参考資料