この記事では、Microsoft Entra 管理センター、Microsoft Graph PowerShell、または Microsoft Graph API を使用して、ユーザーとグループに Microsoft Entra ロールを割り当てる方法について説明します。 また、テナント、アプリケーションの登録、管理単位のスコープなど、さまざまなスコープでロールを割り当てる方法についても説明します。
直接ロールと間接ロールの両方の割り当てをユーザーに割り当てることができます。 ユーザーにグループ メンバーシップによってロールが割り当てられている場合は、そのユーザーをグループに追加してロールの割り当てを追加します。 詳細については、「 Microsoft Entra グループを使用してロールの割り当てを管理する」を参照してください。
Microsoft Entra ID では、通常、ロールはテナント全体に適用されるように割り当てられます。 ただし、アプリケーションの登録や管理単位など、さまざまなリソースに Microsoft Entra ロールを割り当てることもできます。 たとえば、ヘルプデスク管理者ロールを割り当てて、テナント全体ではなく特定の管理単位にのみ適用されるようにすることができます。 ロールの割り当てが適用されるリソースは、スコープとも呼ばれます。 ロールの割り当てのスコープの制限は、組み込みロールとカスタム ロールでサポートされています。 スコープの詳細については、「 Microsoft Entra ID でのロールベースのアクセス制御 (RBAC) の概要」を参照してください。
PIM における Microsoft Entra のロール
Microsoft Entra ID P2 ライセンスと Privileged Identity Management (PIM) をお持ちの場合は、ロールを割り当てるときに、ユーザーにロールの割り当ての資格を与えたり、ロールの割り当ての開始時刻と終了時刻を定義したりするなどの追加機能があります。 PIM で Microsoft Entra ロールを割り当てる方法については、次の記事を参照してください。
前提 条件
- 特権ロール管理者
-
PowerShell を使用する場合の Microsoft Graph PowerShell モジュール
- Microsoft Graph API 用 Graph エクスプローラーを使用する場合の管理者の同意
詳細については、「powerShell または Graph Explorerを使用するための 前提条件」を参照してください。
テナント スコープを使用してロールを割り当てる
このセクションでは、テナント スコープでロールを割り当てる方法について説明します。
Microsoft Entra 管理センターに、少なくとも特権ロール管理者としてサインインします。
Entra ID>役割と管理者に移動します。
ロール名を選択してロールを開きます。 ロールの横にチェック マークを追加しないでください。
[ 割り当ての追加] を選択し、このロールに割り当てるユーザーまたはグループを選択します。
ロール割り当て可能なグループのみが表示されます。 グループが一覧にない場合は、ロール割り当て可能なグループを作成する必要があります。 詳細については、「 Microsoft Entra ID でロール割り当て可能なグループを作成する」を参照してください。
次のスクリーンショットとエクスペリエンスが異なる場合は、Microsoft Entra ID P2 と PIM を使用している可能性があります。 詳細については、「Microsoft Entra の役割を Privileged Identity Managementに割り当てる 」を参照してください。
[ 追加] を選択してロールを割り当てます。
PowerShell を使用して Microsoft Entra ロールを割り当てるには、次の手順に従います。
PowerShell ウィンドウを開きます。 必要に応じて、 Install-Module を使用して Microsoft Graph PowerShell をインストールします。 詳細については、「powerShell または Graph Explorerを使用するための 前提条件」を参照してください。
Install-Module Microsoft.Graph -Scope CurrentUser
PowerShell ウィンドウで、 Connect-MgGraph を使用してテナントにサインインします。
Connect-MgGraph -Scopes "RoleManagement.ReadWrite.Directory"
Get-MgUser を使用してユーザーを取得します。
$user = Get-MgUser -Filter "userPrincipalName eq 'alice@contoso.com'"
Get-MgGroup を使用して、ロール割り当て可能なグループを取得します。
$group = Get-MgGroup -Filter "DisplayName eq 'Contoso Helpdesk'"
Get-MgRoleManagementDirectoryRoleDefinition を使用して、割り当てるロールを取得します。
すべての組み込みロールのロール定義 ID の一覧については、Microsoft Entra 組み込みロール を参照してください。
$roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition -Filter "displayName eq 'Billing Administrator'"
テナントをロールの割り当てのスコープとして設定します。
$directoryScope = '/'
New-MgRoleManagementDirectoryRoleAssignment を使用してロールを割り当てます。
$roleAssignment = New-MgRoleManagementDirectoryRoleAssignment `
-DirectoryScopeId $directoryScope -PrincipalId $user.Id `
-RoleDefinitionId $roleDefinition.Id
$roleAssignment = New-MgRoleManagementDirectoryRoleAssignment `
-DirectoryScopeId $directoryScope -PrincipalId $group.Id `
-RoleDefinitionId $roleDefinition.Id
ロールを割り当てる別の方法を次に示します。
$params = @{
"directoryScopeId" = "/"
"principalId" = $group.Id
"roleDefinitionId" = $roleDefinition.Id
}
$roleAssignment = New-MgRoleManagementDirectoryRoleAssignment -BodyParameter $params
Graph エクスプローラーで Microsoft Graph API を使用してロールを割り当てるには、次の手順に従います。
Graph エクスプローラーにサインインします。
List users API を使用してユーザーを取得します。
GET https://graph.microsoft.com/v1.0/users?$filter=userPrincipalName eq 'alice@contoso.com'
List groups API を使用して、ロール割り当て可能なグループを取得します。
GET https://graph.microsoft.com/v1.0/groups?$filter=displayName eq 'Contoso Helpdesk'
List unifiedRoleDefinitions API を使用して、割り当てるロールを取得します。
すべての組み込みロールのロール定義 ID の一覧については、Microsoft Entra 組み込みロール を参照してください。
GET https://graph.microsoft.com/v1.0/rolemanagement/directory/roleDefinitions?$filter=displayName eq 'Billing Administrator'
Create unifiedRoleAssignment API を使用してロールを割り当てます。
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments
{
"@odata.type": "#microsoft.graph.unifiedRoleAssignment",
"principalId": "<Object ID of user or group>",
"roleDefinitionId": "<ID of role definition>",
"directoryScopeId": "/"
}
応答
HTTP/1.1 201 Created
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#roleManagement/directory/roleAssignments/$entity",
"id": "<Role assignment ID>",
"roleDefinitionId": "<ID of role definition>",
"principalId": "<Object ID of user or group>",
"directoryScopeId": "/"
}
プリンシパルまたはロールの定義が存在しない場合、応答は見つかりません。
応答
HTTP/1.1 404 Not Found
アプリ登録スコープでロールを割り当てる
組み込みロールとカスタム ロールは、組織内のすべてのアプリ登録に対するアクセス許可を付与するために、テナント スコープで既定で割り当てられます。 さらに、カスタム ロールと関連する組み込みロール (Microsoft Entra リソースの種類に応じて) を、1 つの Microsoft Entra リソースのスコープで割り当てることもできます。 これにより、2 つ目のカスタム ロールを作成しなくても、1 つのアプリの資格情報と基本プロパティを更新するアクセス許可をユーザーに付与できます。
このセクションでは、アプリケーション登録スコープでロールを割り当てる方法について説明します。
Microsoft Entra 管理センターに、少なくともアプリケーション開発者としてサインインします。
Entra ID>アプリ登録に移動します。
アプリケーションを選択します。 検索ボックスを使用して、目的のアプリを見つけることができます。
テナント内のアプリ登録の完全な一覧を表示するには、[すべてのアプリケーション を選択する必要がある場合があります。
左側のナビゲーション メニューから [ ロールと管理者 ] を選択すると、アプリの登録で割り当てることができるすべてのロールの一覧が表示されます。
目的のロールを選択します。
ヒント
Microsoft Entra の組み込みロールまたはカスタム ロールの一覧はここには表示されません。 これは想定されています。 アプリの登録の管理にのみ関連するアクセス許可を持つロールが表示されます。
[ 割り当ての追加] を選択し、このロールを割り当てるユーザーまたはグループを選択します。
[ 追加] を選択して、アプリの登録をスコープにしたロールを割り当てます。
PowerShell を使用してアプリケーション スコープで Microsoft Entra ロールを割り当てるには、次の手順に従います。
PowerShell ウィンドウを開きます。 必要に応じて、 Install-Module を使用して Microsoft Graph PowerShell をインストールします。 詳細については、「powerShell または Graph Explorerを使用するための 前提条件」を参照してください。
Install-Module Microsoft.Graph -Scope CurrentUser
PowerShell ウィンドウで、 Connect-MgGraph を使用してテナントにサインインします。
Connect-MgGraph -Scopes "Application.Read.All","RoleManagement.Read.Directory","User.Read.All","RoleManagement.ReadWrite.Directory"
Get-MgUser を使用してユーザーを取得します。
$user = Get-MgUser -Filter "userPrincipalName eq 'alice@contoso.com'"
ユーザーではなくサービス プリンシパルにロールを割り当てるには、 Get-MgServicePrincipal コマンドを使用します。
Get-MgRoleManagementDirectoryRoleDefinition を使用して、割り当てるロールを取得します。
$roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition `
-Filter "displayName eq 'Application Administrator'"
Get-MgApplication を使用して、ロールの割り当てのスコープを設定するアプリの登録を取得します。
$appRegistration = Get-MgApplication -Filter "displayName eq 'f/128 Filter Photos'"
$directoryScope = '/' + $appRegistration.Id
New-MgRoleManagementDirectoryRoleAssignment を使用してロールを割り当てます。
$roleAssignment = New-MgRoleManagementDirectoryRoleAssignment `
-DirectoryScopeId $directoryScope -PrincipalId $user.Id `
-RoleDefinitionId $roleDefinition.Id
Graph Explorer で Microsoft Graph API を使用して、アプリケーション スコープでロールを割り当てるには、次の手順に従います。
Graph エクスプローラーにサインインします。
List users API を使用してユーザーを取得します。
GET https://graph.microsoft.com/v1.0/users?$filter=userPrincipalName eq 'alice@contoso.com'
List unifiedRoleDefinitions API を使用して、割り当てるロールを取得します。
GET https://graph.microsoft.com/v1.0/rolemanagement/directory/roleDefinitions?$filter=displayName eq 'Application Administrator'
List applications API を使用して、ロールの割り当てのスコープを設定するアプリケーションを取得します。
GET https://graph.microsoft.com/v1.0/applications?$filter=displayName eq 'f/128 Filter Photos'
Create unifiedRoleAssignment API を使用してロールを割り当てます。
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments
{
"@odata.type": "#microsoft.graph.unifiedRoleAssignment",
"principalId": "<Object ID of user>",
"roleDefinitionId": "<ID of role definition>",
"directoryScopeId": "/<Object ID of app registration>"
}
応答
HTTP/1.1 201 Created
手記
この例では、管理単位セクションとは異なり、directoryScopeId
は /<ID>
として指定されています。 これは意図的な設計です。
/<ID>
のスコープは、プリンシパルがその Microsoft Entra オブジェクトを管理できることを意味します。 スコープ /administrativeUnits/<ID>
は、プリンシパルが管理単位自体ではなく、(プリンシパルが割り当てられているロールに基づいて) 管理単位のメンバーを管理できることを意味します。
管理単位スコープでロールを割り当てる
Microsoft Entra ID では、より詳細な管理制御のために、1 つ以上の 管理単位に制限されたスコープを持つ Microsoft Entra ロールを割り当てることができます。 管理単位のスコープで Microsoft Entra ロールが割り当てられている場合、役割のアクセス許可は管理単位自体のメンバーを管理する場合にのみ適用され、テナント全体の設定や構成には適用されません。
たとえば、管理単位のスコープでグループ管理者ロールが割り当てられている管理者は、管理単位のメンバーであるグループを管理できますが、テナント内の他のグループを管理することはできません。 また、有効期限やグループの名前付けポリシーなど、グループに関連するテナント レベルの設定を管理することもできません。
このセクションでは、管理単位スコープで Microsoft Entra ロールを割り当てる方法について説明します。
前提 条件
- 各管理単位管理者の Microsoft Entra ID P1 または P2 ライセンス
- 管理単位メンバー向けの Microsoft Entra ID 無料ライセンス
- 特権ロール管理者
- PowerShell を使用する場合の Microsoft Graph PowerShell モジュール
- Microsoft Graph API 用 Graph エクスプローラーを使用する場合の管理者の同意
詳細については、「powerShell または Graph Explorerを使用するための 前提条件」を参照してください。
管理単位スコープで割り当てることができるロール
次の Microsoft Entra ロールは、管理単位スコープで割り当てることができます。 さらに、 カスタム ロールのアクセス許可 にユーザー、グループ、またはデバイスに関連するアクセス許可が少なくとも 1 つ含まれている限り、任意のカスタム ロールを管理単位スコープで割り当てることができます。
役割 |
説明 |
認証管理者 |
割り当てられた管理単位でのみ、管理者以外のユーザーの認証方法情報を表示、設定、リセットするためのアクセス権を持ちます。 |
クラウド デバイス管理者 |
Microsoft Entra ID でデバイスを管理するための制限付きアクセス。 |
グループ管理者 |
割り当てられた管理単位内のグループのすべての側面のみを管理できます。 |
ヘルプデスク管理者 |
割り当てられた管理単位でのみ、管理者以外のパスワードをリセットできます。 |
ライセンス管理者 |
管理単位内でのみ、ライセンスの割り当てを割り当て、削除、および更新できます。 |
パスワード管理者 |
割り当てられた管理単位内の管理者以外のパスワードのみをリセットできます。 |
プリンター管理者 |
プリンターとプリンター コネクタを管理できます。 詳細については、「 ユニバーサル印刷でのプリンターの管理の委任」を参照してください。 |
特権認証管理者 |
任意のユーザー (管理者または管理者以外) の認証方法の情報を表示、設定、リセットするためにアクセスできます。 |
SharePoint 管理者 |
割り当てられた管理単位でのみ、Microsoft 365 グループを管理できます。 管理単位の Microsoft 365 グループに関連付けられている SharePoint サイトの場合、Microsoft 365 管理センターを使用してサイトのプロパティ (サイト名、URL、外部共有ポリシー) を更新することもできます。 SharePoint 管理センターまたは SharePoint API を使用してサイトを管理することはできません。 |
Teams 管理者 |
割り当てられた管理単位でのみ、Microsoft 365 グループを管理できます。 割り当てられた管理単位内のグループに関連付けられているチームの Microsoft 365 管理センターでチーム メンバーを管理できます。 Teams 管理センターを使用できません。 |
Teams デバイス管理者 |
Teams 認定デバイスで管理関連のタスクを実行できます。 |
ユーザー管理者 |
割り当てられた管理単位内の制限付き管理者のパスワードのリセットなど、ユーザーとグループのすべての側面を管理できます。 現在、ユーザーのプロフィール写真を管理することはできません。 |
<カスタム ロール> |
カスタム ロールの定義に従って、ユーザー、グループ、またはデバイスに適用されるアクションを実行できます。 |
特定のロールのアクセス許可は、管理単位のスコープで割り当てられている場合、管理者以外のユーザーにのみ適用されます。 言い換えると、ヘルプデスク管理者は、管理単位のユーザーが 管理者 ロールを持っていない場合にのみ、管理単位のユーザーのパスワードをリセットできます。 アクションのターゲットが別の管理者である場合、次のアクセス許可の一覧が制限されます。
- ユーザー認証方法の読み取りと変更、またはユーザー パスワードのリセット
- 電話番号、連絡用メール アドレス、Open Authorization (OAuth) 秘密鍵などの機密性の高いユーザー プロパティを変更する
- ユーザー アカウントを削除または復元する
管理単位スコープで割り当てることができるセキュリティ プリンシパル
次のセキュリティ プリンシパルは、管理単位スコープを持つロールに割り当てることができます。
- ユーザー
- Microsoft Entra の [ロールを割り当て可能] グループ
- サービス プリンシパル
サービス プリンシパルとゲスト ユーザー
サービス プリンシパルとゲスト ユーザーは、オブジェクトの読み取りに対応するアクセス許可も割り当てられない限り、管理単位をスコープとしたロールの割り当てを使用できません。 これは、サービス プリンシパルとゲスト ユーザーは、管理アクションを実行するために必要なディレクトリ読み取りアクセス許可を既定で受け取らないためです。 サービス プリンシパルまたはゲスト ユーザーが管理単位をスコープとするロールの割り当てを使用できるようにするには、テナント スコープで ディレクトリ閲覧者 ロール (または読み取りアクセス許可を含む別のロール) を割り当てる必要があります。
現在、管理単位をスコープにしたディレクトリ読み取りアクセス許可を割り当てることはできません。 ユーザーの既定のアクセス許可の詳細については、「既定のユーザーアクセス許可 」を参照してください。
管理単位スコープでロールを割り当てる
このセクションでは、管理単位スコープでロールを割り当てる方法について説明します。
Microsoft Entra 管理センターに、少なくとも特権ロール管理者としてサインインします。
Entra ID>役割と管理者>管理単位を閲覧する。
管理単位を選択します。
左側のナビゲーション メニューから [ ロールと管理者 ] を選択すると、管理単位で割り当てることができるすべてのロールの一覧が表示されます。
目的のロールを選択します。
ヒント
Microsoft Entra の組み込みロールまたはカスタム ロールの一覧はここには表示されません。 これは想定されています。 管理単位内でサポートされているオブジェクトに関連するアクセス許可を持つロールを示します。 管理単位内でサポートされているオブジェクトの一覧については、「Microsoft Entra IDの管理単位 参照してください。
[ 割り当ての追加] を選択し、このロールを割り当てるユーザーまたはグループを選択します。
[ 追加] を選択して、管理単位にスコープが設定されたロールを割り当てます。
PowerShell を使用して管理単位スコープで Microsoft Entra ロールを割り当てるには、次の手順に従います。
PowerShell ウィンドウを開きます。 必要に応じて、 Install-Module を使用して Microsoft Graph PowerShell をインストールします。 詳細については、「powerShell または Graph Explorerを使用するための 前提条件」を参照してください。
Install-Module Microsoft.Graph -Scope CurrentUser
PowerShell ウィンドウで、 Connect-MgGraph を使用してテナントにサインインします。
Connect-MgGraph -Scopes "Directory.Read.All","RoleManagement.Read.Directory","User.Read.All","RoleManagement.ReadWrite.Directory"
Get-MgUser を使用してユーザーを取得します。
$user = Get-MgUser -Filter "userPrincipalName eq 'alice@contoso.com'"
Get-MgRoleManagementDirectoryRoleDefinition を使用して、割り当てるロールを取得します。
$roleDefinition = Get-MgRoleManagementDirectoryRoleDefinition `
-Filter "displayName eq 'User Administrator'"
Get-MgDirectoryAdministrativeUnit を使用して、ロールの割り当てのスコープを設定する管理単位を取得します。
$adminUnit = Get-MgDirectoryAdministrativeUnit -Filter "displayName eq 'Seattle Admin Unit'"
$directoryScope = '/administrativeUnits/' + $adminUnit.Id
New-MgRoleManagementDirectoryRoleAssignment を使用してロールを割り当てます。
$roleAssignment = New-MgRoleManagementDirectoryRoleAssignment `
-DirectoryScopeId $directoryScope -PrincipalId $user.Id `
-RoleDefinitionId $roleDefinition.Id
Graph エクスプローラーで Microsoft Graph API を使用して、管理単位スコープでロールを割り当てるには、次の手順に従います。
Create unifiedRoleAssignment API を使用してロールを割り当てる
Graph エクスプローラーにサインインします。
List users API を使用してユーザーを取得します。
GET https://graph.microsoft.com/v1.0/users?$filter=userPrincipalName eq 'alice@contoso.com'
List unifiedRoleDefinitions API を使用して、割り当てるロールを取得します。
GET https://graph.microsoft.com/v1.0/rolemanagement/directory/roleDefinitions?$filter=displayName eq 'User Administrator'
List administrativeUnits API を使用して、ロールの割り当てのスコープを設定する管理単位を取得します。
GET https://graph.microsoft.com/v1.0/directory/administrativeUnits?$filter=displayName eq 'Seattle Admin Unit'
Create unifiedRoleAssignment API を使用してロールを割り当てます。
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments
{
"@odata.type": "#microsoft.graph.unifiedRoleAssignment",
"principalId": "<Object ID of user>",
"roleDefinitionId": "<ID of role definition>",
"directoryScopeId": "/administrativeUnits/<Object ID of administrative unit>"
}
応答
HTTP/1.1 201 Created
ロールがサポートされていない場合、応答は不適切な要求です。
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."
}
}
}
手記
この例では、directoryScopeId
は /administrativeUnits/<ID>
ではなく /<ID>
として指定されています。 これは意図的な設計です。 スコープ /administrativeUnits/<ID>
は、プリンシパルが管理単位自体ではなく、(プリンシパルが割り当てられているロールに基づいて) 管理単位のメンバーを管理できることを意味します。
/<ID>
のスコープは、プリンシパルがその Microsoft Entra オブジェクト自体を管理できることを意味します。 アプリ登録セクションでは、アプリの登録をスコープとするロールによってオブジェクト自体を管理する権限が付与されるため、スコープが /<ID>
されていることがわかります。
[scopedRoleMember API の追加] を使用してロールを割り当てる
または、 scopedRoleMember API を使用して、管理単位スコープを持つロールを割り当てることができます。
依頼
POST /directory/administrativeUnits/{admin-unit-id}/scopedRoleMembers
本体
{
"roleId": "roleId-value",
"roleMemberInfo": {
"id": "id-value"
}
}
次の手順