Ajouter ou modifier des conditions d’attribution de rôle Azure avec l’API REST

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 oblige un objet à porter une étiquette spécifique pour être lu. Cet article explique comment ajouter, modifier, lister ou supprimer des conditions pour vos attributions de rôles à l’aide de l’API REST.

Prérequis

Vous devez utiliser les versions suivantes :

  • 2020-03-01-preview ou ultérieur
  • 2020-04-01-preview ou une version ultérieure si vous souhaitez utiliser la propriété description pour les attributions de rôles
  • 2022-04-01 est la première version stable

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

Ajouter une condition

Pour ajouter une condition d’attribution de rôle, utilisez l’API REST Attributions de rôles – Créer. Attributions de rôles – Créer comprend les paramètres suivants associés aux conditions.

Paramètre Type Description
condition String Condition sous laquelle l’utilisateur peut se voir accorder une autorisation.
conditionVersion String Version de la syntaxe de condition. Si condition est spécifié sans conditionVersion, la version est définie sur la valeur par défaut 2.0.

Utilisez la requête et le corps suivants :

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

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

Voici un exemple de sortie :

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

Modifier une condition

Pour modifier une condition d’attribution de rôle existante, utilisez la même API REST Attributions de rôles – Créer que celle utilisée pour ajouter la condition d’attribution de rôle. Ce qui suit montre un exemple de JSON où condition et description sont mis à jour. Seules les propriétés condition, conditionVersion et description peuvent être modifiées. Vous devez spécifier les autres propriétés pour qu’elles correspondent à l’attribution de rôle existante.

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

Lister une condition

Pour lister une condition d’attribution de rôle, utilisez l’API REST Lister ou Obtenir les attributions de rôles. Pour plus d’informations, consultez Lister les attributions de rôles Azure à l’aide de l’API REST.

Supprimer une condition

Pour supprimer une condition d’attribution de rôle, modifiez-la en définissant la condition et la version de condition sur une chaîne vide ou sur Null.

Si vous voulez supprimer à la fois l’attribution de rôle et la condition, vous pouvez également utiliser l’API Attributions de rôles – Supprimer. Pour plus d’informations, consultez Supprimer des attributions de rôles Azure.

Étapes suivantes