Azure PIM を使用して REST API を使用してアクティブなアクセスを管理する

Azure Privileged Identity Management (PIM) を使用すると、永続的な管理者アクセスを特権ロールに制限し、アクセス権を持つユーザーを検出し、特権アクセスを確認できます。 この記事では、REST API を使用してアクセスを管理する一般的な方法について説明します。

アクティブな割り当てを一覧表示する

アクティブなロールの割り当て (リスト アクセス) を一覧表示するには、[ ロールの割り当てスケジュール インスタンス] - [スコープの一覧 ] または [ ロールの割り当てスケジュール] - [スコープ REST API の一覧] のいずれかを使用できます。 結果を絞り込むには、スコープと任意のフィルターを指定します。 API を呼び出すには、指定スコープでの Microsoft.Authorization/roleAssignments/read 操作のアクセス権が必要です。 すべての組み込みロールには、この操作へのアクセス権が付与されます。

重要

スケジュールとスケジュール インスタンス違いは、スケジュール インスタンスには現在アクティブな割り当てのみが含まれるのに対し、スケジュールには将来アクティブになる割り当ても含まれることです。

  1. 次の要求から開始します。

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignmentScheduleInstances?api-version=2020-10-01&$filter={filter}
    
    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignmentSchedules?api-version=2020-10-01&$filter={filter}
    
  2. 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 リソース
  3. {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 必要があります。 組み込みロールのうち、この操作のアクセス権が付与されているのは OwnerUser Access Administrator だけです。

  1. ロールの定義 - 一覧表示 REST API を使用するか、組み込みロールを参照し、割り当てるロール定義の識別子を取得します。

  2. GUID ツールを使用し、ロール割り当て識別子に使用する一意の識別子を生成します。 この識別子の形式は 00000000-0000-0000-0000-000000000000 になります。

  3. 次の要求と本文から開始します。

    PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignmentScheduleRequests/{roleAssignmentScheduleRequestName}?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": "P30D" // Use ISO 8601 format
          }
        }
      }
    }
    
  4. 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 リソース
  5. {roleAssignmentScheduleRequestName} をロール割り当ての GUID 識別子に置き換えます。

  6. 要求本文の {subscriptionId} を、実際のサブスクリプション ID に置き換えます。

  7. {roleDefinitionId} を、ロールの定義の識別子に置き換えます。

  8. {principalId} を、ロールが割り当てられるユーザー、グループ、またはサービス プリンシパルのオブジェクト識別子に置き換えます。

アクティブな割り当てを削除する

アクティブなロールの割り当てを削除する (アクセス権を削除する) には、 ロールの割り当てスケジュール要求 - REST API の作成を使用して、割り当てを取り消す新しい要求を作成し、セキュリティ プリンシパル、ロール定義、requestType = AdminRemove およびスコープを指定します。 この API を呼び出すには、Microsoft.Authorization/roleAssignments/write 操作へのアクセス許可が必要です。 組み込みロールのうち、この操作のアクセス権が付与されているのは OwnerUser Access Administrator だけです。

  1. GUID ツールを使用し、ロール割り当て識別子に使用する一意の識別子を生成します。 この識別子の形式は 00000000-0000-0000-0000-000000000000 になります。

  2. 次の要求から開始します。

    PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignmentScheduleRequests/{roleAssignmentScheduleRequestName}?api-version=2020-10-01
    
    {
      "Properties": {
        "RoleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}",
        "PrincipalId": "{principalId}",
        "RequestType": "AdminRemove"
        }
    }
    
  3. 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 リソース
  4. {roleAssignmentScheduleRequestName} をロール割り当ての GUID 識別子に置き換えます。

対象となるロールの割り当てをアクティブ化する

対象となるロールの割り当てをアクティブ化する (アクティブ化されたアクセス権を取得する) には、 ロール割り当てスケジュール要求 - REST API の作成を使用して新しい要求を作成し、セキュリティ プリンシパル、ロール定義、requestType = SelfActivate およびスコープを指定します。 この API を呼び出すには、スコープに対して対象となるロールの割り当てが必要です。

  1. GUID ツールを使用し、ロール割り当て識別子に使用する一意の識別子を生成します。 この識別子の形式は 00000000-0000-0000-0000-000000000000 になります。

  2. [省略可能]アクティブ化する をRoleEligibilitySchedule選択し、 として渡すロール適格性スケジュール API から を取得RoleEligibilityScheduleIdしますLinkedRoleEligibilityScheduleId。 これは省略可能であり、渡されない場合、システムは を RoleEligibilitySchedule選択します。

  3. 次の要求から開始します。

    PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignmentScheduleRequests/{roleAssignmentScheduleRequestName}?api-version=2020-10-01
    
     {
       "Properties": {
         "RoleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}",
         "PrincipalId": "{principalId}",
         "RequestType": "SelfActivate",
         "ScheduleInfo": {
           "StartDateTime": "2020-09-09T21:31:27.91Z",
           "Expiration": {
             "Type": "AfterDuration", // Values: AfterDuration, AfterDateTime, NoExpiration
             "EndDateTime": null,
             "Duration": "PT8H" // Use ISO 8601 format
           }
         },
         "LinkedRoleEligibilityScheduleId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleAssignmentSchedules/{roleAssignmentScheduleId}" //Optional
       }
     }
    
  4. 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 リソース
  5. {roleAssignmentScheduleRequestName} をロール割り当ての GUID 識別子に置き換えます。

