Azure ストレージ アカウントのアクセス制御 (IAM) に「共同作成者 (Contributor)」ロールが Unknown(不明) として表示され、削除ボタンも押せずに残り続けてしまう――この現象は、テナントを長く運用している環境ほど発生しやすい事象です。本記事では、その正体と安全な削除方法、そしてサポート プランの要否までをまとめて解説します。
ストレージ アカウントに表示される「Unknown(不明)」ロール割り当ての正体
Azure ポータルの アクセス制御 (IAM) → ロールの割り当て を開くと、次のようなエントリが見えることがあります。
- ロール: 共同作成者 (Contributor)
- プリンシパル: Unknown(不明)
- プリンシパル ID: GUID(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
この「Unknown(不明)」は、単なる表示上のラベルではなく、次のような状態を意味します。
| 表示 | 実際の状態 |
|---|---|
| ユーザー名 / グループ名 / アプリ名 | Microsoft Entra ID 上にプリンシパルが存在し、名前解決できている状態 |
| Unknown(不明) | 元のユーザー / グループ / サービス プリンシパルが 既に削除済み で、 RBAC の「ロール割り当て」だけが残っている孤児状態 |
つまり Unknown のロール割り当ては、
- もともと存在していたプリンシパル(ユーザーやアプリ)が Microsoft Entra ID から削除 された
- しかし RBAC のエントリは残っているため、「誰か分からない Unknown」として表示されている
という状況です。この時点で既にその削除済みプリンシパルは Azure にサインインできないため、Unknown のロール割り当てを削除しても、現行のアクセス権限に影響を与えることはありません。
なぜストレージ アカウントで削除できないのか ― 継承とスコープの仕組み
Unknown のロール割り当てが表示されているのに、削除ボタンを押すと次のようなメッセージが表示される場合があります。
継承されたロールの割り当ては削除できません。割り当てが行われたスコープを開き、そこで削除してください。
これは、ロールの割り当てが ストレージ アカウント自身ではなく、より上位のスコープ(リソース グループやサブスクリプション、管理グループ)に対して行われ、その結果として “継承” されて見えているだけであることを示します。
Azure RBAC のスコープは概ね次のような階層構造を持ちます。
| スコープ | 例 | スコープにロールを割り当てた場合の影響範囲 |
|---|---|---|
| 管理グループ | mg-root, mg-prod など | 配下のサブスクリプション・リソース グループ・リソースすべて |
| サブスクリプション | subscriptions/<subId> | そのサブスクリプション内の全リソース |
| リソース グループ | resourceGroups/<rgName> | そのリソース グループ内のすべてのリソース |
| 個別リソース | storageAccounts/<accountName> など | そのリソース自身のみ |
ストレージ アカウントの IAM 画面で Unknown のロール割り当てが見えていても、実際の割り当て元スコープ が「リソース グループ」や「サブスクリプション」である場合、子リソース側(ストレージ アカウント)では削除できません。これは仕様です。
Unknown のロール割り当ては削除しても本当に問題ない?
結論から言うと、このケースでは Unknown のロール割り当ては削除して問題ありません。理由は次の通りです。
- Unknown になっている時点で、元のプリンシパルは Microsoft Entra ID 上から削除済み
- 削除済みプリンシパルは、既に Azure にサインインも操作もできない
- RBAC のロール割り当て エントリを消しても、存在しない ID に対する権限を消すだけであり、実利用ユーザーには影響しない
補足として、次のような観点から簡単に確認しておくと安心です。
| 確認ポイント | チェック内容 |
|---|---|
| Unknown の GUID | テナントの監査ログやドキュメントに、過去に存在したサービス プリンシパル / ユーザーとして記録が残っていないか(残っていても削除済みなら問題なし) |
| 現在の利用者 | そのロール割り当てを前提に動作しているアプリやスクリプトがないか(通常 Unknown になっている時点で存在しない) |
| 削除手段 | ポータル / CLI / PowerShell いずれかで削除可能かを確認(いずれも失敗する場合はスコープや権限を再確認) |
ポータルから Unknown ロール割り当てを特定・削除する手順
スコープと継承の状態を確認する
まずはストレージ アカウントの IAM 画面から、Unknown のロール割り当てがどのスコープで付与されているかを確認します。
- 対象の ストレージ アカウント を開きます。
- 左ペインから アクセス制御 (IAM) を選択します。
- ロールの割り当て タブを開きます。
- 右上の フィルター をクリックし、継承(Inherited)を「表示」に切り替えます。
- 一覧に表示されている「Unknown(不明)の共同作成者 (Contributor)」の行の スコープ(Scope)列 を確認します。
スコープ列には、例えば次のような情報が表示されます。
subscriptions/<subId>(サブスクリプション)subscriptions/<subId>/resourceGroups/<rgName>(リソース グループ)providers/Microsoft.Management/managementGroups/<mgName>(管理グループ)
この スコープ列に表示されている位置が「割り当て元」 です。ストレージ アカウントはその配下のリソースとして、ロール割り当てを継承しているだけに過ぎません。
割り当て元スコープに移動して削除する
続いて、割り当て元のスコープ側でロール割り当てを削除します。
- 先ほど確認したスコープに応じて、対象の 管理グループ / サブスクリプション / リソース グループ を Azure ポータルで開きます。
- 左ペインから アクセス制御 (IAM) を選択します。
- ロールの割り当て タブを開きます。
- プリンシパルの列に Unknown(不明) と表示されている 共同作成者 (Contributor) のエントリを探します。
- 右端の 縦の「…」メニュー から 削除 を選択します。
- 確認ダイアログで内容を確認し、削除を実行します。
この手順で削除が完了すれば、子リソースであるストレージ アカウント側からも Unknown のロール割り当ては消えます。
| よくあるつまずき | 対処のポイント |
|---|---|
| ストレージ アカウント画面では「削除」ボタンが押せない | 継承されたロールであるため仕様。必ず割り当て元スコープの IAM 画面で削除する。 |
| 割り当て元スコープに Unknown が見つからない | フィルター条件(ロール、プリンシパル名)を一度クリアし、すべてのロール・すべてのプリンシパルで検索する。 |
Azure CLI で Unknown のロール割り当てを特定・削除する
前提条件
az loginで対象テナントにサインイン済みであること- 対象のサブスクリプションを
az account setで選択済みであること - 割り当て元スコープで ロール割り当ての削除権限(Owner / User Access Administrator など)を持っていること
継承されたロール割り当てを含めて一覧する
まず、ストレージ アカウントから見えているロール割り当てを、継承分も含めて一覧します。
az role assignment list \
--scope "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Storage/storageAccounts/<accountName>" \
--include-inherited \
--output table
このコマンドの出力から、Unknown の共同作成者 (Contributor) に該当する行の次の情報を控えておきます。
- id(role assignment の ID)
- scope(割り当て元スコープ)
- principalId(Unknown と表示されている GUID)
roleAssignment ID を指定して削除する場合
id が分かっている場合は、もっとも確実かつシンプルに削除できます。
az role assignment delete --ids <roleAssignmentId>
複数の Unknown ロール割り当てがある場合は、該当する roleAssignmentId を一つずつ指定して実行します。
principalId とスコープを指定して削除する場合
もし roleAssignmentId ではなく、Unknown に表示されている GUID(principalId)だけが分かっている場合は、ロール名とスコープを組み合わせて削除します。
az role assignment delete \
--role "Contributor" \
--assignee-object-id <Unknown に表示されている GUID> \
--scope "<割り当て元のスコープ>"
ここで指定する <割り当て元のスコープ> には、先ほど一覧で確認した scope の値(例: /subscriptions/<subId>/resourceGroups/<rgName>)をそのまま利用します。
PowerShell(Az モジュール)で Unknown ロール割り当てを削除する
前提条件
- Az モジュールがインストール済みであること
Connect-AzAccountで対象テナントにログイン済みであることSelect-AzSubscriptionで対象サブスクリプションを選択済みであること
継承されたロール割り当ての確認
ストレージ アカウントのスコープで、継承分を含めたロール割り当てを確認します。
Get-AzRoleAssignment `
-Scope "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Storage/storageAccounts/<accountName>" `
-IncludeInherited
出力の中から Unknown(不明)の共同作成者 (Contributor) に相当する行を探し、その ObjectId と Scope を控えます。
割り当て元スコープでロール割り当てを削除
控えた ObjectId(Unknown の GUID)と Scope(割り当て元スコープ)を使って、ロール割り当てを削除します。
Remove-AzRoleAssignment `
-ObjectId <GUID> `
-RoleDefinitionName "Contributor" `
-Scope "<割り当て元スコープ>"
削除後、再度 Get-AzRoleAssignment で確認し、対象のエントリが消えていることを確認します。
Unknown ロール割り当てを削除するために必要な権限
Unknown のロール割り当てを削除するには、削除操作を行うスコープで以下の権限を持つロールに所属している必要があります。
| ロール | 持っている主な権限 | 用途 |
|---|---|---|
| 所有者 (Owner) | ほぼすべてのリソース操作に加え、Microsoft.Authorization/roleAssignments/delete など RBAC の管理権限を含む | サブスクリプション / リソース グループ単位でのフル管理を行う管理者向け |
| ユーザー アクセス管理者 (User Access Administrator) | リソース自体の操作権限は少ないが、roleAssignments の作成 / 削除が可能 | 権限管理専任の管理者が利用することが多いロール |
もし削除操作を試みた際に「権限が不足しています」「ロールの割り当てを削除できません」といったエラーが表示される場合、
- 自分のアカウント自身に付与されている RBAC ロール
- ロールが付与されているスコープ(管理グループ / サブスクリプション / リソース グループ)
を再確認し、必要に応じて管理者にロール追加を依頼してください。
Unknown ロール割り当てが削除できない場合のチェックリスト
ここまでの手順を踏んでも削除できない場合、次のポイントを順番に確認してみてください。
| チェック項目 | 確認内容・対処方法 |
|---|---|
| 割り当て元スコープにいるか | ストレージ アカウントではなく、管理グループ / サブスクリプション / リソース グループの IAM 画面を開いているか確認する。 |
| 十分な権限があるか | 自分に Owner / User Access Administrator 相当のロールが付与されているか、RBAC 画面や「アクセス確認」で確認する。 |
| 自動化による再作成がないか | Azure Blueprint / ARM / Bicep / Terraform / パイプラインなどで、同じロール割り当てを自動で作り直していないか確認する。 |
| 別テナント・外部 ID の関与 | クロステナントな B2B / B2C シナリオの場合、招待元テナント側の権限や設定が影響している可能性がある。必要であれば両テナントの管理者に確認する。 |
これらを確認しても解決しない場合は、権限やスコープに関するより詳細な診断が必要になることがあります。その場合は次に説明するサポート プランの活用も検討してください。
Azure サポートは必要か?Developer サポート プランでできること
今回の「Unknown(不明)のロール割り当てが削除できない」というケースについて、よくある疑問は次の 2 点です。
- Azure サポートに問い合わせるべきか?
- Developer サポート プランで対応してもらえるのか?
これに対する実務的な答えは次の通りです。
- 通常はサポート不要です。
原因は「削除済みプリンシパルのロール割り当てが孤児として残っている」「継承されているため子スコープから削除できない」という仕様的なものだからです。 - 本記事で紹介したように、割り当て元のスコープと、十分な RBAC 権限さえあれば、自力で安全に削除できます。
- それでも不安がある場合や、ポータル・CLI・PowerShell いずれでも削除に失敗する場合は、Developer サポート プランでも問い合わせは可能です。
ただし、サポートに依頼できるのはあくまで「症状の調査」と「操作方法の案内」までであり、
- 実際の削除操作
- お客様テナントでのロール変更
はセキュリティの観点から基本的に お客様側(十分な権限を持つ管理者)で実行することになります。その意味でも、RBAC とスコープの仕組みを理解しておくことには大きな価値があります。
Unknown のロール割り当てを増やさないための運用ベスト プラクティス
最後に、今後同様の「Unknown(不明)」ロール割り当てを増やさないための運用上のポイントを整理しておきます。
個人のアカウントではなくグループにロールを付与する
ユーザーが退職・異動してアカウントを削除すると、そのユーザーに直接付与されていた RBAC は今回のように Unknown 化します。これを避けるには、次のような方針が有効です。
- 個々のユーザーではなく、Microsoft Entra ID グループに対してロールを付与する
- ユーザーの異動・退職時は、グループからの削除を行い、グループ自体は残す
- グループを廃止する場合は、事前にそのグループに付与されている RBAC を整理・削除してから AD から消す
サービス プリンシパル / マネージド ID を削除する前に RBAC を整理する
アプリケーションや自動化ジョブに紐づけて利用していたサービス プリンシパルやマネージド ID を削除するときも同様です。
- 削除前に、そのプリンシパルが どのスコープでどのロールを持っているか を確認する
- 不要であれば、先に RBAC のロール割り当てを削除してからプリンシパルを削除する
この運用を徹底しておくことで、将来的に Unknown のロール割り当てが大量に残ってしまうリスクを減らせます。
定期的な RBAC の棚卸しと監査
権限管理のベスト プラクティスとして、半年〜1 年に一度は次のような棚卸しを行うことをおすすめします。
- 各サブスクリプション / リソース グループで Owner / Contributor ロールが付与されているプリンシパルを一覧する
- Unknown(不明)が存在しないかチェックし、見つかれば削除する
- 実際には使われていない高権限ロールを洗い出し、最小権限の原則に従って絞り込む
こうした日常的な運用によって、セキュリティの向上だけでなく、今回のような「何のロールか分からない Unknown が大量に残る」といった混乱も防ぐことができます。
まとめ
本記事で解説してきたポイントを整理すると、次のようになります。
- Unknown(不明)のロール割り当ては、元のユーザー / グループ / サービス プリンシパルが Microsoft Entra ID から削除された結果残った「孤児」の RBAC エントリです。
- このロール割り当てを削除しても、既に存在しない ID に対する権限を消すだけなので、基本的には削除して問題ありません。
- ストレージ アカウントで削除できない場合は、「継承されたロール」であり、割り当て元スコープ(管理グループ / サブスクリプション / リソース グループ)で削除する必要があります。
- 削除には、割り当て元スコープで Owner / User Access Administrator 等の RBAC 権限が必要です。
- 通常、この問題の解決に Azure サポートは必須ではなく、適切な権限と手順が分かっていれば自力で対応できます。必要に応じて Developer サポート プランから問い合わせることも可能ですが、実際の削除操作はお客様側で行うことになります。
- 今後 Unknown を増やさないためには、グループ単位でのロール付与や、プリンシパル削除前の RBAC 整理、定期的な権限棚卸しといった運用が有効です。
ストレージ アカウントに表示される「Unknown(不明)」の共同作成者 (Contributor) に悩まされている場合は、本記事の手順に沿って 割り当て元スコープと必要な権限を確認し、安心して削除を実施してください。

コメント