次の方法で共有


MICROSOFT ENTRA ロール API に PIM を使用して特権ロールを割り当てる

Privileged Identity Management (PIM) は、アクセスがアクティブな場合に制限し、アクセス スコープを管理し、特権アクセスの監査可能なログを提供することで、組織が特権アクセスに関連するリスクを軽減するのに役立ちます。 特権アクセスは、通常、ロール割り当て可能なグループまたは管理者ロールを通じて管理目的で付与されます。

Contoso は、セキュリティ グループを使用してユーザーにMicrosoft Entraロールを割り当てることで、いくつかの管理機能を委任したいと考えています。 会社は、永続的にアクティブな特権ロールの代わりに適格性を割り当てます。 この方法は、次の理由で有効です。

  • グループ メンバーを削除または追加すると、管理者も削除または追加されます。
  • グループ メンバーはロールの割り当てを継承します。 個々のユーザーにロールを直接割り当てるのではなく、グループにさらにロールを割り当てることができます。
  • 永続的にアクティブな特権ではなく適格性を割り当てると、 Just-In-Time アクセスが適用され、特権タスクを実行するための一時的なアクセス許可が付与されます。 グループ メンバーが特権を必要とする場合は、割り当てを一時的にアクティブ化します。 すべてのロールのアクティブ化は監査可能です。

ロールの適格性は、次の 2 つの方法でグループを通じてモデル化できます。

  • グループに永続的なロールの割り当てを付与し、プリンシパルにグループの資格を付与します。 このシナリオでは、グループ メンバーがグループ メンバーシップをアクティブ化して、アクティブなロールの割り当てを取得します。
  • グループに適格なロールの割り当てを付与し、プリンシパルをグループの永続的メンバーにします。 このシナリオでは、グループ メンバーがロールの割り当てをアクティブ化して特権を取得します。

このチュートリアルでは、以下を実行する方法について説明します。

  • ロール割り当て可能なセキュリティ グループを作成します。
  • 特権ロールの対象となるロール割り当て可能なセキュリティ グループを作成します。
  • 対象となる割り当てをアクティブ化することで、ユーザーに Just-In-Time アクセス権を付与します。

前提条件

このチュートリアルを完了するには、次のものが必要です。

  • Microsoft Entra ID P2 または Microsoft Entra ID ガバナンス ライセンスを持つMicrosoft Entra テナント
  • Graph などの API クライアントは、少なくとも特権ロール管理者ロールを持つアカウントでサインインエクスプローラー
  • Microsoft Authenticator アプリへのアクセス権を持つ MFA に対して有効なテスト ユーザー
  • 委任されたアクセス許可:
    • Group.ReadWrite.All グループを作成するには
    • RoleManagement.ReadWrite.Directory グループロールを割り当て可能にし、適格なロールとアクティブなロールの割り当てを構成および管理します。 このアクセス許可は、テナント内のすべてのユーザーに付与する必要があります。

手順 1: ロール割り当て可能なセキュリティ グループを作成する

自分をグループ所有者として割り当て、自分自身とテスト ユーザーをメンバーとして追加します。

要求: ロール割り当て可能なグループを作成する

POST https://graph.microsoft.com/v1.0/groups
Content-type: application/json

{
    "description": "IT Helpdesk to support Contoso employees",
    "displayName": "IT Helpdesk (User)",
    "mailEnabled": false,
    "mailNickname": "userHelpdesk",
    "securityEnabled": true,
    "isAssignableToRole": true,
    "owners@odata.bind": [
        "https://graph.microsoft.com/v1.0/users/e2330663-f949-41b5-a3dc-faeb793e14c6"
    ],
    "members@odata.bind": [
        "https://graph.microsoft.com/v1.0/users/e2330663-f949-41b5-a3dc-faeb793e14c6",
        "https://graph.microsoft.com/v1.0/users/d9771b4c-06c5-491a-92cb-3aa4e225a725"
    ]
}

応答

注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups/$entity",
    "id": "1189bbdd-1268-4a72-8c6d-6fe77d28f2e3",
    "description": "IT Helpdesk to support Contoso employees",
    "displayName": "IT Helpdesk (User)",
    "groupTypes": [],
    "isAssignableToRole": true,
    "mailEnabled": false,
    "mailNickname": "userHelpdesk",
    "securityEnabled": true
}

