Adicionar ou editar as condições da atribuição de função do Azure usando a CLI do Azure

Uma condição de atribuição de função do Azure é uma verificação adicional que você pode adicionar opcionalmente à 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 as atribuições de função usando a CLI do Azure.

Pré-requisitos

Para obter informações sobre os pré-requisitos para adicionar ou editar condições de atribuição de função, confira Pré-requisitos das condições.

Adicionar uma condição

Para adicionar uma condição de atribuição de função, use az role assignment create. O comando az role assignment create inclui os parâmetros a seguir relacionados às condições.

Parâmetro Tipo Descrição
condition Cadeia de caracteres Condição sob a qual o usuário pode receber permissão.
condition-version String Versão da sintaxe da condição. Se --condition for especificado sem --condition-version, a versão será definida como o valor padrão 2.0.

O exemplo a seguir mostra como atribuir a função de Leitor de Dados do Blob do Armazenamento com uma condição. A condição verifica se o nome do contêiner é igual a 'blobs-example-container'.

az role assignment create --role "Storage Blob Data Reader" --scope /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName --assignee "user1@contoso.com" \
--description "Read access if container name equals blobs-example-container" \
--condition "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))" \
--condition-version "2.0"

O texto a seguir mostra um exemplo da saída:

{
    "canDelegate": null,
    "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",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "name": "{roleAssignmentId}",
    "principalId": "{userObjectId}",
    "principalType": "User",
    "resourceGroup": "{resourceGroup}",
    "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}",
    "type": "Microsoft.Authorization/roleAssignments"
}

Editar uma condição

Para editar uma condição de atribuição de função existente, use az role assignment update e um arquivo JSON como entrada. Veja a seguir um arquivo JSON de exemplo em que a condição e a descrição são atualizadas. Somente as propriedades condition, conditionVersion e description podem ser editadas. Você precisa especificar todas as propriedades para atualizar a condição de atribuição de função.

{
    "canDelegate": null,
    "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",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "name": "{roleAssignmentId}",
    "principalId": "{userObjectId}",
    "principalType": "User",
    "resourceGroup": "{resourceGroup}",
    "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}",
    "type": "Microsoft.Authorization/roleAssignments"
}

Use az role assignment update para atualizar a condição da atribuição de função.

az role assignment update --role-assignment "./path/roleassignment.json"

O texto a seguir mostra um exemplo da saída:

{
    "canDelegate": null,
    "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",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "name": "{roleAssignmentId}",
    "principalId": "{userObjectId}",
    "principalType": "User",
    "resourceGroup": "{resourceGroup}",
    "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}",
    "type": "Microsoft.Authorization/roleAssignments"
}

Listar uma condição

Para listar uma condição de atribuição de função, use az role assignment list. Para obter mais informações, confira Listar as atribuições de função do Azure usando a CLI do Azure.

Excluir uma condição

Para excluir uma condição de atribuição de função, edite-a e defina as propriedades condition e condition-version como uma cadeia de caracteres vazia ("") ou null.

Como alternativa, se você quiser excluir a atribuição de função e a condição, use o comando az role assignment delete. Para saber mais, confira Remover atribuições de função do Azure.

Próximas etapas