Azure のすべてのサブスクリプションと管理グループを管理する目的でアクセス権限を昇格させる
[アーティクル] 02/22/2024
13 人の共同作成者
フィードバック
この記事の内容
Microsoft Entra ID の全体管理者には、自分のディレクトリ内にすべてのサブスクリプションと管理グループにアクセスする権限が与えられていない場合があります。 この記事では、すべてのサブスクリプションと管理グループにアクセスできるよう、権限を昇格させる方法について説明します。
アクセス権を昇格が必要な理由
全体管理者であれば、次のような操作を行う場合が考えられます。
ユーザーが Azure のサブスクリプションか管理グループにアクセスできなくなったとき、アクセス権を回復する
Azure サブスクリプションまたは管理グループへのアクセス権を別のユーザーまたは自分自身に付与する
組織内にある Azure のすべてのサブスクリプションと管理グループを表示する
オートメーション アプリ (請求書作成アプリや監査アプリなど) から Azure のすべてのサブスクリプションと管理グループへのアクセスを許可する
昇格されたアクセスはどのように機能しますか?
Microsoft Entra ID と Azure リソースは互いに依存することなくセキュリティで保護されます。 つまり、Microsoft Entra のロール割り当てによって Azure リソースにアクセス権が付与されることはなく、Azure のロール割り当てによって Microsoft Entra ID にアクセス権が付与されることはありません。 ただし、Microsoft Entra ID の全体管理者 であれば、自分のディレクトリにあるすべての Azure サブスクリプションと管理グループに対するアクセス許可を自分に割り当てることができます。 仮想マシンやストレージ アカウントなど、Azure サブスクリプション リソースへのアクセス権が与えられていない場合、この機能を使用します。このようなリソースに対するアクセス権を得るには、全体管理者の特権を使用することをお勧めします。
アクセス権を昇格させると、Azure のルート範囲 (/
) でユーザー アクセスの管理者 ロールが割り当てられます。 これにより、すべてのリソースを表示したり、ディレクトリにあるあらゆるサブスクリプションまたは管理グループでアクセス権を割り当てたりできます。 ユーザー アクセス管理者ロールの割り当ては Azure PowerShell、Azure CLI、または REST API を使用して削除できます。
昇格したこのアクセス権は、ルート範囲で必要な変更を行ったら削除してください。
手順 1: 全体管理者のアクセス権を昇格する
Azure portal を使用して全体管理者のアクセス権を昇格するには、次の手順に従います。
Azure Portal に全体管理者としてサインインします。
Microsoft Entra Privileged Identity Management を使用している場合は、全体管理者ロールの割り当てをアクティブにします 。
Microsoft Entra ID を開きます。
[管理] の下で、 [プロパティ] を選択します。
[Azure リソースのアクセス管理] の下で [はい] に切り替えます。
[はい] に切り替えると、Azure RBAC のルート範囲 (/) でユーザー アクセス管理者ロールが割り当てられます。 これにより、この Microsoft Entra ディレクトリに関連付けられているすべての Azure サブスクリプションと管理グループでロールを割り当てるアクセス許可が付与されます。 この切り替えは、Microsoft Entra ID で全体管理者ロールが割り当てられたユーザーのみ利用できます。
[いいえ] に切り替えると、Azure RBAC のユーザー アクセス管理者ロールがユーザー アカウントから削除されます。 この Microsoft Entra ディレクトリに関連付けられているすべての Azure サブスクリプションと管理グループでロールを割り当てることができなくなります。 自分にアクセス権が割り当てられている Azure サブスクリプションと管理グループのみを表示し、管理できます。
Note
Privileged Identity Management を使用している場合、ロールの割り当てを非アクティブにしても、Azure リソースのアクセス管理 トグルは [いいえ] に切り替わりません。 最小限の特権アクセスを維持するために、ロールの割り当てを非アクティブ化する前に、この切り替えを [いいえ] に設定することをお勧めします。
[保存] をクリックして設定を保存します。
この設定はグローバル プロパティではなく、現在サインインしているユーザーのみに適用されます。 全体管理者ロールのすべてのメンバーを対象にアクセス権限を昇格させることはできません。
サインアウトし、もう一度サインインするとアクセス権限が更新されます。
これで自分のディレクトリにあるすべてのサブスクリプションと管理グループにアクセスできます。 [アクセス制御 (IAM)] ウィンドウを表示すると、ルート スコープでユーザー アクセス管理者ロールが割り当てられていることがわかります。
昇格させたアクセス権で必要な変更を加えます。
ロールの割り当ての詳細については、「Azure portal を使用して Azure ロールを割り当てる 」をご覧ください。 Privileged Identity Management を使用している場合、管理する Azure リソースの検出 または Azure リソース ロールの割り当て に関するページを参照してください。
次のセクションの手順を実行し、昇格したアクセス権を削除します。
手順 2: 昇格されたアクセス権を削除する
ルート スコープ (/
) でユーザー アクセス管理者ロールの割り当てを削除するには、次の手順を行います。
アクセス権の昇格に使用された同じユーザーでサインインします。
ナビゲーション リストで [Microsoft Entra ID] 、[プロパティ] の順にクリックします。
[Azure リソースのアクセス管理] を [いいえ] に戻します。 これはユーザー別の設定であるため、アクセス権限の昇格に使用したユーザーでサインインする必要があります。
[アクセス制御 (IAM)] ウィンドウでユーザー アクセス管理者ロールの割り当てを削除しようとすると、次のメッセージが表示されます。 ロールの割り当てを削除するには、トグルの設定を [いいえ] に戻すか、Azure PowerShell、Azure CLI、または REST API を使用します。
全体管理者としてサインアウトします。
Privileged Identity Management を使用している場合は、全体管理者ロールの割り当てを非アクティブ化します。
Note
Privileged Identity Management を使用している場合、ロールの割り当てを非アクティブにしても、Azure リソースのアクセス管理 トグルは [いいえ] に切り替わりません。 最小限の特権アクセスを維持するために、ロールの割り当てを非アクティブ化する前に、この切り替えを [いいえ] に設定することをお勧めします。
手順 1: 全体管理者のアクセス権を昇格する
Azure portal または REST API を使用して、全体管理者のアクセス権を昇格します。
手順 2: ルート スコープ (/) のロールの割り当てを一覧表示する
昇格されたアクセス権の取得後に、ルート スコープ (/
) のユーザーについてユーザー アクセス管理者ロールの割り当てを一覧表示するには、Get-AzRoleAssignment コマンドを使用します。
Get-AzRoleAssignment | where {$_.RoleDefinitionName -eq "User Access Administrator" `
-and $_.SignInName -eq "<username@example.com>" -and $_.Scope -eq "/"}
RoleAssignmentId : /providers/Microsoft.Authorization/roleAssignments/11111111-1111-1111-1111-111111111111
Scope : /
DisplayName : username
SignInName : username@example.com
RoleDefinitionName : User Access Administrator
RoleDefinitionId : 18d7d88d-d35e-4fb5-a5c3-7773c20a72d9
ObjectId : 22222222-2222-2222-2222-222222222222
ObjectType : User
CanDelegate : False
手順 3: 昇格されたアクセス権を削除する
自分か他のユーザーのためにルート スコープ (/
) でユーザー アクセス管理者ロールの割り当てを削除するには、次の手順を行います。
昇格させたアクセス権を削除できるユーザーでサインインします。 これはアクセス権を昇格させたときと同じユーザーかルート スコープでアクセス権が昇格されている別の全体管理者になります。
ユーザー アクセス管理者ロールの割り当てを削除するには、Remove-AzRoleAssignment コマンドを使用します。
Remove-AzRoleAssignment -SignInName <username@example.com> `
-RoleDefinitionName "User Access Administrator" -Scope "/"
手順 1: 全体管理者のアクセス権を昇格する
Azure CLI を使用して全体管理者のアクセス権を昇格するには、以下の基本的な手順を実行します。
az rest コマンドを使用して elevateAccess
エンドポイントを呼び出します。これにより、ユーザー アクセス管理者ロールがルート スコープ (/
) で付与されます。
az rest --method post --url "/providers/Microsoft.Authorization/elevateAccess?api-version=2016-07-01"
昇格させたアクセス権で必要な変更を加えます。
ロールの割り当ての詳細については、「Azure CLI を使用して Azure ロールを割り当てる 」をご覧ください。
後述のセクションの手順を実行して、昇格したアクセス権を削除します。
手順 2: ルート スコープ (/) のロールの割り当てを一覧表示する
昇格されたアクセス権の取得後に、ルート スコープ (/
) のユーザーについてユーザー アクセス管理者ロールの割り当てを一覧表示するには、az role assignment list コマンドを使用します。
az role assignment list --role "User Access Administrator" --scope "/"
[
{
"canDelegate": null,
"id": "/providers/Microsoft.Authorization/roleAssignments/11111111-1111-1111-1111-111111111111",
"name": "11111111-1111-1111-1111-111111111111",
"principalId": "22222222-2222-2222-2222-222222222222",
"principalName": "username@example.com",
"principalType": "User",
"roleDefinitionId": "/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9",
"roleDefinitionName": "User Access Administrator",
"scope": "/",
"type": "Microsoft.Authorization/roleAssignments"
}
]
手順 3: 昇格されたアクセス権を削除する
自分か他のユーザーのためにルート スコープ (/
) でユーザー アクセス管理者ロールの割り当てを削除するには、次の手順を行います。
昇格させたアクセス権を削除できるユーザーでサインインします。 これはアクセス権を昇格させたときと同じユーザーかルート スコープでアクセス権が昇格されている別の全体管理者になります。
ユーザー アクセス管理者ロールの割り当てを削除するには、az role assignment delete コマンドを使用します。
az role assignment delete --assignee username@example.com --role "User Access Administrator" --scope "/"
前提条件
次のバージョンを使用する必要があります。
ロール割り当てを一覧表示および削除するには 2015-07-01
以降
アクセス権を昇格するには 2016-07-01
以降
拒否の割り当てを一覧表示するには 2018-07-01-preview
以降
詳細については、Azure RBAC REST API の API バージョン に関するページを参照してください。
手順 1: 全体管理者のアクセス権を昇格する
REST API を使用して全体管理者のアクセス権を昇格するには、以下の基本的な手順を実行します。
REST を使用して elevateAccess
を呼び出します。これにより、ユーザー アクセス管理者ロールがルート スコープ (/
) で付与されます。
POST https://management.azure.com/providers/Microsoft.Authorization/elevateAccess?api-version=2016-07-01
昇格させたアクセス権で必要な変更を加えます。
ロールの割り当ての詳細については、「REST API を使用して Azure ロールを割り当てる 」をご覧ください。
後述のセクションの手順を実行して、昇格したアクセス権を削除します。
手順 2: ルート スコープ (/) のロールの割り当てを一覧表示する
昇格されたアクセス権の取得後に、ルート スコープ (/
) のユーザーについてすべてのロールの割り当てを一覧表示することができます。
Role Assignments - List For Scope を呼び出します。{objectIdOfUser}
は、ロールの割り当てを取得するユーザーのオブジェクト ID です。
GET https://management.azure.com/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01&$filter=principalId+eq+'{objectIdOfUser}'
手順 3: ルート スコープ (/) の拒否の割り当てを一覧表示する
昇格されたアクセス権の取得後に、ルート スコープ (/
) のユーザーについてすべての拒否の割り当てを一覧表示することができます。
Deny Assignments - List For Scope を呼び出します。{objectIdOfUser}
は、拒否の割り当てを取得するユーザーのオブジェクト ID です。
GET https://management.azure.com/providers/Microsoft.Authorization/denyAssignments?api-version=2022-04-01&$filter=gdprExportPrincipalId+eq+'{objectIdOfUser}'
手順 4: 昇格されたアクセス権を削除する
elevateAccess
を呼び出すと、自分自身に対するロールの割り当てが作成されます。このため、これらの権限を取り消すには、ルート スコープ (/
) で、ユーザー アクセス管理者ロールの割り当てを自分で削除する必要があります。
Role Definitions - Get を呼び出します。この roleName
はユーザー アクセス管理者であり、ユーザー アクセス管理者ロールの名前 ID を判別します。
GET https://management.azure.com/providers/Microsoft.Authorization/roleDefinitions?api-version=2022-04-01&$filter=roleName+eq+'User Access Administrator'
{
"value": [
{
"properties": {
"roleName": "User Access Administrator",
"type": "BuiltInRole",
"description": "Lets you manage user access to Azure resources.",
"assignableScopes": [
"/"
],
"permissions": [
{
"actions": [
"*/read",
"Microsoft.Authorization/*",
"Microsoft.Support/*"
],
"notActions": []
}
],
"createdOn": "0001-01-01T08:00:00.0000000Z",
"updatedOn": "2016-05-31T23:14:04.6964687Z",
"createdBy": null,
"updatedBy": null
},
"id": "/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9",
"type": "Microsoft.Authorization/roleDefinitions",
"name": "18d7d88d-d35e-4fb5-a5c3-7773c20a72d9"
}
],
"nextLink": null
}
この場合の 18d7d88d-d35e-4fb5-a5c3-7773c20a72d9
では、name
パラメーターの ID を省略できます。
また、ディレクトリ スコープでディレクトリ管理者のロール割り当ての一覧を表示する必要もあります。 アクセス権の昇格呼び出しを行ったディレクトリ管理者の principalId
について、ディレクトリ スコープの割り当て一覧を表示します。 これにより、objectid についてディレクトリの割り当ての一覧が表示されます。
GET https://management.azure.com/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01&$filter=principalId+eq+'{objectid}'
Note
ディレクトリ管理者の割り当ては多くありません。前のクエリが返す割り当ての数が多すぎる場合は、ディレクトリ スコープ レベルのみで、すべての割り当てに対してクエリを実行し、結果をフィルター処理することもできます。GET https://management.azure.com/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01&$filter=atScope()
前の呼び出しは、ロール割り当ての一覧を返します。 スコープが "/"
で、roleDefinitionId
が手順 1 で見つかったロール名 ID で終了し、principalId
がディレクトリ管理者の objectId と一致する、ロール割り当てを検索します。
サンプル ロールの割り当て
{
"value": [
{
"properties": {
"roleDefinitionId": "/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9",
"principalId": "{objectID}",
"scope": "/",
"createdOn": "2016-08-17T19:21:16.3422480Z",
"updatedOn": "2016-08-17T19:21:16.3422480Z",
"createdBy": "22222222-2222-2222-2222-222222222222",
"updatedBy": "22222222-2222-2222-2222-222222222222"
},
"id": "/providers/Microsoft.Authorization/roleAssignments/11111111-1111-1111-1111-111111111111",
"type": "Microsoft.Authorization/roleAssignments",
"name": "11111111-1111-1111-1111-111111111111"
}
],
"nextLink": null
}
繰り返しになりますが、name
パラメーターの ID を保存します。今回は 11111111-1111-1111-1111-111111111111 です。
最後に、ロール割り当て ID を使用して、elevateAccess
によって追加された割り当てを削除します。
DELETE https://management.azure.com/providers/Microsoft.Authorization/roleAssignments/11111111-1111-1111-1111-111111111111?api-version=2022-04-01
ディレクトリ アクティビティ ログの昇格アクセス ログ エントリを表示する
アクセス許可が昇格されると、ログにエントリが 1 つ追加されます。 Microsoft Entra ID のグローバル管理者として、アクセスがいつ昇格され、誰がアクセスしたかを確認できます。 アクセス許可の昇格ログのエントリは、標準のアクティビティ ログではなく、ディレクトリ アクティビティ ログに表示されます。 このセクションでは、アクセス権の昇格ログのエントリを表示するさまざまな方法について説明します。
Azure portal を使用してアクセス権の昇格ログのエントリを表示する
Azure Portal に全体管理者としてサインインします。
[監視] >[アクティビティ ログ] を開きます。
[アクティビティ] リストを [ディレクトリ アクティビティ] に変更します。
アクセス権を昇格させるアクションを示す、次の操作を探します。
Assigns the caller to User Access Administrator role
Azure CLI を使用してアクセス権の昇格ログのエントリを表示する
az login コマンドを使用して、全体管理者としてサインインします。
az rest コマンドを使用して、以下の呼び出しを行います。ここでは、タイムスタンプの例に示すように日付でフィルター処理を行い、ログを格納するファイル名を指定する必要があります。
url
は API を呼び出して、Microsoft.Insights のログを取得します。 出力は指定したファイルに保存されます。
az rest --url "https://management.azure.com/providers/Microsoft.Insights/eventtypes/management/values?api-version=2015-04-01&$filter=eventTimestamp ge '2021-09-10T20:00:00Z'" > output.txt
出力ファイルで、elevateAccess
を検索します。
ログは次のようになります。ここでは、アクションが発生したタイミングを示すタイムスタンプと、呼び出したユーザーが表示されています。
"submissionTimestamp": "2021-08-27T15:42:00.1527942Z",
"subscriptionId": "",
"tenantId": "33333333-3333-3333-3333-333333333333"
},
{
"authorization": {
"action": "Microsoft.Authorization/elevateAccess/action",
"scope": "/providers/Microsoft.Authorization"
},
"caller": "user@example.com",
"category": {
"localizedValue": "Administrative",
"value": "Administrative"
},
アクセスをグループに委任して、Azure CLI を使用してアクセス権の昇格ログのエントリを表示する
アクセス権の昇格ログのエントリを定期的に取得できるようにしたい場合は、アクセス権をグループに委任してから、Azure CLI を使用します。
Microsoft Entra ID >グループ を開きます。
新しいセキュリティ グループを作成し、グループ オブジェクト ID をメモします。
az login コマンドを使用して、全体管理者としてサインインします。
az role assignment create コマンドを使用して、Microsoft/Insights
にあるディレクトリ レベルでのみログを読み取りできるグループに Reader ロールを割り当てます。
az role assignment create --assignee "{groupId}" --role "Reader" --scope "/providers/Microsoft.Insights"
事前に作成したグループに、ログの閲覧を行うユーザーを追加します。
これで、グループ内のユーザーが定期的に az rest コマンドを実行して、アクセス権の昇格ログのエントリを表示できるようになりました。
az rest --url "https://management.azure.com/providers/Microsoft.Insights/eventtypes/management/values?api-version=2015-04-01&$filter=eventTimestamp ge '2021-09-10T20:00:00Z'" > output.txt
次のステップ