Dodawanie lub edytowanie warunków przypisywania ról platformy Azure przy użyciu interfejsu API REST

Warunek przypisania roli platformy Azure to dodatkowa kontrola, którą można opcjonalnie dodać do przypisania roli, aby zapewnić bardziej szczegółową kontrolę dostępu. Można na przykład dodać warunek, który wymaga, aby obiekt miał określony tag do odczytania obiektu. W tym artykule opisano sposób dodawania, edytowania, wyświetlania listy lub usuwania warunków przypisań ról przy użyciu interfejsu API REST.

Wymagania wstępne

Należy użyć następujących wersji:

  • 2020-03-01-preview lub nowsze
  • 2020-04-01-preview lub później, jeśli chcesz użyć description właściwości dla przypisań ról
  • 2022-04-01 jest pierwszą stabilną wersją

Aby uzyskać więcej informacji na temat wymagań wstępnych dotyczących dodawania lub edytowania warunków przypisania roli, zobacz Warunki wstępne.

Dodaj warunek

Aby dodać warunek przypisania roli, użyj przypisań ról — tworzenie interfejsu API REST. Przypisania ról — tworzenie zawiera następujące parametry związane z warunkami.

Parametr Type opis
condition Ciąg Warunek, w którym użytkownik może mieć uprawnienia.
conditionVersion Ciąg Wersja składni warunku. Jeśli condition określono wartość bez conditionVersion, wersja jest ustawiona na wartość domyślną 2.0.

Użyj następującego żądania i treści:

PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
    "properties": {
        "roleDefinitionId": "/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}",
        "principalId": "{principalId}",
        "condition": "{condition}",
        "conditionVersion": "2.0",
        "description": "{description}"
    }
}

W poniższym przykładzie pokazano, jak przypisać rolę Czytelnik danych obiektu blob usługi Storage z warunkiem. Warunek sprawdza, czy nazwa kontenera jest równa "blobs-example-container".

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "principalId": "{principalId}",
        "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))",
        "conditionVersion": "2.0",
        "description": "Read access if container name equals blobs-example-container"
    }
}

Poniżej przedstawiono przykład danych wyjściowych:

{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "principalId": "{principalId}",
        "principalType": "User",
        "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
        "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))",
        "conditionVersion": "2.0",
        "createdOn": "2022-07-20T06:20:44.0205560Z",
        "updatedOn": "2022-07-20T06:20:44.2955371Z",
        "createdBy": null,
        "updatedBy": "{updatedById}",
        "delegatedManagedIdentityResourceId": null,
        "description": "Read access if container name equals blobs-example-container"
    },
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "type": "Microsoft.Authorization/roleAssignments",
    "name": "{roleAssignmentId}"
}

Edytowanie warunku

Aby edytować istniejący warunek przypisania roli, użyj tych samych przypisań ról — utwórz interfejs API REST, który został użyty do dodania warunku przypisania roli. Poniżej przedstawiono przykładowy kod JSON, w którym condition i description gdzie są aktualizowane. conditionTylko właściwości , conditionVersioni description można edytować. Aby dopasować istniejące przypisanie roli, należy określić inne właściwości.

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "principalId": "{principalId}",
        "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container' OR @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container2'))",
        "conditionVersion": "2.0",
        "description": "Read access if container name equals blobs-example-container or blobs-example-container2"
    }
}

Wyświetlanie listy warunku

Aby wyświetlić listę warunków przypisania roli, użyj interfejsu API REST Uzyskiwanie lub Wyświetlanie listy przypisań ról. Aby uzyskać więcej informacji, zobacz Wyświetlanie listy przypisań ról platformy Azure przy użyciu interfejsu API REST.

Usuwanie warunku

Aby usunąć warunek przypisania roli, zmodyfikuj warunek przypisania roli i ustaw zarówno warunek, jak i wersję warunku na pusty ciąg lub wartość null.

Alternatywnie, jeśli chcesz usunąć zarówno przypisanie roli, jak i warunek, możesz użyć interfejsu API Przypisania ról — Usuwanie . Aby uzyskać więcej informacji, zobacz Usuwanie przypisań ról platformy Azure.

Następne kroki