Visa aktivitetsloggar för Azure RBAC-ändringar

Ibland behöver du information om ändringar i rollbaserad åtkomstkontroll i Azure (Azure RBAC), till exempel i gransknings- eller felsökningssyfte. När någon gör ändringar i rolltilldelningar eller rolldefinitioner i dina prenumerationer loggas ändringarna i Azure-aktivitetsloggen. Du kan visa aktivitetsloggarna för att se alla Azure RBAC-ändringar under de senaste 90 dagarna.

Åtgärder som loggas

Här är de Azure RBAC-relaterade åtgärder som loggas i aktivitetsloggen:

  • Skapa rolltilldelning
  • Ta bort rolltilldelning
  • Skapa eller uppdatera anpassad rolldefinition
  • Ta bort anpassad rolldefinition

Azure Portal

Det enklaste sättet att komma igång på är att visa aktivitetsloggarna i Azure Portal. Följande skärmbild visar ett exempel på rolltilldelningsåtgärder i aktivitetsloggen. Den innehåller också ett alternativ för att ladda ned loggarna som en CSV-fil.

Activity logs using the portal - screenshot

Om du vill ha mer information klickar du på en post för att öppna sammanfattningsfönstret. Klicka på fliken JSON för att hämta en detaljerad logg.

Activity logs using the portal with summary pane open - screenshot

Aktivitetsloggen i portalen har flera filter. Här är de Azure RBAC-relaterade filtren:

Filtrera Värde
Händelsekategori
  • Administrativ
Åtgärd
  • Skapa rolltilldelning
  • Ta bort rolltilldelning
  • Skapa eller uppdatera anpassad rolldefinition
  • Ta bort anpassad rolldefinition

Mer information om aktivitetsloggar finns i Azure-aktivitetsloggen.

Tolka en loggpost

Loggutdata från JSON-fliken, Azure PowerShell eller Azure CLI kan innehålla mycket information. Här är några av de viktigaste egenskaperna att söka efter när du försöker tolka en loggpost. Information om hur du filtrerar loggutdata med Hjälp av Azure PowerShell eller Azure CLI finns i följande avsnitt.

Property Exempelvärden Description
authorization:action Microsoft.Authorization/roleAssignments/write Skapa rolltilldelning
Microsoft.Authorization/roleAssignments/delete Ta bort rolltilldelning
Microsoft.Authorization/roleDefinitions/write Skapa eller uppdatera rolldefinition
Microsoft.Authorization/roleDefinitions/delete Ta bort rolldefinition
authorization:scope /subscriptions/{subscriptionId}
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}
Omfång för åtgärden
Ringer admin@example.com
{objectId}
Vem initierade åtgärden
eventTimestamp 2021-03-01T22:07:41.126243Z Tid då åtgärden inträffade
status:value Börjat
Slutförd
Misslyckad
Status för åtgärden

Azure PowerShell

Om du vill visa aktivitetsloggar med Azure PowerShell använder du kommandot Get-AzLog .

Det här kommandot visar alla ändringar av rolltilldelningen i en prenumeration under de senaste sju dagarna:

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

Det här kommandot visar alla ändringar i rolldefinitionen i en resursgrupp under de senaste sju dagarna:

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

Filtrera loggutdata

Loggutdata kan innehålla mycket information. Det här kommandot visar alla ändringar av rolltilldelning och rolldefinitioner i en prenumeration under de senaste sju dagarna och filtrerar utdata:

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

Följande visar ett exempel på filtrerade loggutdata när du skapar en rolltilldelning:

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}

Om du använder ett huvudnamn för tjänsten för att skapa rolltilldelningar blir egenskapen Anropare ett objekt-ID för tjänstens huvudnamn. Du kan använda Get-AzADServicePrincipal för att få information om tjänstens huvudnamn.

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

Om du vill visa aktivitetsloggar med Azure CLI använder du kommandot az monitor activity-log list .

Det här kommandot visar aktivitetsloggarna i en resursgrupp från den 1 mars och ser fram emot sju dagar:

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

Det här kommandot visar aktivitetsloggarna för auktoriseringsresursprovidern från den 1 mars och ser fram emot sju dagar:

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

Filtrera loggutdata

Loggutdata kan innehålla mycket information. Det här kommandot visar alla rolltilldelnings- och rolldefinitionsändringar i en prenumeration som ser fram emot sju dagar och filtrerar utdata:

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

Följande visar ett exempel på filtrerade loggutdata när du skapar en rolltilldelning:

[
 {
    "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\"}}"
    }
  }
]

Azure Monitor-loggar

Azure Monitor-loggar är ett annat verktyg som du kan använda för att samla in och analysera Azure RBAC-ändringar för alla dina Azure-resurser. Azure Monitor-loggar har följande fördelar:

  • Skriva komplexa frågor och logik
  • Integrera med aviseringar, Power BI och andra verktyg
  • Spara data för längre kvarhållningsperioder
  • Korsreferens med andra loggar som säkerhet, virtuell dator och anpassad

Här är de grundläggande stegen för att komma igång:

  1. Skapa en Log Analytics-arbetsyta.

  2. Konfigurera aktiviteten för din arbetsyta.

  3. Visa aktivitetsloggarna Insights. Ett snabbt sätt att navigera till sidan Översikt över aktivitetsloggar är att klicka på alternativet Loggar .

    Azure Monitor logs option in portal

  4. Du kan också använda Azure Monitor Log Analytics för att fråga efter och visa loggarna. Mer information finns i Komma igång med loggfrågor i Azure Monitor.

Här är en fråga som returnerar nya rolltilldelningar ordnade efter målresursprovider:

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

Här är en fråga som returnerar rolltilldelningsändringar som visas i ett diagram:

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

Nästa steg