分享方式:


檢視活動記錄檔以取得 Azure RBAC 變更

有時,您會需要 Azure 角色型存取控制 (Azure RBAC) 變更的相關資訊,例如用來進行稽核或疑難排解。 每當有人對您訂用帳戶內的角色指派或角色定義進行變更時,這些變更都會記錄在 Azure 活動記錄中。 您可以檢視活動記錄來查看過去 90 天的所有 Azure RBAC 變更。

記錄的作業

以下是在活動記錄中記錄的 Azure RBAC 相關作業:

  • 建立角色指派
  • 刪除角色指派
  • 建立或更新自訂角色定義
  • 刪除自訂角色定義

Azure 入口網站

最簡單的開始方式就是使用 Azure 入口網站檢視活動記錄。 下列螢幕擷取畫面顯示活動記錄中角色指派作業的範例。 其中也包含將記錄下載為 CSV 檔案的選項。

Activity logs using the portal - screenshot

若要取得詳細資訊,請按一下項目以開啟摘要窗格。 按一下 [JSON] 索引標籤以取得詳細記錄。

Activity logs using the portal with summary pane open - screenshot

入口網站中的活動記錄有數個篩選條件。 以下是 Azure RBAC 相關的篩選條件:

篩選器
事件類別目錄
  • 系統管理
作業
  • 建立角色指派
  • 刪除角色指派
  • 建立或更新自訂角色定義
  • 刪除自訂角色定義

如需活動記錄的詳細資訊,請參閱 Azure 活動記錄

解譯記錄項目

JSON 索引標籤、Azure PowerShell 或 Azure CLI 的記錄輸出可能包含許多資訊。 以下是嘗試解譯記錄項目時要尋找的一些重要屬性。 如需使用 Azure PowerShell 或 Azure CLI 來篩選記錄輸出的方式,請參閱下列各節。

屬性 範例值 描述
authorization:action Microsoft.Authorization/roleAssignments/write 建立角色指派
Microsoft.Authorization/roleAssignments/delete 刪除角色指派
Microsoft.Authorization/roleDefinitions/write 建立或更新角色定義
Microsoft.Authorization/roleDefinitions/delete 刪除角色定義
authorization:scope /subscriptions/{subscriptionId}
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}
動作的範圍
呼叫者 admin@example.com
{objectId}
起始動作的人員
eventTimestamp 2021-03-01T22:07:41.126243Z 發生動作的時間
status:value 已開始
成功
失敗
動作的狀態

Azure PowerShell

若要使用 Azure PowerShell 檢視活動記錄,請使用 Get-AzLog 命令。

此命令列出過去 7 天在訂用帳戶中的所有角色指派變更:

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

此命令列出過去 7 天在資源群組中的所有角色定義變更:

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

篩選記錄輸出

記錄輸出會包含許多資訊。 此命令會列出訂用帳戶中過去 7 天的所有角色指派和角色定義變更,並且會篩選輸出:

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

下列內容顯示在建立角色指派時已篩選的記錄輸出範例:

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}

如果您使用服務主體來建立角色指派,呼叫者屬性將會是服務主體的物件識別碼。 您可以使用 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

Azure CLI

若要使用 Azure CLI 檢視活動記錄,請使用 az monitor activity-log list 命令。

此命令會列出資源群組中從 3 月 1 日起往後 7 天的活動記錄:

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

此命令會列出授權資源提供者從 3 月 1 日起往後 7 天的活動記錄:

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

篩選記錄輸出

記錄輸出會包含許多資訊。 此命令會列出訂用帳戶中往後 7 天的所有角色指派和角色定義變更,並且會篩選輸出:

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

下列內容顯示在建立角色指派時已篩選的記錄輸出範例:

[
 {
    "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 監視器記錄

Azure 監視器記錄是另一個您可以用來收集並分析所有 Azure 資源之 Azure RBAC 變更的工具。 Azure 監視器記錄具有下列優點:

  • 撰寫複雜的查詢和邏輯
  • 整合警示、Power BI 和其他工具
  • 儲存更長保留期限的資料
  • 交互參考其他記錄,例如安全性、虛擬機器和自訂

開始使用的基本步驟如下:

  1. 建立 Log Analytics 工作區

  2. 為您的工作區設定活動

  3. 檢視活動記錄深入解析。 瀏覽至 [活動記錄概觀] 頁面的快速方法是按一下 [記錄] 選項。

    Azure Monitor logs option in portal

  4. 選擇性地使用 Azure 監視器 Log Analytics 來查詢和檢視記錄。 如需詳細資訊,請參閱開始使用 Azure 監視器中的記錄查詢

以下查詢會傳回由目標資源提供者所組織的新角色指派:

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

以下查詢會傳回以圖表顯示的角色指派變更:

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

下一步