Dela via


Använda Azure PIM för att hantera aktiv åtkomst med REST-API:et

Med Azure Privileged Identity Management (PIM) kan du begränsa stående administratörsåtkomst till privilegierade roller, identifiera vem som har åtkomst och granska privilegierad åtkomst. Den här artikeln beskriver de vanliga sätten att hantera åtkomst med hjälp av REST-API:et.

Lista aktiva tilldelningar

Om du vill visa en lista över aktiva rolltilldelningar (liståtkomst) kan du använda någon av instanserna För schema för rolltilldelning – Lista över omfångs - eller rolltilldelningsscheman – lista över REST-API:er för omfång. Om du vill förfina dina resultat anger du ett omfång och ett valfritt filter. Om du vill anropa API:et måste du ha åtkomst till åtgärden Microsoft.Authorization/roleAssignments/read i det angivna omfånget. Alla inbyggda roller beviljas åtkomst till den här åtgärden.

Viktigt

Skillnaden mellan scheman och schemainstanser är att även om schemainstanser endast innehåller tilldelningar som är aktiva vid den aktuella tidpunkten, inkluderar scheman även tilldelningar som kommer att bli aktiva i framtiden.

  1. Börja med följande begäran:

    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. I URI:n ersätter du {scope} med det omfång som du vill lista rolltilldelningarna för.

    Omfång Typ
    providers/Microsoft.Management/managementGroups/{mg-name} Hanteringsgrupp
    subscriptions/{subscriptionId} Prenumeration
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 Resursgrupp
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1 Resurs
  3. Ersätt {filter} med det villkor som du vill tillämpa för att filtrera rolltilldelningslistan.

    Filtrera Description
    $filter=atScope() Visa en lista över rolltilldelningar för endast det angivna omfånget, utan att inkludera rolltilldelningarna i underscopes.
    $filter=principalId%20eq%20'{objectId}' Lista rolltilldelningar för en angiven användare, grupp eller tjänstens huvudnamn.
    $filter=roleDefinitionId%20eq%20'{roleDefinitionId}' Lista rolltilldelningar för en angiven rolldefinition.
    $filter=assignedTo('{objectId}') Lista rolltilldelningar för en angiven användare, inklusive de som ärvts från grupper.
    $filter=asTarget() Lista rolltilldelningar för den aktuella användaren eller tjänstens huvudnamn, inklusive de som ärvts från grupper.
    $filter=assignedTo('{objectId}')+and+atScope() Lista rolltilldelningar för en angiven användare, inklusive de som ärvts från grupper för endast det angivna omfånget, inte inklusive rolltilldelningarna i underscopes.

Bevilja aktiv tilldelning

Om du vill skapa en aktiv rolltilldelning (bevilja åtkomst) använder du schemabegäranden för rolltilldelning – Skapa REST API och ange säkerhetsobjekt, rolldefinition, schema, requestType = AdminAssign och omfång. Om du vill anropa det här API:et måste du ha åtkomst till Microsoft.Authorization/roleAssignments/write åtgärden. Av de inbyggda rollerna beviljas endast ägare och administratör för användaråtkomst åtkomst åtkomst till den här åtgärden.

  1. Använd Rolldefinitioner – Lista REST API eller se Inbyggda roller för att hämta identifieraren för den rolldefinition som du vill tilldela.

  2. Använd ett GUID-verktyg för att generera en unik identifierare som ska användas för rolltilldelningsidentifieraren. Identifieraren har formatet: 00000000-0000-0000-0000-000000000000

  3. Börja med följande begäran och brödtext:

    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. I URI:n ersätter du {scope} med omfånget för rolltilldelningen.

    Omfång Typ
    providers/Microsoft.Management/managementGroups/{mg-name} Hanteringsgrupp
    subscriptions/{subscriptionId} Prenumeration
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 Resursgrupp
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/providers/Microsoft.Web/sites/mysite1 Resurs
  5. Ersätt {roleAssignmentScheduleRequestName} med GUID-identifieraren för rolltilldelningen.

  6. Ersätt {subscriptionId} med din prenumerationsidentifierare i begärandetexten.

  7. Ersätt {roleDefinitionId} med rolldefinitionsidentifieraren.

  8. Ersätt {principalId} med objektidentifieraren för användaren, gruppen eller tjänstens huvudnamn som ska tilldelas rollen.

