Afficher les journaux d’activité pour voir les changements RBAC Azure

Vous avez parfois besoin d’informations sur les modifications du contrôle d’accès en fonction du rôle Azure (RBAC Azure), par exemple à des fins d’audit ou de dépannage. Quand un utilisateur apporte des changements à des attributions ou des définitions de rôle au sein de vos abonnements, ceux-ci sont journalisés dans la catégorie Journal d’activité Azure. Vous pouvez afficher les journaux d’activité pour voir tous les changements RBAC Azure des 90 derniers jours.

Opérations journalisées

Voici les opérations RBAC Azure qui sont journalisées dans le journal d’activité :

  • Créer une attribution de rôle
  • Supprimer une attribution de rôle
  • Créer ou mettre à jour une définition de rôle personnalisée
  • Supprimer la définition de rôle personnalisée

Portail Azure

Pour commencer, le plus simple est d’afficher les journaux d’activité avec le portail Azure. La capture d’écran suivante montre un exemple d’opérations d’attribution de rôle dans le journal d’activité. Elle contient également une option pour télécharger les journaux dans un fichier CSV.

Activity logs using the portal - screenshot

Pour obtenir plus d’informations, cliquez sur une entrée pour ouvrir le volet Résumé. Cliquez sur l’onglet JSON pour obtenir un journal détaillé.

Activity logs using the portal with summary pane open - screenshot

Le journal d’activité dans le portail comporte plusieurs filtres. Voici les filtres RBAC Azure :

Filtrer Valeur
Catégorie d'événements
  • Administratif
Opération
  • Créer une attribution de rôle
  • Supprimer une attribution de rôle
  • Créer ou mettre à jour une définition de rôle personnalisée
  • Supprimer la définition de rôle personnalisée

Pour plus d’informations à propos des journaux d’activité, consultez Journal d’activité Azure.

Interpréter une entrée de journal

La sortie de journal à partir de l’onglet JSON, d’Azure PowerShell ou d’Azure CLI peut inclure un grand nombre d’informations. Voici quelques-unes des propriétés clés à rechercher lors de la tentative d’interpréter une entrée de journal. Pour plus d’informations sur les méthodes de filtrage de la sortie de journal à l’aide d’Azure PowerShell ou d’Azure CLI, consultez les sections suivantes.

Propriété Exemples de valeurs Description
autorisation:action Microsoft.Authorization/roleAssignments/write Créer une attribution de rôle
Microsoft.Authorization/roleAssignments/delete Supprimer une attribution de rôle
Microsoft.Authorization/roleDefinitions/write Créer ou mettre à jour une définition de rôle
Microsoft.Authorization/roleDefinitions/delete Supprimer une définition de rôle
autorisation:étendue /subscriptions/{subscriptionId}
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}
Étendue de l’action
caller admin@example.com
{objectId}
Qui a initié l’action
eventTimestamp 2021-03-01T22:07:41.126243Z Heure à laquelle l’action s’est produite
état:valeur Démarré
Opération réussie
Échec
État de l’action

Azure PowerShell

Pour afficher les journaux d’activité avec Azure PowerShell, utilisez la commande Get-AzLog.

Cette commande liste tous les changements d’attribution de rôle dans un abonnement au cours des sept derniers jours :

Get-AzLog -StartTime (Get-Date).AddDays(-7) | Where-Object {$_.Authorization.Action -like 'Microsoft.Authorization/roleAssignments/*'}

Cette commande liste tous les changements de définition de rôle dans un groupe de ressources au cours des sept derniers jours :

Get-AzLog -ResourceGroupName pharma-sales -StartTime (Get-Date).AddDays(-7) | Where-Object {$_.Authorization.Action -like 'Microsoft.Authorization/roleDefinitions/*'}

Filtrer la sortie du journal

La sortie du journal peut inclure un grand nombre d’informations. Cette commande répertorie tous les changements d’attribution de rôle et de définition de rôle dans un abonnement au cours des sept derniers jours, et filtre la sortie :

Get-AzLog -StartTime (Get-Date).AddDays(-7) | Where-Object {$_.Authorization.Action -like 'Microsoft.Authorization/role*'} | Format-List Caller,EventTimestamp,{$_.Authorization.Action},Properties

Voici un exemple de sortie du journal filtrée lors de la création d’une attribution de rôle :

Caller                  : admin@example.com
EventTimestamp          : 3/1/2021 10:07:42 PM
$_.Authorization.Action : Microsoft.Authorization/roleAssignments/write
Properties              :
                          statusCode     : Created
                          serviceRequestId: {serviceRequestId}
                          eventCategory  : Administrative
                          entity         : /subscriptions/{subscriptionId}/resourceGroups/example-group/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}
                          message        : Microsoft.Authorization/roleAssignments/write
                          hierarchy      : {tenantId}/{subscriptionId}

