Azure PIM を使用して REST API で適格なアクセスを管理する
Azure Privileged Identity Management (PIM) を使用すると、永続的な管理者アクセスを特権ロールに制限し、アクセス権を持つユーザーを検出し、特権アクセスを確認できます。 この記事では、REST API を使用してアクセスを管理する一般的な方法について説明します。
対象となる割り当てを一覧表示する
対象となるロールの割り当て (リスト アクセス) を一覧表示するには、 ロール適格性スケジュール インスタンス - スコープの一覧 または ロールの適格性スケジュールの一覧 - スコープ REST API の一覧 のいずれかを使用できます。 結果を絞り込むには、スコープと任意のフィルターを指定します。 API を呼び出すには、指定スコープでの Microsoft.Authorization/roleAssignments/read
操作のアクセス権が必要です。 すべての組み込みロールには、この操作へのアクセス権が付与されます。
重要
スケジュールとスケジュール インスタンスの違いは、スケジュール インスタンスには現在アクティブな割り当てのみが含まれるのに対し、スケジュールには将来アクティブになる割り当ても含まれるということです。
次の要求から開始します。
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleEligibilityScheduleInstances?api-version=2020-10-01&$filter={filter}
GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleEligibilitySchedules?api-version=2020-10-01&$filter={filter}
URI の {scope} を、ロールの割り当てを一覧表示するスコープに変更します。
Scope Type providers/Microsoft.Management/managementGroups/{mg-name}
管理グループ subscriptions/{subscriptionId}
サブスクリプション subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1
Resource group subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1
リソース {filter} には、ロールの割り当て一覧をフィルター処理するために適用する条件を指定します。
Assert 説明 $filter=atScope()
サブスコープのロールの割り当ては含めずに、指定スコープのみを対象にロールの割り当てを一覧表示します。 $filter=principalId%20eq%20'{objectId}'
特定のユーザー、グループ、またはサービス プリンシパルを対象にロールの割り当てを一覧表示します。 $filter=roleDefinitionId%20eq%20'{roleDefinitionId}'
指定したロール定義のロールの割り当てを一覧表示します。 $filter=assignedTo('{objectId}')
グループから継承されたものも含め、特定のユーザーを対象にロールの割り当てを一覧表示します。 $filter=asTarget()
現在のユーザーまたはサービス プリンシパルのロールの割り当てを、グループから継承されたものも含めて一覧表示します。 $filter=assignedTo('{objectId}')+and+atScope()
指定したユーザーのロールの割り当てを一覧表示します。これには、サブスコープでのロールの割り当てを含めず、指定したスコープのみのグループから継承されたものも含まれます。
対象となる割り当てを付与する
対象となるロールの割り当てを作成 (アクセス権の付与) するには、 ロールの適格性スケジュール要求 - REST API を作成し、セキュリティ プリンシパル、ロール定義、スケジュール、requestType = AdminAssign
およびスコープを指定します。 この API を呼び出すには、操作にアクセスできる Microsoft.Authorization/roleAssignments/write
必要があります。 組み込みロールのうち、この操作のアクセス権が付与されているのは Owner と User Access Administrator だけです。
ロールの定義 - 一覧表示 REST API を使用するか、組み込みロールを参照し、割り当てるロール定義の識別子を取得します。
GUID ツールを使用し、ロール割り当て識別子に使用する一意の識別子を生成します。 この識別子の形式は
00000000-0000-0000-0000-000000000000
になります。次の要求と本文から開始します。
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleEligibilityScheduleRequests/{roleEligibilityScheduleRequestName}?api-version=2020-10-01
{ "Properties": { "RoleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}", "PrincipalId": "{principalId}", "RequestType": "AdminAssign", "ScheduleInfo": { "StartDateTime": "2020-09-09T21:31:27.91Z", "Expiration": { "Type": "AfterDuration", // Values: AfterDuration, AfterDateTime, NoExpiration "EndDateTime": null, "Duration": "P365D" // Use ISO 8601 format } } } }
URI の {scope} をロールの割り当てのスコープに変更します。
Scope Type providers/Microsoft.Management/managementGroups/{mg-name}
管理グループ subscriptions/{subscriptionId}
サブスクリプション subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1
Resource group subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1
リソース {roleEligibilityScheduleRequestName} をロールの割り当ての GUID 識別子に置き換えます。
要求本文の {subscriptionId} を、実際のサブスクリプション ID に置き換えます。
{roleDefinitionId} を、ロールの定義の識別子に置き換えます。
{principalId} を、ロールが割り当てられるユーザー、グループ、またはサービス プリンシパルのオブジェクト識別子に置き換えます。
対象となる割り当てを削除する
対象となるロールの割り当てを削除する (アクセスを削除する) には、 ロールの適格性スケジュール要求 - REST API の作成を使用して、割り当てを取り消す新しい要求を作成し、セキュリティ プリンシパル、ロール定義、requestType = AdminRemove
およびスコープを指定します。 この API を呼び出すには、Microsoft.Authorization/roleAssignments/write
操作へのアクセス許可が必要です。 組み込みロールのうち、この操作のアクセス権が付与されているのは Owner と User Access Administrator だけです。
GUID ツールを使用し、ロール割り当て識別子に使用する一意の識別子を生成します。 この識別子の形式は
00000000-0000-0000-0000-000000000000
になります。次の要求から開始します。
PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleEligibilityScheduleRequests/{roleEligibilityScheduleRequestName}?api-version=2020-10-01
{ "Properties": { "RoleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}", "PrincipalId": "{principalId}", "RequestType": "AdminRemove" } }
URI の {scope} を、ロールの割り当てを削除するためのスコープに変更します。
Scope Type providers/Microsoft.Management/managementGroups/{mg-name}
管理グループ subscriptions/{subscriptionId}
サブスクリプション subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1
Resource group subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/ providers/Microsoft.Web/sites/mysite1
リソース {roleEligibilityScheduleRequestName} をロールの割り当ての GUID 識別子に置き換えます。
新しい要求に対して返される一般的なエラー
新しい要求の作成時に発生する可能性がある一般的なエラーとその軽減方法の一覧を次に示します。
エラー メッセージ | Explanantion | 対応策 |
---|---|---|
code : RoleAssignmentExistsmessage : ロールの割り当ては既に存在します。 |
同様のロールの割り当てが既に存在する | このロールの割り当てとそのスケジュールを確認できます GET 。 |
code : RoleAssignmentRequestPolicyValidationFailedmessage : 次のポリシー 規則が失敗しました: ["ExpirationRule"] |
ScheduleInfo 要求で指定された が、許容される最大期間を超えています |
これには RoleManagementPolicy を使用RoleDefinitionId して、 をチェックできますGET 。RoleManagementPolicyExpirationRule |
code : RoleAssignmentRequestPolicyValidationFailedmessage : 次のポリシー 規則が失敗しました: ["JustificationRule"] |
要求本文で を Justification 指定する必要がある |
これには RoleManagementPolicy を使用RoleDefinitionId して、 をチェックできますGET 。RoleManagementPolicyEnablementRule |
code : RoleAssignmentRequestPolicyValidationFailedmessage : 次のポリシー ルールが失敗しました: ["EligibilityRule"] |
このロールをアクティブ化するための有効な RoleEligibilityScheduleInstance が存在しません |
リソース管理者は、このプリンシパルの を RoleEligibilityScheduleRequest 作成する必要があります |
code : RoleAssignmentRequestPolicyValidationFailedmessage : 次のポリシー 規則が失敗しました: ["TicketingRule"] |
要求本文で を TicketInfo 指定する必要がある |
これには RoleManagementPolicy を使用RoleDefinitionId して、 をチェックできますGET 。RoleManagementPolicyEnablementRule |
code : RoleAssignmentRequestPolicyValidationFailedmessage : 次のポリシー規則が失敗しました: ["MfaRule"] |
この要求を送信するには、Azure Multi-Factor Authentication を完了する必要があります | これには RoleManagementPolicy を使用RoleDefinitionId して、 をチェックできますGET 。RoleManagementPolicyEnablementRule |