共用方式為


使用 REST API 來新增或編輯 Azure 角色指派條件

Azure 角色指派條件是額外的檢查,您可以選擇性地將其新增至您的角色指派,以提供更精細的存取控制。 例如,您可以新增需要物件具有特定標記才能讀取物件的條件。 本文描述如何使用 REST API 來新增、編輯、列出或刪除角色指派條件。

必要條件

您必須使用下列版本:

  • 2020-03-01-preview (含) 以後版本
  • 2020-04-01-preview 或更新版本,如果您想要利用 description 屬性進行角色指派的話
  • 2022-04-01 是第一個穩定版本

如需新增或編輯角色指派條件的必要條件詳細資訊,請參閱必要條件

新增條件

若要新增角色指派條件,請使用 角色指派 - 建立 REST API。 角色指派 - 建立包含下列與條件相關的參數。

參數 類型 描述
condition String 使用者可獲得授權的條件。
conditionVersion String 條件語法的版本。 如果指定 condition 時不包含 conditionVersion,則版本會設為預設值 2.0。

使用下列要求和本文:

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

下列範例示範如何指派具有條件的儲存體 Blob 資料讀取者角色。 條件會檢查容器名稱是否等於 '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"
    }
}

以下顯示輸出的範例:

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

編輯條件

若要編輯現有的角色指派條件,請使用角色指派 - 建立 REST API,其與您用來新增角色指派條件的 REST API 相同。 下列顯示範例 JSON,其中 conditiondescription 已更新。 只能編輯 conditionconditionVersiondescription 屬性。 您必須指定其他屬性,以符合現有的角色指派。

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

列出條件

若要列出角色指派條件,請使用角色指派取得或列出 REST API。 如需詳細資訊,請參閱使用 REST API 列出 Azure 角色指派

刪除條件

若要刪除角色指派條件,請編輯角色指派條件,並將條件和條件版本同時設為空字串或 null。

或者,如果想要同時刪除角色指派和條件,您可以使用角色指派 - 刪除 API。 如需相關資訊,請參閱移除 Azure 角色指派

下一步