アクティブなロールの割り当てを非アクティブ化する

アクティブ化されたロールの割り当てを無効にする (アクティブ化されたアクセスを削除する) には、 ロール割り当てスケジュール要求 - REST API の作成 を使用して新しい要求を作成し、セキュリティ プリンシパル、ロール定義、requestType = SelfDeactivate およびスコープを指定します。 この API を呼び出すには、スコープでアクティブ化されたロールの割り当てが必要です。

  1. GUID ツールを使用し、ロール割り当て識別子に使用する一意の識別子を生成します。 この識別子の形式は 00000000-0000-0000-0000-000000000000 になります。

  2. 次の要求から開始します。

    PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignmentScheduleRequests/{roleAssignmentScheduleRequestName}?api-version=2020-10-01
    
     {
       "Properties": {
         "RoleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}",
         "PrincipalId": "{principalId}",
         "RequestType": "SelfDeactivate"        
       }
     }
    
  3. 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 リソース
  4. {roleAssignmentScheduleRequestName} をロール割り当ての GUID 識別子に置き換えます。

Just-Enough-Access (JEA)

ユーザーがリソース (親) で対象となるロールの割り当てを持っている場合は、親スコープ全体ではなく、親リソースの子レベルのスコープでロールをアクティブ化することを選択できます。 たとえば、ユーザーがサブスクリプションで適格なロールを持っている Contributor 場合は、サブスクリプションの子リソース グループ レベルでロールをアクティブ化できます。

対象となるアクセス権を持つリソースのすべての子の一覧を取得するには、 対象となる子リソース API を使用できます。

  1. 次の要求から開始します。

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/eligibleChildResources?api-version=2020-10-01&$filter={filter}
    
  2. URI の {scope} を、ロールの割り当てを一覧表示するスコープに変更します。

    Scope Type
    providers/Microsoft.Management/managementGroups/{mg-name} 管理グループ
    subscriptions/{subscriptionId} サブスクリプション
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 Resource group
  3. {filter} には、ロールの割り当て一覧をフィルター処理するために適用する条件を指定します。

    Assert 説明
    $filter=resourceType+eq+'Subscription' 型が 'Subscription' のリソースを一覧表示します。
    $filter=$filter=resourceType+eq+'subscription'+or+resourceType+eq+'resourcegroup'' 型 = 'Subscription' または type = 'ResourceGroup' のリソースを一覧表示します。
  4. アクティブ化の として id 使用する子リソースの を scope 使用する RoleAssignmentScheduleRequest

新しい要求に対して返される一般的なエラー

新しい要求の作成時に発生する可能性がある一般的なエラーとその軽減方法の一覧を次に示します。

エラー メッセージ Explanantion 対応策
code: RoleAssignmentExists
message: ロールの割り当ては既に存在します。
同様のロールの割り当てが既に存在する このロールの割り当てとそのスケジュールを確認できます GET
code: RoleAssignmentRequestPolicyValidationFailed
message: 次のポリシー 規則が失敗しました: ["ExpirationRule"]
ScheduleInfo要求で指定された が、許容される最大期間を超えています GETこれにRoleDefinitionId対して RoleManagementPolicy を チェック使用し、RoleManagementPolicyExpirationRule
code: RoleAssignmentRequestPolicyValidationFailed
message: 次のポリシー 規則が失敗しました: ["JustificationRule"]
要求本文で を Justification 指定する必要があります GETこれにRoleDefinitionId対して RoleManagementPolicy を チェック使用し、RoleManagementPolicyEnablementRule
code: RoleAssignmentRequestPolicyValidationFailed
message: 次のポリシー 規則が失敗しました: ["EligibilityRule"]
このロールをアクティブ化するための有効な RoleEligibilityScheduleInstance が存在しません リソース管理者は、このプリンシパルの を RoleEligibilityScheduleRequest 作成する必要があります
code: RoleAssignmentRequestPolicyValidationFailed
message: 次のポリシー 規則が失敗しました: ["TicketingRule"]
要求本文で を TicketInfo 指定する必要があります GETこれにRoleDefinitionId対して RoleManagementPolicy を チェック使用し、RoleManagementPolicyEnablementRule
code: RoleAssignmentRequestPolicyValidationFailed
message: 次のポリシー 規則が失敗しました: ["MfaRule"]
この要求を送信するには、Azure Multi-Factor Authentication を完了する必要があります GETこれにRoleDefinitionId対して RoleManagementPolicy を チェック使用し、RoleManagementPolicyEnablementRule