Caller                  : admin@example.com
EventTimestamp          : 3/1/2021 10:07:41 PM
$_.Authorization.Action : Microsoft.Authorization/roleAssignments/write
Properties              :
                          requestbody    : {"Id":"{roleAssignmentId}","Properties":{"PrincipalId":"{principalId}","PrincipalType":"User","RoleDefinitionId":"/providers/Microsoft.Authorization/roleDefinitions/fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64","Scope":"/subscriptions/
                          {subscriptionId}/resourceGroups/example-group"}}
                          eventCategory  : Administrative
                          entity         : /subscriptions/{subscriptionId}/resourceGroups/example-group/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}
                          message        : Microsoft.Authorization/roleAssignments/write
                          hierarchy      : {tenantId}/{subscriptionId}

Si vous utilisez un principal de service pour créer des attributions de rôles, la propriété Appelant est un ID d’objet principal de service. Vous pouvez utiliser Get-AzADServicePrincipal pour obtenir des informations sur le principal du service.

Caller                  : {objectId}
EventTimestamp          : 3/1/2021 9:43:08 PM
$_.Authorization.Action : Microsoft.Authorization/roleAssignments/write
Properties              : 
                          statusCode     : Created
                          serviceRequestId: {serviceRequestId}
                          eventCategory  : Administrative

Azure CLI

Pour afficher les journaux d’activité avec l’interface de ligne de commande Azure, utilisez la commande az monitor activity-log list.

Cette commande répertorie les journaux d’activité d’un groupe de ressources sur une période de sept jours à partir du 1er mars :

az monitor activity-log list --resource-group example-group --start-time 2021-03-01 --offset 7d

Cette commande répertorie les journaux d’activité d’un fournisseur de ressources Authorization sur une période de sept jours à partir du 1er mars :

az monitor activity-log list --namespace "Microsoft.Authorization" --start-time 2021-03-01 --offset 7d

Filtrer la sortie du journal

La sortie du journal peut inclure un grand nombre d’informations. Cette commande répertorie tous les changements d’attribution et de définition de rôle dans un abonnement sur une période de sept jours, et filtre la sortie :

az monitor activity-log list --namespace "Microsoft.Authorization" --start-time 2021-03-01 --offset 7d --query '[].{authorization:authorization, caller:caller, eventTimestamp:eventTimestamp, properties:properties}'

Voici un exemple de sortie du journal filtrée lors de la création d’une attribution de rôle :

[
 {
    "authorization": {
      "action": "Microsoft.Authorization/roleAssignments/write",
      "role": null,
      "scope": "/subscriptions/{subscriptionId}/resourceGroups/example-group/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}"
    },
    "caller": "admin@example.com",
    "eventTimestamp": "2021-03-01T22:07:42.456241+00:00",
    "properties": {
      "entity": "/subscriptions/{subscriptionId}/resourceGroups/example-group/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
      "eventCategory": "Administrative",
      "hierarchy": "{tenantId}/{subscriptionId}",
      "message": "Microsoft.Authorization/roleAssignments/write",
      "serviceRequestId": "{serviceRequestId}",
      "statusCode": "Created"
    }
  },
  {
    "authorization": {
      "action": "Microsoft.Authorization/roleAssignments/write",
      "role": null,
      "scope": "/subscriptions/{subscriptionId}/resourceGroups/example-group/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}"
    },
    "caller": "admin@example.com",
    "eventTimestamp": "2021-03-01T22:07:41.126243+00:00",
    "properties": {
      "entity": "/subscriptions/{subscriptionId}/resourceGroups/example-group/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
      "eventCategory": "Administrative",
      "hierarchy": "{tenantId}/{subscriptionId}",
      "message": "Microsoft.Authorization/roleAssignments/write",
      "requestbody": "{\"Id\":\"{roleAssignmentId}\",\"Properties\":{\"PrincipalId\":\"{principalId}\",\"PrincipalType\":\"User\",\"RoleDefinitionId\":\"/providers/Microsoft.Authorization/roleDefinitions/fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64\",\"Scope\":\"/subscriptions/{subscriptionId}/resourceGroups/example-group\"}}"
    }
  }
]

Journaux d’activité Azure Monitor

Les journaux Azure Monitor sont un autre outil que vous pouvez utiliser pour collecter et analyser les changements RBAC Azure de toutes vos ressources Azure. Les journaux Azure Monitor possèdent les avantages suivants :

  • Écriture de requêtes et d’une logique complexes
  • Intégration aux alertes, à Power BI et à d’autres outils
  • Enregistrement des données pour des périodes de rétention plus longues
  • Références croisées à d’autres journaux d’activité, tels que ceux liés à la sécurité, aux machines virtuelles et aux journaux d’activité personnalisés

Voici les étapes de base pour bien démarrer :

  1. Créez un espace de travail Log Analytics.

  2. Configurez l'activité pour votre espace de travail.

  3. Affichez les insights des journaux d'activité. Un moyen rapide d’accéder à la page Vue d’ensemble du journal d’activité consiste à cliquer sur l’option Journaux.

    Azure Monitor logs option in portal

  4. Si vous le souhaitez, vous pouvez utiliser Azure Monitor Log Analytics pour interroger et afficher les journaux. Pour plus d’informations, voir Bien démarrer avec les requêtes de journal dans Azure Monitor.

Voici une requête qui retourne les nouvelles attributions de rôle organisées par fournisseur de ressources cible :

AzureActivity
| where TimeGenerated > ago(60d) and Authorization contains "Microsoft.Authorization/roleAssignments/write" and ActivityStatus == "Succeeded"
| parse ResourceId with * "/providers/" TargetResourceAuthProvider "/" *
| summarize count(), makeset(Caller) by TargetResourceAuthProvider

Voici une requête qui retourne des changements d’attribution de rôle affichés dans un graphique :

AzureActivity
| where TimeGenerated > ago(60d) and Authorization contains "Microsoft.Authorization/roleAssignments"
| summarize count() by bin(TimeGenerated, 1d), OperationName
| render timechart

Activity logs using the Advanced Analytics portal - screenshot

Étapes suivantes