檢視活動記錄檔以取得 Azure RBAC 變更
有時,您會需要 Azure 角色型存取控制 (Azure RBAC) 變更的相關資訊,例如用來進行稽核或疑難排解。 每當有人對您訂用帳戶內的角色指派或角色定義進行變更時,這些變更都會記錄在 Azure 活動記錄中。 您可以檢視活動記錄來查看過去 90 天的所有 Azure RBAC 變更。
記錄的作業
以下是在活動記錄中記錄的 Azure RBAC 相關作業:
- 建立角色指派
- 刪除角色指派
- 建立或更新自訂角色定義
- 刪除自訂角色定義
Azure 入口網站
最簡單的開始方式就是使用 Azure 入口網站檢視活動記錄。 下列螢幕擷取畫面顯示活動記錄中角色指派作業的範例。 其中也包含將記錄下載為 CSV 檔案的選項。
若要取得詳細資訊,請按一下項目以開啟摘要窗格。 按一下 [JSON] 索引標籤以取得詳細記錄。
入口網站中的活動記錄有數個篩選條件。 以下是 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 和其他工具
- 儲存更長保留期限的資料
- 交互參考其他記錄,例如安全性、虛擬機器和自訂
開始使用的基本步驟如下:
為您的工作區設定活動。
檢視活動記錄深入解析。 瀏覽至 [活動記錄概觀] 頁面的快速方法是按一下 [記錄] 選項。
選擇性地使用 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