Usar o Azure PIM para gerenciar o acesso qualificado com a API REST

O Azure Privileged Identity Management (PIM) permite limitar o acesso de administrador permanente a funções privilegiadas, descobrir quem tem acesso e examinar o acesso privilegiado. Este artigo descreve as maneiras comuns de gerenciar o acesso usando a API REST.

Listar atribuições qualificadas

Para listar atribuições de função qualificadas (acesso à lista), você pode usar uma das Instâncias de Agendamento de Qualificação de Função – Listar Para Agendamentos de Qualificação de Função ou Escopo– Listar para APIs REST de Escopo. Para refinar seus resultados, especifique um escopo e um filtro opcional. Para chamar essa API, é necessário ter acesso à operação Microsoft.Authorization/roleAssignments/read no escopo especificado. Todas as funções internas recebem acesso a essa operação.

Importante

A diferença entre agendas e instâncias de agendamento é que, embora as instâncias de agendamento incluam apenas atribuições que estão ativas no momento atual, os agendamentos também incluem atribuições que se tornarão ativas no futuro.

  1. Comece com a solicitação a seguir:

    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}
    
  2. Dentro do URI, substitua {scope} pelo escopo para o qual você deseja listar as funções de atribuição.

    Escopo Type
    providers/Microsoft.Management/managementGroups/{mg-name} Grupo de gerenciamento
    subscriptions/{subscriptionId} Subscription
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 Resource group
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1 Recurso
  3. Substitua {filter} pela condição que você deseja aplicar a fim de filtrar a lista de atribuições de função.

    Filtrar Descrição
    $filter=atScope() Liste atribuições de função para apenas o escopo especificado, não incluindo as atribuições de função em subescopos.
    $filter=principalId%20eq%20'{objectId}' Liste atribuições de função para um usuário, grupo ou entidade de serviço específica.
    $filter=roleDefinitionId%20eq%20'{roleDefinitionId}' Listar atribuições de função para uma definição de função especificada.
    $filter=assignedTo('{objectId}') Liste atribuições de função para um usuário específico, incluindo aqueles herdados de grupos.
    $filter=asTarget() Listar atribuições de função para o usuário ou entidade de serviço atual, incluindo as herdadas de grupos.
    $filter=assignedTo('{objectId}')+and+atScope() Listar atribuições de função para um usuário especificado, incluindo as herdadas de grupos apenas para o escopo especificado, não incluindo as atribuições de função em subscópios.

Conceder atribuição qualificada

Para criar uma atribuição de função qualificada (conceder acesso), use as Solicitações de Agendamento de Qualificação de Função – Criar API REST e especifique a entidade de segurança, a definição de função, o agendamento, o requestType = AdminAssign e o escopo. Para chamar essa API, você deve ter acesso à Microsoft.Authorization/roleAssignments/write operação. Das funções internas, somente Proprietário e Administrador do Acesso do Usuário recebem permissão para acessar essa operação.

  1. Use a API REST Definições de Função - Listar ou veja as Funções internas para obter o identificador da definição de função que você deseja atribuir.

  2. Use uma ferramenta GUID para gerar um identificador exclusivo que será usado para atribuição de função personalizada. O identificador tem o formato: 00000000-0000-0000-0000-000000000000

  3. Comece com a solicitação e corpo a seguir:

    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
          }
        }
      }
    }
    
  4. Dentro do URI, substitua {scope} pelo escopo da atribuição de função.

    Escopo Type
    providers/Microsoft.Management/managementGroups/{mg-name} Grupo de gerenciamento
    subscriptions/{subscriptionId} Subscription
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 Resource group
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1 Recurso
  5. Substitua {roleEligibilityScheduleRequestName} pelo identificador GUID da atribuição de função.

  6. No corpo da solicitação, substitua {subscriptionId} pelo identificador da sua assinatura.

  7. Substitua {roleDefinitionId} pelo identificador de definição da função.

  8. Substitua {principalId} com o identificador de objeto do usuário, grupo ou entidade de serviço que receberá a função.

Remover atribuição qualificada

Para remover uma atribuição de função qualificada (remover acesso), use as Solicitações de Agendamento de Qualificação de Função – Criar API REST para criar uma nova solicitação para revogar a atribuição e especificar a entidade de segurança, a definição de função, requestType = AdminRemove e o escopo. Para chamar essa API, é necessário ter acesso à operação Microsoft.Authorization/roleAssignments/write. Das funções internas, somente Proprietário e Administrador do Acesso do Usuário recebem permissão para acessar essa operação.

  1. Use uma ferramenta GUID para gerar um identificador exclusivo que será usado para atribuição de função personalizada. O identificador tem o formato: 00000000-0000-0000-0000-000000000000

  2. Comece com a solicitação a seguir:

    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"
        }
    }
    
  3. Dentro do URI, substitua {scope} pelo escopo para remoção da atribuição de função.

    Escopo Type
    providers/Microsoft.Management/managementGroups/{mg-name} Grupo de gerenciamento
    subscriptions/{subscriptionId} Subscription
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 Resource group
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/ providers/Microsoft.Web/sites/mysite1 Recurso
  4. Substitua {roleEligibilityScheduleRequestName} pelo identificador GUID da atribuição de função.

Erros comuns retornados para uma nova solicitação

Veja a seguir uma lista de erros comuns que você pode encontrar ao criar uma nova solicitação e como atenuá-los.

Mensagem de erro Explanantion Atenuação
code: RoleAssignmentExists
message: a atribuição de função já existe.
Uma atribuição de função semelhante já existe Você pode GET essa atribuição de função e verificar sua agenda.
code: RoleAssignmentRequestPolicyValidationFailed
message: as seguintes regras de política falharam: ["ExpirationRule"]
O ScheduleInfo especificado na solicitação excede a duração máxima permitida Você pode GET o RoleManagementPolicy para isso RoleDefinitionId e marcar oRoleManagementPolicyExpirationRule
code: RoleAssignmentRequestPolicyValidationFailed
message: as seguintes regras de política falharam: ["JustificationRule"]
Você precisa especificar um Justification no corpo da solicitação Você pode GET o RoleManagementPolicy para isso RoleDefinitionId e marcar oRoleManagementPolicyEnablementRule
code: RoleAssignmentRequestPolicyValidationFailed
message: as seguintes regras de política falharam: ["EligibilityRule"]
Um válido RoleEligibilityScheduleInstance não existe para ativar essa função Um administrador de recursos precisa criar um RoleEligibilityScheduleRequest para essa entidade de segurança
code: RoleAssignmentRequestPolicyValidationFailed
message: as seguintes regras de política falharam: ["TicketingRule"]
Você precisa especificar um TicketInfo no corpo da solicitação Você pode GET o RoleManagementPolicy para isso RoleDefinitionId e marcar oRoleManagementPolicyEnablementRule
code: RoleAssignmentRequestPolicyValidationFailed
message: as seguintes regras de política falharam: ["MfaRule"]
Você precisa concluir a Autenticação Multifator do Azure para enviar essa solicitação Você pode GET o RoleManagementPolicy para isso RoleDefinitionId e marcar oRoleManagementPolicyEnablementRule