Azure-szerepkör-hozzárendelési feltételek hozzáadása vagy szerkesztése a REST API használatával

Az Azure-szerepkör-hozzárendelési feltétel egy további ellenőrzés, amelyet igény szerint hozzáadhat a szerepkör-hozzárendeléshez, hogy részletesebb hozzáférés-vezérlést biztosítson. Hozzáadhat például egy feltételt, amely megköveteli, hogy egy objektum egy adott címkével rendelkezzen az objektum olvasásához. Ez a cikk bemutatja, hogyan adhat hozzá, szerkeszthet, listázhat vagy törölhet feltételeket a szerepkör-hozzárendelésekhez a REST API használatával.

Előfeltételek

A következő verziókat kell használnia:

  • 2020-03-01-preview vagy újabb
  • 2020-04-01-preview vagy később, ha a tulajdonságot description szerepkör-hozzárendelésekhez szeretné használni
  • 2022-04-01 az első stabil verzió

A szerepkör-hozzárendelési feltételek hozzáadásának vagy szerkesztésének előfeltételeiről további információt a Feltételek előfeltételei című témakörben talál.

Feltétel hozzáadása

Szerepkör-hozzárendelési feltétel hozzáadásához használja a Szerepkör-hozzárendelések – REST API létrehozása lehetőséget. Szerepkör-hozzárendelések – A létrehozás a feltételekhez kapcsolódó alábbi paramétereket tartalmazza.

Paraméter Típus Description
condition Sztring Az a feltétel, amely alatt a felhasználó engedélyt kaphat.
conditionVersion Sztring A feltétel szintaxisának verziója. Ha condition nincs conditionVersionmegadva, akkor a verzió alapértelmezett értéke 2.0.

Használja a következő kérést és törzset:

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

Az alábbi példa bemutatja, hogyan rendelheti hozzá a Storage Blob-adatolvasó szerepkört egy feltételhez. A feltétel ellenőrzi, hogy a tároló neve "blob-example-container" értékű-e.

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

Az alábbiakban egy példa látható a kimenetre:

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

Feltétel szerkesztése

Meglévő szerepkör-hozzárendelési feltétel szerkesztéséhez használja ugyanazokat a szerepkör-hozzárendeléseket – REST API létrehozása a szerepkör-hozzárendelési feltétel hozzáadásához használt módon. Az alábbiakban egy JSON-példát mutatunk be, ahol condition és description amelyek frissülnek. Csak a condition, conditionVersionés description a tulajdonságok szerkeszthetők. Meg kell adnia a meglévő szerepkör-hozzárendelésnek megfelelő egyéb tulajdonságokat.

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

Feltétel listázása

Szerepkör-hozzárendelési feltétel listázásához használja a Szerepkör-hozzárendelések lekérése vagy a REST API listázása lehetőséget. További információ: Azure-szerepkör-hozzárendelések listázása a REST API használatával.

Feltétel törlése

Szerepkör-hozzárendelési feltétel törléséhez szerkessze a szerepkör-hozzárendelés feltételét, és állítsa a feltétel és a feltétel verzióját üres sztringre vagy null értékre.

Ha a szerepkör-hozzárendelést és a feltételt is törölni szeretné, használhatja a Szerepkör-hozzárendelések – Törlés API-t. For more information, see Remove Azure role assignments.

Következő lépések