다음을 통해 공유


Azure PIM을 사용하여 REST API를 사용하여 활성 액세스 관리

PIM(Azure Privileged Identity Management)을 사용하면 권한 있는 역할에 대한 관리자 액세스를 제한하고, 액세스 권한이 있는 사용자를 검색하고, 권한 있는 액세스를 검토할 수 있습니다. 이 문서에서는 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}를 역할 할당을 나열하려는 범위로 바꿉니다.

    범위 Type
    providers/Microsoft.Management/managementGroups/{mg-name} 관리 그룹
    subscriptions/{subscriptionId} Subscription
    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() 하위 범위에 역할 할당을 포함하지 않고 지정된 scope 대한 그룹에서 상속된 할당을 포함하여 지정된 사용자에 대한 역할 할당을 나열합니다.

활성 할당 부여

활성 역할 할당(액세스 권한 부여)을 만들려면 역할 할당 일정 요청 - REST API를 만들고 보안 주체, 역할 정의, 일정, requestType = AdminAssign 및 scope 지정합니다. 이 API를 호출하려면 작업에 대한 액세스 권한이 Microsoft.Authorization/roleAssignments/write 있어야 합니다. 기본 제공 역할의 경우 소유자사용자 액세스 관리자에게만 이러한 작업의 권한이 부여됩니다.

  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}를 역할 할당에 대한 범위로 바꿉니다.

    범위 Type
    providers/Microsoft.Management/managementGroups/{mg-name} 관리 그룹
    subscriptions/{subscriptionId} Subscription
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 Resource group
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1 리소스
  5. {roleAssignmentScheduleRequestName}을 역할 할당의 GUID 식별자로 바꿉니다.

  6. 요청 본문 내에서 {subscriptionId}를 구독 식별자로 바꿉니다.

  7. {roleDefinitionId}를 역할 정의 식별자로 바꿉니다.

  8. {principalId}를 역할이 할당될 사용자, 그룹 또는 서비스 주체의 개체 식별자로 바꿉니다.

활성 할당 제거

활성 역할 할당을 제거(액세스 제거)하려면 역할 할당 일정 요청 - REST API 만들기를 사용하여 할당을 취소하는 새 요청을 만들고 보안 주체, 역할 정의, requestType = AdminRemove 및 scope 지정합니다. 이 API를 호출하려면 Microsoft.Authorization/roleAssignments/write 작업에 액세스할 수 있어야 합니다. 기본 제공 역할의 경우 소유자사용자 액세스 관리자에게만 이러한 작업의 권한이 부여됩니다.

  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}를 제거할 역할 할당에 대한 범위로 바꿉니다.

    범위 Type
    providers/Microsoft.Management/managementGroups/{mg-name} 관리 그룹
    subscriptions/{subscriptionId} Subscription
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 Resource group
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/ providers/Microsoft.Web/sites/mysite1 리소스
  4. {roleAssignmentScheduleRequestName}을 역할 할당의 GUID 식별자로 바꿉니다.

적격 역할 할당 활성화

적격 역할 할당을 활성화하려면 역할 할당 일정 요청 - REST API 만들기를 사용하여 새 요청을 만들고 보안 주체, 역할 정의, requestType = SelfActivate 및 scope 지정합니다. 이 API를 호출하려면 범위에 적합한 역할 할당이 있어야 합니다.

  1. GUID 도구를 사용하여 역할 할당 식별자에 사용할 고유 식별자를 생성합니다. 식별자의 형식은 00000000-0000-0000-0000-000000000000입니다.

  2. [선택 사항] 활성화할 를 RoleEligibilitySchedule 선택하고 역할 자격 일정 API에서 를 가져와 로 LinkedRoleEligibilityScheduleId전달합니다.RoleEligibilityScheduleId 이는 선택 사항이며 전달되지 않으면 시스템에서 를 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}를 제거할 역할 할당에 대한 범위로 바꿉니다.

    범위 Type
    providers/Microsoft.Management/managementGroups/{mg-name} 관리 그룹
    subscriptions/{subscriptionId} Subscription
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 Resource group
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/ providers/Microsoft.Web/sites/mysite1 리소스
  5. {roleAssignmentScheduleRequestName}을 역할 할당의 GUID 식별자로 바꿉니다.

