Microsoft Entra ID で Microsoft Graph API を使用してカスタム管理者ロールを割り当てる
Microsoft Graph API を使って、ユーザー アカウントにロールを割り当てる方法を自動化することができます。 この記事では、roleAssignments に対する POST、GET、DELETE の各操作について説明します。
前提条件
- Microsoft Entra ID P1 または P2 ライセンス
- 特権ロール管理者
- 管理者の同意 (Microsoft Graph API の Graph エクスプローラーを使用する場合)
詳細については、「PowerShell または Graph エクスプローラーを使用するための前提条件」をご覧ください。
RoleAssignment での POST 操作
Create unifiedRoleAssignment API を使用してロールを割り当てます。
例 1:ユーザーとロール定義間でロールの割り当てを作成する
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments
Content-type: application/json
Body
{
"@odata.type": "#microsoft.graph.unifiedRoleAssignment",
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"roleDefinitionId": "194ae4cb-b126-40b2-bd5b-6091b380977d",
"directoryScopeId": "/" // Don't use "resourceScope" attribute in Azure AD role assignments. It will be deprecated soon.
}
Response
HTTP/1.1 201 Created
例 2:プリンシパルまたはロールの定義が存在しないロールの割り当てを作成する
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments
Body
{
"@odata.type": "#microsoft.graph.unifiedRoleAssignment",
"principalId": "aaaaaaaa-bbbb-cccc-1111-2222222222229",
"roleDefinitionId": "194ae4cb-b126-40b2-bd5b-6091b380977d",
"directoryScopeId": "/" //Don't use "resourceScope" attribute in Azure AD role assignments. It will be deprecated soon.
}
Response
HTTP/1.1 404 Not Found
例 3: 1 つのリソース スコープに対してロールの割り当てを作成する
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments
Body
{
"@odata.type": "#microsoft.graph.unifiedRoleAssignment",
"principalId": "aaaaaaaa-bbbb-cccc-1111-2222222222229",
"roleDefinitionId": "00000000-0000-0000-0000-000000000000", //role template ID of a custom role
"directoryScopeId": "/13ff0c50-18e7-4071-8b52-a6f08e17c8cc" //object ID of an application
}
Response
HTTP/1.1 201 Created
例 4: サポートされていない組み込みロール定義に対して、管理単位のスコープが指定されたロールの割り当てを作成する
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments
Body
{
"@odata.type": "#microsoft.graph.unifiedRoleAssignment",
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"roleDefinitionId": "29232cdf-9323-42fd-ade2-1d097af3e4de", //role template ID of Exchange Administrator
"directoryScopeId": "/administrativeUnits/13ff0c50-18e7-4071-8b52-a6f08e17c8cc" //object ID of an administrative unit
}
Response
HTTP/1.1 400 Bad Request
{
"odata.error":
{
"code":"Request_BadRequest",
"message":
{
"message":"The given built-in role is not supported to be assigned to a single resource scope."
}
}
}
管理単位のスコープに対しては、組み込みロールのサブセットのみが有効です。 管理単位でサポートされている組み込みロールの一覧については、このドキュメントを参照してください。
RoleAssignment での GET 操作
List unifiedRoleAssignments API を使用して、ロールの割り当てを取得します。
例 5:特定のプリンシパルのロールの割り当てを取得する
GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments?$filter=principalId+eq+'<object-id-of-principal>'
回答
HTTP/1.1 200 OK
{
"value":[
{
"id": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0uIiSDKQoTVJrLE9etXyrY0-1"
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"roleDefinitionId": "10dae51f-b6af-4016-8d66-8c2a99b929b3",
"directoryScopeId": "/"
} ,
{
"id": "C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1wIiSDKQoTVJrLE9etXyrY0-1"
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"roleDefinitionId": "fe930be7-5e62-47db-91af-98c3a49a38b1",
"directoryScopeId": "/"
}
]
}
例 6: 特定のロール定義のロールの割り当てを取得する
GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments?$filter=roleDefinitionId+eq+'<object-id-or-template-id-of-role-definition>'
回答
HTTP/1.1 200 OK
{
"value":[
{
"id": "C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1wIiSDKQoTVJrLE9etXyrY0-1"
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"roleDefinitionId": "fe930be7-5e62-47db-91af-98c3a49a38b1",
"directoryScopeId": "/"
}
]
}
例 7: ID を指定してロールの割り当てを取得する
GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments/lAPpYvVpN0KRkAEhdxReEJC2sEqbR_9Hr48lds9SGHI-1
回答
HTTP/1.1 200 OK
{
"id": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0uIiSDKQoTVJrLE9etXyrY0-1",
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"roleDefinitionId": "10dae51f-b6af-4016-8d66-8c2a99b929b3",
"directoryScopeId": "/"
}
例 8:特定のスコープのロールの割り当てを取得する
GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments?$filter=directoryScopeId+eq+'/d23998b1-8853-4c87-b95f-be97d6c6b610'
Response
HTTP/1.1 200 OK
{
"value":[
{
"id": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0uIiSDKQoTVJrLE9etXyrY0-1"
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"roleDefinitionId": "10dae51f-b6af-4016-8d66-8c2a99b929b3",
"directoryScopeId": "/d23998b1-8853-4c87-b95f-be97d6c6b610"
} ,
{
"id": "C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1wIiSDKQoTVJrLE9etXyrY0-1"
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"roleDefinitionId": "00000000-0000-0000-0000-000000000000",
"directoryScopeId": "/d23998b1-8853-4c87-b95f-be97d6c6b610"
}
]
}
RoleAssignment での DELETE 操作
Delete unifiedRoleAssignment API を使用して、ロールの割り当てを削除します。
例 9:ユーザーとロール定義間のロールの割り当てを削除する。
DELETE https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments/lAPpYvVpN0KRkAEhdxReEJC2sEqbR_9Hr48lds9SGHI-1
Response
HTTP/1.1 204 No Content
例 10:存在しなくなったロールの割り当てを削除する
DELETE https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments/lAPpYvVpN0KRkAEhdxReEJC2sEqbR_9Hr48lds9SGHI-1
Response
HTTP/1.1 404 Not Found
例 11:自分と全体管理者のロール定義間のロールの割り当てを削除する
DELETE https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments/lAPpYvVpN0KRkAEhdxReEJC2sEqbR_9Hr48lds9SGHI-1
Response
HTTP/1.1 400 Bad Request
{
"odata.error":
{
"code":"Request_BadRequest",
"message":
{
"lang":"en",
"value":"Removing self from Global Administrator built-in role is not allowed"},
"values":null
}
}
}
テナントに全体管理者がいないシナリオを回避するために、ユーザーが自分の全体管理者ロールを削除することはできません。 自分に割り当てられている他のロールを削除することはできます。
次のステップ
- Microsoft Entra 管理ロール フォーラムでお気軽にご意見をお寄せください
- ロールのアクセス許可の詳細については、「Microsoft Entra 組み込みロール」を参照してください
- 既定のユーザー アクセス許可については、アクセス許可に関する既定のゲストとメンバー ユーザーの比較に関する記事を参照してください。