Partager via


Ajouter ou modifier des conditions d’attribution de rôle Azure à l’aide d’Azure CLI

Une condition d’attribution de rôle Azure est une vérification supplémentaire que vous pouvez éventuellement ajouter à votre attribution de rôle pour fournir un contrôle d’accès plus précis. Par exemple, vous pouvez ajouter une condition qui nécessite qu’un objet ait une balise spécifique pour lire l’objet. Cet article explique comment ajouter, modifier, lister ou supprimer des conditions pour vos attributions de rôles à l’aide d’Azure CLI.

Prerequisites

Pour plus d’informations sur les conditions préalables à l’ajout ou à la modification des conditions d’attribution de rôle, consultez Conditions préalables.

Ajouter une condition

Pour ajouter une condition d’attribution de rôle, utilisez az role assignment create. La commande az role assignment create inclut les paramètres suivants liés aux conditions.

Paramètre Type Descriptif
condition Chaîne Condition sous laquelle l’utilisateur peut recevoir l’autorisation.
condition-version Chaîne Version de la syntaxe de condition. Si --condition est spécifié sans --condition-version, la version est définie à la valeur par défaut de 2.0.

L’exemple suivant montre comment attribuer le rôle Lecteur de données Blob de stockage avec une condition. La condition vérifie si le nom du conteneur est égal à « 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"

Voici un exemple de sortie :

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

Modifier une condition

Pour modifier une condition d’attribution de rôle existante, utilisez az role assignment update et un fichier JSON comme entrée. L’exemple suivant montre un exemple de fichier JSON où la condition et la description sont mises à jour. Seules les propriétés condition, conditionVersion, et description peuvent être modifiées. Vous devez spécifier toutes les propriétés pour mettre à jour la condition d’attribution de rôle.

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

Utilisez az role assignment update pour mettre à jour la condition de l’attribution de rôle.

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

Voici un exemple de sortie :

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

Répertorier une condition

Pour répertorier une condition d’attribution de rôle, utilisez az role assignment list. Pour plus d’informations, consultez Répertorier les attributions de rôles Azure à l’aide d’Azure CLI.

Supprimer une condition

Pour supprimer une condition d’attribution de rôle, modifiez la condition d’attribution de rôle et définissez les propriétés condition et condition-version sur une chaîne vide ("") ou null.

Sinon, si vous souhaitez supprimer à la fois l’attribution de rôle et la condition, vous pouvez utiliser la commande az role assignment delete . Pour plus d’informations, consultez Supprimer des attributions de rôles Azure.

Étapes suivantes