활성 역할 할당 비활성화

활성화된 역할 할당을 활성화 해제(활성화된 액세스 제거)하려면 역할 할당 일정 요청 - REST API 만들기를 사용하여 새 요청을 만들고 보안 주체, 역할 정의, requestType = SelfDeactivate 및 scope 지정합니다. 이 API를 호출하려면 scope 활성화된 역할 할당이 있어야 합니다.

  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}를 제거할 역할 할당에 대한 범위로 바꿉니다.

    범위 Type
    providers/Microsoft.Management/managementGroups/{mg-name} 관리 그룹
    subscriptions/{subscriptionId} Subscription
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 Resource group
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/ providers/Microsoft.Web/sites/mysite1 리소스
  4. {roleAssignmentScheduleRequestName}을 역할 할당의 GUID 식별자로 바꿉니다.

JEA(Just-Enough-Access)

사용자에게 리소스(부모)에 적격 역할 할당이 있는 경우 전체 부모 scope 대신 부모 리소스의 자식 수준 scope 역할을 활성화하도록 선택할 수 있습니다. 예를 들어 사용자가 Contributor 구독에서 적격 역할이 있는 경우 구독의 자식 리소스 그룹 수준에서 역할을 활성화할 수 있습니다.

적격 액세스 권한이 있는 리소스의 모든 자식 목록을 얻으려면 적격 자식 리소스 API를 사용할 수 있습니다.

  1. 다음 요청으로 시작합니다.

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/eligibleChildResources?api-version=2020-10-01&$filter={filter}
    
  2. URI 내에서 {scope}를 역할 할당을 나열하려는 범위로 바꿉니다.

    범위 Type
    providers/Microsoft.Management/managementGroups/{mg-name} 관리 그룹
    subscriptions/{subscriptionId} Subscription
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 리소스 그룹
  3. {filter}를 역할 할당 목록을 필터링하기 위해 적용하려는 조건으로 바꿉니다.

    Assert 설명
    $filter=resourceType+eq+'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 요청에 지정된 가 허용되는 최대 기간을 초과합니다. 이에 대한 RoleManagementPolicy를 사용하고 다음 RoleDefinitionId 을 검사 수 있습니다GET.RoleManagementPolicyExpirationRule
code: RoleAssignmentRequestPolicyValidationFailed
message: 다음 정책 규칙이 실패했습니다. ["JustificationRule"]
요청 본문에서 을 Justification 지정해야 합니다. 이에 대한 RoleManagementPolicy를 사용하고 다음 RoleDefinitionId 을 검사 수 있습니다GET.RoleManagementPolicyEnablementRule
code: RoleAssignmentRequestPolicyValidationFailed
message: 다음 정책 규칙이 실패했습니다. ["EligibilityRule"]
이 역할을 활성화하는 데 유효한 RoleEligibilityScheduleInstance 가 없습니다. 리소스 관리자는 이 보안 주체에 대한 을 RoleEligibilityScheduleRequest 만들어야 합니다.
code: RoleAssignmentRequestPolicyValidationFailed
message: 다음 정책 규칙이 실패했습니다. ["TicketingRule"]
요청 본문에서 을 TicketInfo 지정해야 합니다. 이에 대한 RoleManagementPolicy를 사용하고 다음 RoleDefinitionId 을 검사 수 있습니다GET.RoleManagementPolicyEnablementRule
code: RoleAssignmentRequestPolicyValidationFailed
message: 다음 정책 규칙이 실패했습니다. ["MfaRule"]
이 요청을 제출하려면 Azure Multi-Factor Authentication을 완료해야 합니다. 이에 대한 RoleManagementPolicy를 사용하고 다음 RoleDefinitionId 을 검사 수 있습니다GET.RoleManagementPolicyEnablementRule