Wyświetlanie dzienników aktywności dla zmian kontroli dostępu opartej na rolach platformy Azure

Czasami potrzebujesz informacji na temat zmian kontroli dostępu na podstawie ról (RBAC) platformy Azure, takich jak inspekcja lub rozwiązywanie problemów. Za każdym razem, gdy ktoś wprowadza zmiany w przypisaniach ról lub definicjach ról w ramach subskrypcji, zmiany są rejestrowane w dzienniku aktywności platformy Azure. Dzienniki aktywności można wyświetlić, aby wyświetlić wszystkie zmiany kontroli dostępu opartej na rolach platformy Azure w ciągu ostatnich 90 dni.

Zarejestrowane operacje

Poniżej przedstawiono operacje związane z kontrolą dostępu opartą na rolach platformy Azure, które są rejestrowane w dzienniku aktywności:

  • Utworzenie przypisania roli
  • Usunięcie przypisania roli
  • Tworzenie lub aktualizowanie definicji roli niestandardowej
  • Usunięcie niestandardowej definicji roli

Azure Portal

Najprostszym sposobem rozpoczęcia pracy jest wyświetlenie dzienników aktywności za pomocą witryny Azure Portal. Poniższy zrzut ekranu przedstawia przykład operacji przypisywania ról w dzienniku aktywności. Zawiera również opcję pobierania dzienników jako pliku CSV.

Activity logs using the portal - screenshot

Aby uzyskać więcej informacji, kliknij wpis, aby otworzyć okienko podsumowania. Kliknij kartę JSON , aby uzyskać szczegółowy dziennik.

Activity logs using the portal with summary pane open - screenshot

Dziennik aktywności w portalu ma kilka filtrów. Oto filtry dotyczące kontroli dostępu opartej na rolach platformy Azure:

Filtr Wartość
Kategoria zdarzenia
  • Administracyjne
Operacja
  • Utworzenie przypisania roli
  • Usunięcie przypisania roli
  • Tworzenie lub aktualizowanie definicji roli niestandardowej
  • Usunięcie niestandardowej definicji roli

Aby uzyskać więcej informacji na temat dzienników aktywności, zobacz Dziennik aktywności platformy Azure.

Interpretowanie wpisu dziennika

Dane wyjściowe dziennika z karty JSON, programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure mogą zawierać wiele informacji. Poniżej przedstawiono niektóre kluczowe właściwości do wyszukania podczas próby zinterpretowania wpisu dziennika. Aby uzyskać informacje o sposobach filtrowania danych wyjściowych dziennika przy użyciu programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure, zobacz następujące sekcje.

Właściwości Przykładowe wartości opis
authorization:action Microsoft.Authorization/roleAssignments/write Utworzenie przypisania roli
Microsoft.Authorization/roleAssignments/delete Usunięcie przypisania roli
Microsoft.Authorization/roleDefinitions/write Tworzenie lub aktualizowanie definicji roli
Microsoft.Authorization/roleDefinitions/delete Usuwanie definicji roli
authorization:scope /subscriptions/{subscriptionId}
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}
Zakres akcji
Obiekt wywołujący admin@example.com
{objectId}
KtoTo zainicjowano akcję
eventTimestamp 2021-03-01T22:07:41.126243Z Godzina wystąpienia akcji
status:value Rozpoczęto
Zakończono pomyślnie
Zakończone niepowodzeniem
Stan akcji

Azure PowerShell

Aby wyświetlić dzienniki aktywności za pomocą programu Azure PowerShell, użyj polecenia Get-AzLog .

To polecenie wyświetla listę wszystkich zmian przypisań ról w subskrypcji w ciągu ostatnich siedmiu dni:

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

To polecenie wyświetla listę wszystkich zmian definicji roli w grupie zasobów w ciągu ostatnich siedmiu dni:

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

Filtrowanie danych wyjściowych dziennika

Dane wyjściowe dziennika mogą zawierać wiele informacji. To polecenie wyświetla listę wszystkich zmian przypisań ról i definicji roli w subskrypcji w ciągu ostatnich siedmiu dni i filtruje dane wyjściowe:

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

Poniżej przedstawiono przykład filtrowanych danych wyjściowych dziennika podczas tworzenia przypisania roli:

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}

Jeśli używasz jednostki usługi do tworzenia przypisań ról, właściwość wywołująca będzie identyfikatorem obiektu jednostki usługi. Aby uzyskać informacje o jednostce usługi, możesz użyć polecenia Get-AzADServicePrincipal .

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

Interfejs wiersza polecenia platformy Azure

Aby wyświetlić dzienniki aktywności za pomocą interfejsu wiersza polecenia platformy Azure, użyj polecenia az monitor activity-log list .

To polecenie wyświetla listę dzienników aktywności w grupie zasobów od 1 marca, w przyszłości siedem dni:

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

To polecenie wyświetla listę dzienników aktywności dostawcy zasobów autoryzacji od 1 marca, w przyszłości siedem dni:

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

Filtrowanie danych wyjściowych dziennika

Dane wyjściowe dziennika mogą zawierać wiele informacji. To polecenie wyświetla listę wszystkich zmian przypisań ról i definicji roli w subskrypcji w przyszłości siedem dni i filtruje dane wyjściowe:

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

Poniżej przedstawiono przykład filtrowanych danych wyjściowych dziennika podczas tworzenia przypisania roli:

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

Dzienniki usługi Azure Monitor

Dzienniki usługi Azure Monitor to inne narzędzie, za pomocą którego można zbierać i analizować zmiany kontroli dostępu opartej na rolach platformy Azure dla wszystkich zasobów platformy Azure. Dzienniki usługi Azure Monitor mają następujące korzyści:

  • Pisanie złożonych zapytań i logiki
  • Integracja z alertami, usługą Power BI i innymi narzędziami
  • Zapisywanie danych przez dłuższy okres przechowywania
  • Odwołanie krzyżowe z innymi dziennikami, takimi jak zabezpieczenia, maszyna wirtualna i niestandardowe

Poniżej przedstawiono podstawowe kroki umożliwiające rozpoczęcie pracy:

  1. Utwórz obszar roboczy usługi Log Analytics.

  2. Skonfiguruj działanie dla obszaru roboczego.

  3. Wyświetl dzienniki aktywności Szczegółowe informacje. Szybkim sposobem na przejście do strony Przegląd dziennika aktywności jest kliknięcie opcji Dzienniki .

    Azure Monitor logs option in portal

  4. Opcjonalnie użyj usługi Azure Monitor Log Analytics do wykonywania zapytań i wyświetlania dzienników. Aby uzyskać więcej informacji, zobacz Rozpoczynanie pracy z zapytaniami dzienników w usłudze Azure Monitor.

Oto zapytanie zwracające nowe przypisania ról zorganizowane przez docelowego dostawcę zasobów:

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

Oto zapytanie zwracające zmiany przypisania roli wyświetlane na wykresie:

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

Następne kroki