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

Privileged Identity Management (PIM) を使用すると、組織はMicrosoft Entra ID内のリソースへの管理アクセスを管理できます。 管理アクセスは、ロール割り当て可能なグループまたはMicrosoft Entraロールを使用できます。 PIM は、アクセスがアクティブな場合に制限し、アクセスのスコープを管理し、特権アクセスの監査可能なログを提供することで、特権アクセスのリスクを管理するのに役立ちます。

Contoso は、セキュリティ グループを使用してプリンシパルに管理ロールを割り当てる必要があります。 会社は、永続的にアクティブな管理ロールの代わりに適格性を割り当てます。 この方法は、次の方法で有効です。

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

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

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

前提条件

このチュートリアルを完了するには、次のリソースと特権が必要です。

  • Microsoft Entra ID P2 またはMicrosoft Entra ID ガバナンス ライセンスが有効になっている、作業Microsoft Entraテナント。
  • Graph エクスプローラー などの API クライアントにサインインし、少なくとも特権ロール管理者ロールを持つアカウントで Microsoft Graph を呼び出します。
    • [省略可能]別のブラウザーで新しい匿名セッションを開始します。 このチュートリアルの後半でサインインします。 MFA が有効になっていて、Microsoft Authenticator アプリ アカウントにアクセスできるテスト ユーザー。
  • 委任されたアクセス許可を自分に付与します: Group.ReadWrite.AllDirectory.Read.AllRoleAssignmentSchedule.ReadWrite.DirectoryRoleEligibilitySchedule.ReadWrite.Directoryおよび 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/1ed8ac56-4827-4733-8f80-86adc2e67db5"
    ],
    "members@odata.bind": [
        "https://graph.microsoft.com/v1.0/users/1ed8ac56-4827-4733-8f80-86adc2e67db5",
        "https://graph.microsoft.com/v1.0/users/7146daa8-1b4b-4a66-b2f7-cf593d03c8d2"
    ]
}

応答

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

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups/$entity",
    "@odata.id": "https://graph.microsoft.com/v2/29a4f813-9274-4e1b-858d-0afa98ae66d4/directoryObjects/e77cbb23-0ff2-4e18-819c-690f58269752/Microsoft.DirectoryServices.Group",
    "id": "e77cbb23-0ff2-4e18-819c-690f58269752",
    "description": "IT Helpdesk to support Contoso employees",
    "displayName": "IT Helpdesk (User)",
    "groupTypes": [],
    "isAssignableToRole": true,
    "mailEnabled": false,
    "mailNickname": "userHelpdesk",
    "securityEnabled": true,
    "securityIdentifier": "S-1-12-1-3883711267-1310199794-258579585-1385637464",
    "visibility": "Private",
    "onPremisesProvisioningErrors": []
}

手順 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": "e77cbb23-0ff2-4e18-819c-690f58269752",
    "scheduleInfo": {
        "startDateTime": "2021-07-01T00:00:00Z",
        "expiration": {
            "endDateTime": "2022-06-30T00: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": "64a8bd54-4591-4f6a-9c77-3e9cb1fdd29b",
    "status": "Provisioned",
    "createdDateTime": "2021-09-03T20:45:28.3848182Z",
    "completedDateTime": "2021-09-03T20:45:39.1194292Z",
    "action": "AdminAssign",
    "principalId": "e77cbb23-0ff2-4e18-819c-690f58269752",
    "roleDefinitionId": "fe930be7-5e62-47db-91af-98c3a49a38b1",
    "directoryScopeId": "/",
    "isValidationOnly": false,
    "targetScheduleId": "64a8bd54-4591-4f6a-9c77-3e9cb1fdd29b",
    "justification": "Assign User Admin eligibility to IT Helpdesk (User) group",
    "createdBy": {
        "user": {
            "id": "1ed8ac56-4827-4733-8f80-86adc2e67db5"
        }
    },
    "scheduleInfo": {
        "startDateTime": "2021-09-03T20:45:39.1194292Z",
        "expiration": {
            "type": "afterDateTime",
            "endDateTime": "2022-06-30T00:00:00Z"
        }
    },
    "ticketInfo": {}
}

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

グループ メンバーはユーザー管理者ロールの 対象 になりましたが、ロールを明示的にアクティブ化しない限り、ロールを使用することはできません。 確認するには、ユーザーの現在のロールの割り当てを確認します。

要求

GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments?$filter=principalId eq '7146daa8-1b4b-4a66-b2f7-cf593d03c8d2'

応答

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

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#roleManagement/directory/roleAssignments",
    "value": []
}

