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.
Aby uzyskać więcej informacji, kliknij wpis, aby otworzyć okienko podsumowania. Kliknij kartę JSON , aby uzyskać szczegółowy dziennik.
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 |
|
Operacja |
|
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} |
Kto zainicjował akcję |
eventTimestamp | 2021-03-01T22:07:41.126243Z | Godzina wystąpienia akcji |
status:value | Rozpoczęto Powodzenie Nie działa |
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:
Utwórz obszar roboczy usługi Log Analytics.
Skonfiguruj działanie dla obszaru roboczego.
Wyświetl szczegółowe informacje o dziennikach aktywności. Szybkim sposobem na przejście do strony Przegląd dziennika aktywności jest kliknięcie opcji Dzienniki .
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