Ta bort aktiv tilldelning

Om du vill ta bort en aktiv rolltilldelning (ta bort åtkomst) använder du schemabegäranden för rolltilldelning – Skapa REST-API för att skapa en ny begäran om att återkalla tilldelningen och ange säkerhetsobjekt, rolldefinition, requestType = AdminRemove och omfång. Om du vill anropa det här API:et måste du ha åtkomst till åtgärden Microsoft.Authorization/roleAssignments/write . Av de inbyggda rollerna beviljas endast ägare och administratör för användaråtkomst åtkomst åtkomst till den här åtgärden.

  1. Använd ett GUID-verktyg för att generera en unik identifierare som ska användas för rolltilldelningsidentifieraren. Identifieraren har formatet: 00000000-0000-0000-0000-000000000000

  2. Börja med följande begäran:

    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. I URI:n ersätter du {scope} med omfånget för att ta bort rolltilldelningen.

    Omfång Typ
    providers/Microsoft.Management/managementGroups/{mg-name} Hanteringsgrupp
    subscriptions/{subscriptionId} Prenumeration
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 Resursgrupp
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/ providers/Microsoft.Web/sites/mysite1 Resurs
  4. Ersätt {roleAssignmentScheduleRequestName} med GUID-identifieraren för rolltilldelningen.

Aktivera en berättigad rolltilldelning

Om du vill aktivera en berättigad rolltilldelning (få aktiverad åtkomst) använder du schemabegäranden för rolltilldelning – Skapa REST-API för att skapa en ny begäran och ange säkerhetsobjekt, rolldefinition, requestType = SelfActivate och omfång. Om du vill anropa det här API:et måste du ha en berättigad rolltilldelning i omfånget.

  1. Använd ett GUID-verktyg för att generera en unik identifierare som ska användas för rolltilldelningsidentifieraren. Identifieraren har formatet: 00000000-0000-0000-0000-000000000000

  2. [Valfritt] Välj en RoleEligibilitySchedule som du vill aktivera och hämta från API:et RoleEligibilityScheduleIdför rollberättigandescheman för att skicka in som LinkedRoleEligibilityScheduleId. Det här är valfritt och om det inte godkänns väljer systemet en RoleEligibilitySchedule.

  3. Börja med följande begäran:

    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. I URI:n ersätter du {scope} med omfånget för att ta bort rolltilldelningen.

    Omfång Typ
    providers/Microsoft.Management/managementGroups/{mg-name} Hanteringsgrupp
    subscriptions/{subscriptionId} Prenumeration
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 Resursgrupp
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/ providers/Microsoft.Web/sites/mysite1 Resurs
  5. Ersätt {roleAssignmentScheduleRequestName} med GUID-identifieraren för rolltilldelningen.

Inaktivera en aktiv rolltilldelning

Om du vill avaktivera en aktiverad rolltilldelning (ta bort aktiverad åtkomst) använder du schemabegäranden för rolltilldelning – Skapa REST-API för att skapa en ny begäran och ange säkerhetsobjekt, rolldefinition, requestType = SelfDeactivate och omfång. Om du vill anropa det här API:et måste du ha en aktiverad rolltilldelning i omfånget.

  1. Använd ett GUID-verktyg för att generera en unik identifierare som ska användas för rolltilldelningsidentifieraren. Identifieraren har formatet: 00000000-0000-0000-0000-000000000000

  2. Börja med följande begäran:

    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. I URI:n ersätter du {scope} med omfånget för att ta bort rolltilldelningen.

    Omfång Typ
    providers/Microsoft.Management/managementGroups/{mg-name} Hanteringsgrupp
    subscriptions/{subscriptionId} Prenumeration
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 Resursgrupp
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1/ providers/Microsoft.Web/sites/mysite1 Resurs
  4. Ersätt {roleAssignmentScheduleRequestName} med GUID-identifieraren för rolltilldelningen.

