Hinzufügen und Bearbeiten der Bedingungen für die Azure-Rollenzuweisung mithilfe der REST-API

Eine Azure-Rollenzuweisungsbedingung ist eine zusätzliche Überprüfung, die Sie Ihrer Rollenzuweisung optional hinzufügen können, um die Zugriffssteuerung präziser zu gestalten. So können Sie beispielsweise eine Bedingung hinzufügen, die festgelegt, dass ein Objekt über ein bestimmtes Tag verfügen muss, damit das Objekt gelesen werden kann. In diesem Artikel wird beschrieben, wie Sie Bedingungen mithilfe der REST-API für Ihre Rollenzuweisungen hinzufügen, bearbeiten, auflisten und löschen können.

Voraussetzungen

Sie müssen die folgenden Versionen verwenden:

  • 2020-03-01-preview oder höher
  • 2020-04-01-preview oder höher, wenn Sie die Eigenschaft description für Rollenzuweisungen verwenden möchten
  • 2022-04-01 ist die erste stabile Version.

Weitere Informationen zu den Voraussetzungen für das Hinzufügen oder Bearbeiten von Rollenzuweisungsbedingungen finden Sie unter Voraussetzungen für Bedingungen.

Eine Bedingung hinzufügen

Verwenden Sie den Vorgang Role Assignments – Create (Rollenzuweisungen: Erstellen) REST-API, um eine Rollenzuweisungsbedingung hinzuzufügen. Der Vorgang Role Assignments – Create umfasst die folgenden Parameter bezüglich Bedingungen.

Parameter Typ Beschreibung
condition String Hierbei handelt es sich um die Bedingung, unter der dem Benutzer die Berechtigung erteilt werden kann.
conditionVersion String Hierbei handelt es sich um die Version der Bedingungssyntax. Wenn condition ohne conditionVersion angegeben wird, wird die Standardversion 2.0 festgelegt.

Verwenden Sie die folgende Anforderung und den folgenden Text:

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}"
    }
}

Im folgenden Beispiel wird gezeigt, wie Sie die Rolle Storage-Blobdatenleser mit einer Bedingung zuweisen. Die Bedingung überprüft, ob der Containername „blobs-example-container“ entspricht.

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"
    }
}

Nachfolgend sehen Sie ein Beispiel für die Ausgabe:

{
    "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}"
}

Bearbeiten einer Bedingung

Zum Bearbeiten einer vorhandenen Rollenzuweisungsbedingung verwenden Sie denselben REST-API-Vorgang (Role Assignments – Create), den Sie zum Hinzufügen der Rollenzuweisungsbedingung verwendet haben. Im folgenden JSON-Beispielcode wurden condition und description geändert. Nur die Eigenschaften condition, conditionVersion und description können bearbeitet werden. Sie müssen die anderen Eigenschaften entsprechend der vorhandenen Rollenzuweisung angeben.

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"
    }
}

Auflisten einer Bedingung

Um eine Rollenzuweisungsbedingung aufzulisten, verwenden Sie eine der Get- oder List-REST-APIs für Rollenzuweisungen. Weitere Informationen finden Sie unter Auflisten von Azure-Rollenzuweisungen mithilfe der REST-API.

Löschen einer Bedingung

Zum Löschen einer Rollenzuweisungsbedingung bearbeiten Sie die Rollenzuweisungsbedingung und legen sowohl für die Bedingung als auch für die Bedingungsversion entweder eine leere Zeichenfolge oder den Wert NULL fest.

Alternativ können Sie den REST-API-Vorgang Role Assignments – Delete (Rollenzuweisungen: Löschen) verwenden, wenn Sie sowohl die Rollenzuweisung als auch die Bedingung löschen möchten. Weitere Informationen finden Sie unter Entfernen von Azure-Rollenzuweisungen.

Nächste Schritte