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.
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é.
Le journal d’activité dans le portail comporte plusieurs filtres. Voici les filtres RBAC Azure :
Filter | Valeur |
---|---|
Catégorie d'événements |
|
Opération |
|
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 :
Configurez l'activité pour votre espace de travail.
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.
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