Just-Enough-Access (JEA)

Om en användare har en berättigad rolltilldelning på en resurs (överordnad) kan de välja att aktivera rollen på underordnad nivå för den överordnade resursen i stället för hela det överordnade omfånget. Om en användare till exempel har Contributor en berättigad roll i en prenumeration kan de aktivera rollen på en underordnad resursgruppsnivå i prenumerationen.

Om du vill hämta en lista över alla underordnade till en resurs som du har berättigad åtkomst till kan du använda API:et Berättigade underordnade resurser .

  1. Börja med följande begäran:

    GET https://management.azure.com/{scope}/providers/Microsoft.Authorization/eligibleChildResources?api-version=2020-10-01&$filter={filter}
    
  2. I URI:n ersätter du {scope} med det omfång som du vill lista rolltilldelningarna för.

    Omfång Typ
    providers/Microsoft.Management/managementGroups/{mg-name} Hanteringsgrupp
    subscriptions/{subscriptionId} Prenumeration
    subscriptions/{subscriptionId}/resourceGroups/myresourcegroup1 Resursgrupp
  3. Ersätt {filter} med det villkor som du vill använda för att filtrera rolltilldelningslistan.

    Filtrera Description
    $filter=resourceType+eq+'Subscription' Lista resurser av typen = "Prenumeration".
    $filter=$filter=resourceType+eq+'subscription'+or+resourceType+eq+'resourcegroup'' Lista resurser av typen = "Prenumeration" eller typ = "ResourceGroup".
  4. Använd för id alla underordnade resurser som ska användas som scope för aktiveringen RoleAssignmentScheduleRequest

Vanliga fel som returneras för en ny begäran

Nedan visas en lista över vanliga fel som kan uppstå när du skapar en ny begäran och hur du åtgärdar dem.

Felmeddelande Explanantion Åtgärd
code: RoleAssignmentExists
message: Rolltilldelningen finns redan.
Det finns redan en liknande rolltilldelning Du kan GET utföra den här rolltilldelningen och verifiera dess schema.
code: RoleAssignmentRequestPolicyValidationFailed
message: Följande principregler misslyckades: ["ExpirationRule"]
Angiven ScheduleInfo i begäran överskrider den maximala tillåtna varaktigheten Du kan GET använda RoleManagementPolicy för detta RoleDefinitionId och kontrollera RoleManagementPolicyExpirationRule
code: RoleAssignmentRequestPolicyValidationFailed
message: Följande principregler misslyckades: ["JustificationRule"]
Du måste ange en Justification i begärandetexten Du kan GET använda RoleManagementPolicy för detta RoleDefinitionId och kontrollera RoleManagementPolicyEnablementRule
code: RoleAssignmentRequestPolicyValidationFailed
message: Följande principregler misslyckades: ["EligibilityRule"]
Det finns inget giltigt RoleEligibilityScheduleInstance alternativ för att aktivera den här rollen En resursadministratör måste skapa en RoleEligibilityScheduleRequest för det här huvudkontot
code: RoleAssignmentRequestPolicyValidationFailed
message: Följande principregler misslyckades: ["TicketingRule"]
Du måste ange en TicketInfo i begärandetexten Du kan GET använda RoleManagementPolicy för detta RoleDefinitionId och kontrollera RoleManagementPolicyEnablementRule
code: RoleAssignmentRequestPolicyValidationFailed
message: Följande principregler misslyckades: ["MfaRule"]
Du måste slutföra Azure Multi-Factor Authentication för att skicka den här begäran Du kan GET använda RoleManagementPolicy för detta RoleDefinitionId och kontrollera RoleManagementPolicyEnablementRule