手順 2: unifiedRoleEligibilityScheduleRequest を作成する

セキュリティ グループを ユーザー管理者 ロールの対象として 1 年間割り当てます。 対象となる割り当てをテナント全体にスコープを設定します。 テナント レベルのスコープを使用すると、ユーザー管理者は、グローバル管理者などの特権の高いユーザーを除き、テナント内のすべてのユーザーを管理できます。

要求

POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleEligibilityScheduleRequests
Content-type: application/json

{
    "action": "AdminAssign",
    "justification": "Assign User Admin eligibility to IT Helpdesk (User) group",
    "roleDefinitionId": "fe930be7-5e62-47db-91af-98c3a49a38b1",
    "directoryScopeId": "/",
    "principalId": "1189bbdd-1268-4a72-8c6d-6fe77d28f2e3",
    "scheduleInfo": {
        "startDateTime": "2025-03-21T11:06:00Z",
        "expiration": {
            "endDateTime": "2026-03-21T00:00:00Z",
            "type": "AfterDateTime"
        }
    }
}

応答

注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#roleManagement/directory/roleEligibilityScheduleRequests/$entity",
    "id": "12956159-24b8-4619-b9ea-8ce21f81a38f",
    "status": "Provisioned",
    "createdDateTime": "2025-03-21T11:07:23.4563591Z",
    "completedDateTime": "2025-03-21T11:07:24.8573295Z",
    "action": "adminAssign",
    "principalId": "1189bbdd-1268-4a72-8c6d-6fe77d28f2e3",
    "roleDefinitionId": "fe930be7-5e62-47db-91af-98c3a49a38b1",
    "directoryScopeId": "/",
    "targetScheduleId": "12956159-24b8-4619-b9ea-8ce21f81a38f",
    "justification": "Assign User Admin eligibility to IT Helpdesk (User) group",
    "createdBy": {
        "application": null,
        "device": null,
        "user": {
            "id": "e2330663-f949-41b5-a3dc-faeb793e14c6"
        }
    },
    "scheduleInfo": {
        "startDateTime": "2025-03-21T11:07:24.8573295Z",
        "expiration": {
            "type": "afterDateTime",
            "endDateTime": "2026-03-21T00:00:00Z",
            "duration": null
        }
    },
    "ticketInfo": {}
}

手順 3: ユーザーの現在のロールの割り当てを確認する

グループ メンバーはユーザー管理者ロールの対象になりましたが、アクティブ化するまでロールを使用できません。 次の要求は、ユーザーの既存のアクティブなロールの割り当てを確認します。 要求は空のコレクションを返します。

GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments?$filter=principalId eq 'd9771b4c-06c5-491a-92cb-3aa4e225a725'

手順 4: ユーザーが適格な割り当てを自己アクティブ化する

インシデント チケット CONTOSO: Security-012345 では、すべての従業員更新トークンを無効にする必要があります。 IT ヘルプデスク メンバーである Aline は、このタスクを解決したいと考えています。

スマートフォンで Authenticator アプリを起動し、Aline Dupuy のアカウントを開きます。

Graph エクスプローラーに Aline としてサインインします。 次の要求は、ユーザー管理者ロールを 5 時間アクティブ化する方法を示しています。

要求

ロールをアクティブにするには、 roleAssignmentScheduleRequests エンドポイントを呼び出します。 この要求では、 UserActivate アクションを使用して、適格な割り当てをアクティブ化できます。

  • principalId の場合は、(Aline の) ID の値を指定します
  • roleDefinitionId は、対象となるロール (この場合はユーザー管理者ロール) の ID です。
  • 要求をアクティブ化するための監査可能な正当な理由を提供するチケット システムの詳細を入力します。
POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignmentScheduleRequests
Content-type: application/json

{
    "action": "SelfActivate",
    "principalId": "d9771b4c-06c5-491a-92cb-3aa4e225a725",
    "roleDefinitionId": "fe930be7-5e62-47db-91af-98c3a49a38b1",
    "directoryScopeId": "/",
    "justification": "Need to invalidate all app refresh tokens for Contoso users.",
    "scheduleInfo": {
        "startDateTime": "2025-03-21T11:46:00.000Z",
        "expiration": {
            "type": "AfterDuration",
            "duration": "PT5H"
        }
    },
    "ticketInfo": {
        "ticketNumber": "CONTOSO:Security-012345",
        "ticketSystem": "Contoso ICM"
    }
}

