1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azure上の不明なユーザのオブジェクトIDを特定してロールを削除する

Posted at

Azure PortalでIAMの画面を開くと、「不明」という名のついたユーザがたまに存在します。

SnapCrab_No-0000.png

これなんで起きるかって言うと、Azure側のRBACのロールを削除する前にユーザーとかマネージドIDが付与されたリソースを削除しちゃうからなんですよね...

そして「不明」になると、Azure Portalの画面からは誰がいつ作ったユーザーなのかを調べることができません...

RBACのロールを削除してからリソースを削除すればこんなことは起きないのですが、
「不明」なユーザを特定してロール削除する場合の方法が一応ありました。

(私が作り出してしまった不明なユーザを頑張って探したので忘れないうちに備忘録)

前提条件

  • 探したい不明なユーザの種類によって、探せる時期が異なります。

    • ユーザーID:Entra IDから完全削除されるまで
    • マネージドID:直近(アクティビティログに残る範囲)で何かしらの作業を実施していること
  • ロールを削除したいスコープ(サブスクリプション、リソースグループなど)に対して「所有者」権限が付与されている必要があります。

  • Entra IDからオブジェクトIDを検索する場合は、Entra IDに対しての参照権限も必要です。

1. 不明なユーザのオブジェクトIDを抽出する

とりあえず候補になる容疑者を探します(笑)

  1. Azure PortalでCloud Shell を起動する or 端末からPowerShellを起動して以下のコマンドを実行します。

    Get-AzRoleAssignment | Export-Csv -path UserRoleAssignment.csv

  2. CSVファイルが作成されるので開きます。
    (Cloud Shellから実行した場合は、「ダウンロード」をクリックしてファイルをダウンロードします。)
    SnapCrab_No-0002.png

  3. CSVファイルの scope列を対象範囲に絞り込みます。

    例)

    • 不明なユーザがサブスクリプションに対してRBACを付与されている場合:/subscriptions/<サブスクリプションID>
    • リソースグループに対してRBACを付与されている場合:/subscriptions/<サブスクリプションID>/resourceGroups/<リソースグループ名>/
  4. CSVファイルのObjectType列がUnknownになっている行を抽出し、Object IDをメモします。

    SnapCrab_No-0003.png

2.オブジェクトIDから対象ユーザを探す

容疑者は絞りこめたので、犯人を特定します(笑)

探したい不明なユーザがユーザIDの場合

Entra IDの画面から探します。
Entra IDに一度作成したユーザは削除後も30日間は「削除済みのユーザー」画面に残ります。

なので、削除したかったユーザとオブジェクトIDが一致すれば、そのオブジェクトIDが削除対象です。

SnapCrab_No-0004.png

探したい不明なユーザがマネージドIDの場合

こちらはリソースに付与されるIDなので、Entra IDには残りません。

なので、アクティビティログから対象リソースの直近の挙動を検索しました。
オブジェクトIDで検索して、該当する挙動を直近で行っていたオブジェクトIDが削除対象です。

SnapCrab_No-0005.png

3. 特定した不明なユーザ(オブジェクトID)からロールを削除する

犯人(削除対象の不明なユーザ)が特定できたとしても、Azure PortalからではオブジェクトIDは特定できません。

そのため、Cloud Shell or PowerShellから以下コマンドで削除します。

PS C:\> Remove-AzRoleAssignment -ObjectId <削除対象のオブジェクトID> -RoleDefinitionId <ロールのID> -Scope <ロールが付与されているスコープ>

ObjectIdRoleDefinitionIdScopeも最初に出力したCSVに記載されているので、コピペすれば良いです。

コマンド実行後、削除できたか気になる場合は、もう一度CSVを出力してみて、削除したオブジェクトIDが存在してなければOKです。


以上です。

不明なユーザ全部消そうかと思ったけど、無事特定できました。

(実は残りの不明なユーザを私が知らない間に作ってしまったのかもしれない...w)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?