Zobrazení protokolů aktivit pro změny Azure RBAC

Někdy potřebujete informace o změnách řízení přístupu na základě role v Azure (Azure RBAC), například pro účely auditování nebo řešení potíží. Kdykoli někdo provede změny přiřazení rolí nebo definic rolí v rámci vašich předplatných, změny se zaprotokolují v protokolu aktivit Azure. V protokolech aktivit můžete zobrazit všechny změny Azure RBAC za posledních 90 dnů.

Zaprotokolované operace

Tady jsou operace související s Azure RBAC, které se protokolují v protokolu aktivit:

  • Vytvořit přiřazení role
  • Odstranit přiřazení role
  • Vytvoření nebo aktualizace definice vlastní role
  • Odstranit definice rolí

portál Azure

Nejjednodušší způsob, jak začít, je zobrazit si protokoly aktivit přes Azure Portal. Následující snímek obrazovky ukazuje příklad operací přiřazení rolí v protokolu aktivit. Obsahuje také možnost stáhnout protokoly jako soubor CSV.

Activity logs using the portal - screenshot

Pokud chcete získat další informace, kliknutím na položku otevřete podokno souhrnu. Kliknutím na kartu JSON získáte podrobný protokol.

Activity logs using the portal with summary pane open - screenshot

Protokol aktivit na portálu má několik filtrů. Tady jsou filtry související s Azure RBAC:

Filtr Hodnota
Kategorie události
  • Správcovské
Operace
  • Vytvořit přiřazení role
  • Odstranit přiřazení role
  • Vytvoření nebo aktualizace definice vlastní role
  • Odstranit definice rolí

Další informace o protokolech aktivit najdete v protokolu aktivit Azure.

Interpretace položky protokolu

Výstup protokolu z karty JSON, Azure PowerShellu nebo Azure CLI může obsahovat spoustu informací. Tady jsou některé klíčové vlastnosti, které se mají hledat při pokusu o interpretaci položky protokolu. Způsoby filtrování výstupu protokolu pomocí Azure PowerShellu nebo Azure CLI najdete v následujících částech.

Vlastnost Ukázkové hodnoty Popis
autorizace:action Microsoft.Authorization/roleAssignments/write Vytvořit přiřazení role
Microsoft.Authorization/roleAssignments/delete Odstranit přiřazení role
Microsoft.Authorization/roleDefinitions/write Vytvoření nebo aktualizace definice role
Microsoft.Authorization/roleDefinitions/delete Odstranění definice role
authorization:scope /subscriptions/{subscriptionId}
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}
Rozsah akce
Volající admin@example.com
{objectId}
Kdo iniciovala akci.
eventTimestamp 2021-03-01T22:07:41.126243Z Čas, kdy k akci došlo
status:value Zahájeno
Úspěšně
Nepovedlo se.
Stav akce

Azure PowerShell

Pokud chcete zobrazit protokoly aktivit pomocí Azure PowerShellu , použijte příkaz Get-AzLog .

Tento příkaz zobrazí seznam všech změn přiřazení rolí v předplatném za posledních 7 dnů:

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

Tento příkaz zobrazí seznam všech změn definic rolí ve skupině prostředků za posledních 7 dnů:

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

Filtrování výstupu protokolu

Výstup protokolu může obsahovat spoustu informací. Tento příkaz zobrazí seznam všech změn přiřazení rolí a definic rolí v předplatném za posledních 7 dnů a vyfiltruje výstup:

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

Následující příklad ukazuje výstup vyfiltrovaného protokolu při vytváření přiřazení role:

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}

Pokud k vytváření přiřazení rolí používáte instanční objekt, vlastnost Volající bude ID instančního objektu. Pomocí rutiny Get-AzADServicePrincipal můžete získat informace o instančním objektu.

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

Pokud chcete zobrazit protokoly aktivit pomocí Azure CLI, použijte příkaz az monitor activity-log list .

Tento příkaz vypíše protokoly aktivit ve skupině prostředků od 1. března a těšíme se na sedm dní:

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

Tento příkaz vypíše protokoly aktivit pro poskytovatele prostředků autorizace od 1. března a těšíme se na sedm dní:

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

Filtrování výstupu protokolu

Výstup protokolu může obsahovat spoustu informací. Tento příkaz zobrazí seznam všech změn přiřazení rolí a definic rolí v předplatném, které se budou těšit na sedm dnů a filtruje výstup:

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

Následující příklad ukazuje výstup vyfiltrovaného protokolu při vytváření přiřazení role:

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

Protokoly Azure Monitoru

Protokoly Azure Monitoru jsou dalším nástrojem, který můžete použít ke shromažďování a analýze změn Azure RBAC pro všechny prostředky Azure. Protokoly služby Azure Monitor mají následující výhody:

  • Psaní složitých dotazů a logiky
  • Integrace s upozorněními, Power BI a dalšími nástroji
  • Ukládání dat po delší dobu uchovávání
  • Křížový odkaz s dalšími protokoly, jako jsou zabezpečení, virtuální počítač a vlastní

Tady jsou základní kroky, které vám pomůžou začít:

  1. Vytvořte pracovní prostor služby Log Analytics.

  2. Nakonfigurujte aktivitu pro váš pracovní prostor.

  3. Prohlédněte si protokoly aktivit Přehledy. Rychlým způsobem, jak přejít na stránku Přehled protokolu aktivit, je kliknout na možnost Protokoly .

    Azure Monitor logs option in portal

  4. Volitelně můžete protokoly dotazovat a zobrazit pomocí Služby Azure Monitor Log Analytics . Další informace najdete v tématu Začínáme s dotazy na protokoly ve službě Azure Monitor.

Tady je dotaz, který vrací nová přiřazení rolí uspořádaná podle cílového poskytovatele prostředků:

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

Tady je dotaz, který vrátí změny přiřazení role zobrazené v grafu:

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

Další kroky