Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Uma condição de atribuição de função do Azure é uma verificação adicional que você pode adicionar opcionalmente à sua atribuição de função para fornecer um controle de acesso mais refinado. Por exemplo, você pode adicionar uma condição que exige que um objeto tenha uma marca específica para ler o objeto. Este artigo descreve como adicionar, editar, listar ou excluir condições para suas atribuições de função usando a API REST.
Pré-requisitos
Você deve usar as versões a seguir:
-
2020-03-01-previewou posterior -
2020-04-01-previewou posterior se você quiser utilizar adescriptionpropriedade para atribuições de função -
2022-04-01é a primeira versão estável
Para obter mais informações sobre os pré-requisitos para adicionar ou editar condições de atribuição de função, consulte os pré-requisitos de condições.
Adicione uma condição
Para adicionar uma condição de atribuição de função, use a API REST Atribuições de Função – Criar. Atribuições de Função – Criar inclui os seguintes parâmetros relacionados às condições.
| Parâmetro | Tipo | Description |
|---|---|---|
condition |
String | Condição sob a qual o usuário pode receber permissão. |
conditionVersion |
String | Versão da sintaxe da condição. Se condition for especificado sem conditionVersion, a versão será definida como o valor padrão de 2.0. |
Use a solicitação e o corpo seguintes:
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}"
}
}
O exemplo a seguir mostra como atribuir a função Leitor de Dados de Blob de Armazenamento com uma condição. A condição verifica se o nome do contêiner é igual a '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"
}
}
O seguinte mostra um exemplo da saída:
{
"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}"
}
Editar uma condição
Para editar uma condição de atribuição de função existente, use as mesmas Atribuições de Função – Criar API REST que você usou para adicionar a condição de atribuição de função. O exemplo a seguir mostra um JSON de exemplo em que condition e description são atualizados. Somente as propriedades condition, conditionVersion e description podem ser editadas. Você deve especificar as outras propriedades para corresponder à atribuição de função existente.
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"
}
}
Listar uma condição
Para listar uma condição de atribuição de função, use a API REST Obter ou Listar das Atribuições de Função. Para obter mais informações, consulte Listar atribuições de função do Azure usando a API REST.
Excluir uma condição
Para excluir uma condição de atribuição de função, edite a condição de atribuição de função e defina a condição e a versão da condição como uma cadeia de caracteres vazia ou nula.
Como alternativa, se você quiser excluir a atribuição de função e a condição, poderá usar as Atribuições de Função – Excluir API. Para saber mais, confira Remover atribuições de função do Azure.