空の応答オブジェクトは、ユーザーに Contoso に既存のMicrosoft Entraロールがないことを示しています。 ユーザーは、対象となるユーザー管理者ロールを期間限定でアクティブ化します。

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

インシデント チケット CONTOSO: Security-012345 は Contoso のインシデント管理システムで発生しており、会社ではすべての従業員の更新トークンを無効にする必要があります。 IT ヘルプデスクのメンバーとして、Aline はこのタスクを実行する責任を負います。

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

Graph エクスプローラーに Aline としてサインインします。 この手順では、別のブラウザーを使用できます。 これにより、現在のセッションが中断されることはありません。 または、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": "7146daa8-1b4b-4a66-b2f7-cf593d03c8d2",
    "roleDefinitionId": "fe930be7-5e62-47db-91af-98c3a49a38b1",
    "directoryScopeId": "/",
    "justification": "Need to invalidate all app refresh tokens for Contoso users.",
    "scheduleInfo": {
        "startDateTime": "2024-03-25T15:13: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": "295edd40-4646-40ca-89b8-ab0b46b6f60e",
    "status": "Granted",
    "createdDateTime": "2021-09-03T21:10:49.6670479Z",
    "completedDateTime": "2021-09-04T15:13:00Z",
    "action": "SelfActivate",
    "principalId": "7146daa8-1b4b-4a66-b2f7-cf593d03c8d2",
    "roleDefinitionId": "fe930be7-5e62-47db-91af-98c3a49a38b1",
    "directoryScopeId": "/",
    "isValidationOnly": false,
    "targetScheduleId": "295edd40-4646-40ca-89b8-ab0b46b6f60e",
    "justification": "Need to invalidate all app refresh tokens for Contoso users.",
    "createdBy": {
        "user": {
            "id": "7146daa8-1b4b-4a66-b2f7-cf593d03c8d2"
        }
    },
    "scheduleInfo": {
        "startDateTime": "2021-09-04T15:13:00Z",
        "expiration": {
            "type": "afterDuration",
            "endDateTime": null,
            "duration": "PT5H"
        }
    },
    "ticketInfo": {
        "ticketNumber": "CONTOSO:Security-012345",
        "ticketSystem": "Contoso ICM"
    }
}

を実行 GET https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignmentScheduleRequests/filterByCurrentUser(on='principal')して、割り当てを確認できます。 応答オブジェクトは、新しくアクティブ化されたロールの割り当てを返し、その状態を に Granted設定します。 新しい特権を使用して、割り当てがアクティブになっている 5 時間以内に許可されたアクションを実行します。 アクティブな割り当ては 5 時間後に期限切れになりますが、 IT サポート (ユーザー) グループのメンバーシップを通じて、ユーザー管理者ロールの資格が得られます。

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

グローバル管理者としてサインインし、このチュートリアル用に作成した次のリソース (ロール適格性要求と IT サポート (ユーザー) グループ) を削除します。

ロールの適格性要求を取り消す

要求

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

{
    "action": "AdminRemove",
    "principalId": "e77cbb23-0ff2-4e18-819c-690f58269752",
    "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": "dcd11a1c-300f-4d17-8c7a-523830400ec8",
    "status": "Revoked",
    "action": "AdminRemove",
    "principalId": "e77cbb23-0ff2-4e18-819c-690f58269752",
    "roleDefinitionId": "fe930be7-5e62-47db-91af-98c3a49a38b1",
    "directoryScopeId": "/"
}

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

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

DELETE https://graph.microsoft.com/v1.0/groups/e77cbb23-0ff2-4e18-819c-690f58269752

まとめ

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

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