🪪

Azure RBAC の「ID が見つかりません」「不明」をリスト アップ

2024/08/06に公開

はじめに

Azure を使っているとよく発生するのが、ロール割り当てのページの「ID が見つかりません」です。

これはロール割り当て後、アカウントやサービス プリンシパルなどが削除された場合に発生します。
https://learn.microsoft.com/ja-jp/azure/role-based-access-control/troubleshooting?tabs=bicep#symptom---role-assignments-with-identity-not-found

直接的に害はない (ロール割り当てにカウントされるので上限に近い環境は注意) のですが、結局のところゴミなので消したいところです。ただポータルで削除する場合サブスクリプションレベルであればいいでのですが、リソース グループや各リソースまで探すとなると、かなり大変です。そのため、リストアップするための PowerShell スクリプトを準備しました。

スクリプト

Get-AzRoleAssignment を使用すると、対象サブスクリプション配下のすべてのロール割り当てが取得できるため、こちらから「ID が見つかりません」をピックアップします。

# Azure に接続
Connect-AzAccount -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

# ロール割り当て一覧を取得
$roleAssignment = Get-AzRoleAssignment

# "ObjectType": "Unknown" の割り当てを取得
$notFoundId = $roleAssignment | Where-Object { $_.ObjectType -eq "Unknown" } | ConvertTo-Json -depth 8

# JSONファイルに出力
$notFoundId | Out-File -FilePath .\notFoundId.json

こちらで json 形式で出力されるので、あとはポータルでリソースをたどって削除や、スクリプトでまとめて削除をしていきます。

Microsoft (有志)

Discussion