説明
マネージド ID がないと、App Service アプリが他の Azure リソースへアクセスするために、シークレットや認証情報を別途管理する必要が生じる場合があります。マネージド ID はリソースアクセス用のアプリの ID であり、訪問者のサインイン認証を有効にする設定ではありません。他のリソースへアクセスしないアプリに、必ず ID が必要というわけでもありません。
想定される影響
- 認証情報をコードや設定ファイルに保存すると、漏えいするおそれがあります。
- シークレットの交換や認証情報の管理負担が増え、運用ミスが生じる場合があります。
対処方法
- 対象サービスがマネージド ID 認証に対応している場合は、Microsoft.Web/sites に SystemAssigned または UserAssigned ID を設定してください。ユーザー割り当て型では、userAssignedIdentities で実際の ID を関連付けてください。
- 必要な権限だけを付与し、アプリが ID で認証するよう変更してください。正常動作を確認してから保存済みのシークレットを削除し、使わなくなった認証情報を失効させてください。
例
同じアプリにシステム割り当て ID を追加する抜粋です。App Service プランや実行設定などは省略しており、対象サービスの権限は別途設定する必要があります。
変更前
bicep
resource webApp 'Microsoft.Web/sites@2020-12-01' = {
name: 'example-webapp'
location: resourceGroup().location
properties: {
httpsOnly: true
}
}
マネージド ID が設定されていません。他の Azure リソースへの認証方式を確認する必要があります。
変更後
bicep
resource webApp 'Microsoft.Web/sites@2020-12-01' = {
name: 'example-webapp'
location: resourceGroup().location
identity: {
type: 'SystemAssigned'
}
properties: {
httpsOnly: true
}
}
Azure が管理するシステム割り当て ID を有効にします。対象の権限や認証コードの変更まで自動で適用されるわけではありません。