応答

注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#roleManagement/directory/roleAssignmentScheduleRequests/$entity",
    "id": "fdde3804-2cd0-4349-b1f6-674927c94f0b",
    "status": "Provisioned",
    "createdDateTime": "2025-03-21T11:46:41.9645736Z",
    "completedDateTime": "2025-03-21T11:46:42.4165908Z",
    "action": "selfActivate",
    "principalId": "d9771b4c-06c5-491a-92cb-3aa4e225a725",
    "roleDefinitionId": "fe930be7-5e62-47db-91af-98c3a49a38b1",
    "directoryScopeId": "/",
    "isValidationOnly": false,
    "targetScheduleId": "fdde3804-2cd0-4349-b1f6-674927c94f0b",
    "justification": "Need to invalidate all app refresh tokens for Contoso users.",
    "createdBy": {
        "user": {
            "id": "d9771b4c-06c5-491a-92cb-3aa4e225a725"
        }
    },
    "scheduleInfo": {
        "startDateTime": "2025-03-21T11:46:42.4165908Z",
        "expiration": {
            "type": "afterDuration",
            "endDateTime": null,
            "duration": "PT5H"
        }
    },
    "ticketInfo": {
        "ticketNumber": "CONTOSO:Security-012345",
        "ticketSystem": "Contoso ICM"
    }
}

手順 5: ロールの割り当てを確認する

割り当てを確認するには、次の要求を実行します。 応答オブジェクトは、新しくアクティブ化されたロールの割り当てを返し、その状態を Provisioned または Grantedに設定します。 新しい特権を使用して、割り当てがアクティブになっている 5 時間以内に許可されたアクションを実行します。 アクティブな割り当ては 5 時間後に期限切れになりますが、 IT サポート (ユーザー) グループのメンバーシップを通じて、ユーザー管理者ロールの資格が得られます。

GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignmentScheduleRequests/filterByCurrentUser(on='principal')?$expand=roleDefinition

手順 6: リソースをクリーンアップする

特権ロール管理者としてサインインし、このチュートリアル用に作成したリソースを削除します。

グループのロールの資格を取り消す

要求

POST https://graph.microsoft.com/v1.0/roleManagement/directory/roleEligibilityScheduleRequests
Content-type: application/json

{
    "action": "AdminRemove",
    "principalId": "1189bbdd-1268-4a72-8c6d-6fe77d28f2e3",
    "roleDefinitionId": "fe930be7-5e62-47db-91af-98c3a49a38b1",
    "directoryScopeId": "/"
}

応答

注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。

HTTP/1.1 201 Created
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#roleManagement/directory/roleEligibilityScheduleRequests/$entity",
    "id": "749ebf39-ffa9-4f43-aaaf-58e0d41f9efc",
    "status": "Revoked",
    "createdDateTime": "2025-03-21T12:03:14.551954Z",
    "action": "adminRemove",
    "principalId": "1189bbdd-1268-4a72-8c6d-6fe77d28f2e3",
    "roleDefinitionId": "fe930be7-5e62-47db-91af-98c3a49a38b1",
    "directoryScopeId": "/",
    "createdBy": {
        "user": {
            "displayName": null,
            "id": "e2330663-f949-41b5-a3dc-faeb793e14c6"
        }
    }
}

IT サポート (ユーザー) グループを削除する

要求は、204 No Content 応答コードを返します。

DELETE https://graph.microsoft.com/v1.0/groups/d9771b4c-06c5-491a-92cb-3aa4e225a725

まとめ

このチュートリアルでは、PIM API を使用してMicrosoft Entra IDで特権ロールの割り当てを管理する方法について説明しました。

  • 特権ロールの対象となるグループを作成する代わりに、グループにアクティブなロールを割り当て、グループ API に PIM を使用してグループの対象となるメンバーを作成できます。
  • ロールのアクティブ化には MFA が必要でした。 この要件は、Microsoft Entraロール設定で変更できます。
  • 次の構成も可能です。
    • ロールのアクティブ化に許可される最大期間。
    • ロールをアクティブ化するために正当な理由とチケット情報が必要かどうか。