Azure 監視器中的角色、許可權和安全性

本文說明如何快速將內建監視角色套用至 Azure 中的使用者,或為需要有限監視許可權的使用者建置您自己的自定義角色。 本文接著會討論 Azure 監視器相關資源的安全性考慮,以及如何限制對這些資源中數據的存取。

內建監視角色

Azure 監視器中的內建角色可協助限制訂用帳戶中資源的存取,同時仍可讓監視基礎結構的人員取得和設定所需的數據。 Azure 監視器提供兩個現用角色:監視讀者和監視參與者。 Azure 監視器記錄也提供內建角色來管理 Log Analytics 工作區中數據的存取權,如管理 Log Analytics 工作區的存取權中所述

監視讀取器

人員 指派的監視讀取者角色可以檢視訂用帳戶中的所有監視數據,但無法修改任何資源或編輯與監視資源相關的任何設定。 此角色適用於組織中需要下列專案的使用者,例如支援或營運工程師:

  • 檢視 Azure 入口網站 中的監視儀錶板。
  • 檢視 Azure 警示定義的警示規則。
  • 使用 Azure 監視器 REST APIPowerShell Cmdlet跨平臺 CLI 來查詢 Azure 監視器計量。
  • 使用入口網站、Azure 監視器 REST API、PowerShell Cmdlet 或跨平臺 CLI 來查詢活動記錄。
  • 檢視資源的診斷設定
  • 檢視訂用帳戶的記錄配置檔
  • 檢視自動調整設定。
  • 檢視警示活動和設定。
  • 搜尋 Log Analytics 工作區數據,包括工作區的使用方式數據。
  • 擷取Log Analytics工作區中的數據表架構。
  • 在 Log Analytics 工作區中擷取和執行記錄查詢。
  • 存取 Application Insights 數據。

注意

此角色不會提供已串流至事件中樞或儲存在記憶體帳戶中的記錄數據的讀取許可權。 如需如何設定這些資源存取權的資訊,請參閱 本文稍後的監視數據 安全性考慮一節。

監視參與者

人員 指派的監視參與者角色可以檢視訂用帳戶中的所有監視數據。 它們也可以建立或修改監視設定,但無法修改任何其他資源。

此角色是監視讀取者角色的超集。 它適用於組織監視小組或受管理服務提供者的成員,除了先前所述的許可權之外,還需要:

  • 在入口網站中檢視監視儀錶板,並建立自己的私人監視儀錶板。
  • 建立和編輯 資源的診斷設定1
  • 使用 Azure 警示設定警示規則活動和設定。
  • 列出 Log Analytics 工作區的共享金鑰。
  • 在 Log Analytics 工作區中建立、刪除和執行已儲存的搜尋。
  • 建立和刪除Log Analytics的工作區記憶體組態。
  • 建立 Application Insights 的 Web 測試和元件。 請參閱 Application Insights 中的資源、角色和訪問控制。

1 若要建立或編輯診斷設定,用戶也必須分別獲得目標資源 (儲存體帳戶或事件中樞命名空間) 的 ListKeys 許可權。

注意

此角色不會提供已串流至事件中樞或儲存在記憶體帳戶中的記錄數據的讀取許可權。 如需如何設定這些資源存取權的資訊,請參閱 本文稍後的監視數據 安全性考慮一節。

監視許可權和 Azure 自定義角色

如果上述內建角色不符合小組的確切需求,您可以 建立具有更細微許可權的 Azure 自定義角色 。 Azure 監視器的常見 Azure 角色型存取控制 (RBAC) 作業列在這裡。

作業 描述
Microsoft.Insights/ActionGroups/[讀取、寫入、刪除] 讀取、寫入或刪除動作群組。
Microsoft.Insights/ActivityLogAlerts/[Read, Write, Delete] 讀取、寫入或刪除活動記錄警示。
Microsoft.Insights/AlertRules/[Read, Write, Delete] 讀取、寫入或刪除警示規則(來自傳統警示)。
Microsoft.Insights/AlertRules/Incidents/Read 列出警示規則的事件(觸發警示規則的歷程記錄)。 這隻適用於入口網站。
Microsoft.Insights/Autoscale 設定/[讀取、寫入、刪除] 讀取、寫入或刪除自動調整設定。
Microsoft.Insights/Diagnostic 設定/[讀取、寫入、刪除] 讀取、寫入或刪除診斷設定。
Microsoft.Insights/EventCategories/Read 列舉活動記錄中可能的所有類別。 由 Azure 入口網站 使用。
Microsoft.Insights/eventtypes/digestevents/Read 需要透過入口網站存取活動記錄的使用者,需要此許可權。
Microsoft.Insights/eventtypes/values/Read 列出訂用帳戶中的活動記錄事件(管理事件)。 此許可權同時適用於活動記錄的程式設計和入口網站存取。
Microsoft.Insights/ExtendedDiagnostic 設定/[讀取、寫入、刪除] 網路流量記錄的讀取、寫入或刪除診斷設定。
Microsoft.Insights/LogDefinitions/Read 需要透過入口網站存取活動記錄的使用者,需要此許可權。
Microsoft.Insights/LogProfiles/[讀取、寫入、刪除] 讀取、寫入或刪除記錄配置檔(將活動記錄串流至事件中樞或記憶體帳戶)。
Microsoft.Insights/MetricAlerts/[Read, Write, Delete] 讀取、寫入或刪除計量警示規則。
Microsoft.Insights/MetricDefinitions/Read 讀取計量定義 (資源的可用指標類型清單)。
Microsoft.Insights/Metrics/Read 讀取資源的計量。
Microsoft.Insights/Register/Action 註冊 Azure 監視器資源提供者。
Microsoft.Insights/ScheduledQueryRules/[Read, Write, Delete] 在 Azure 監視器中讀取、寫入或刪除記錄搜尋警示。

注意

存取資源的警示、診斷設定和計量時,用戶必須能夠讀取該資源的資源類型和範圍。 建立將數據傳送至記憶體帳戶或串流至事件中樞的診斷設定,需要使用者也具有目標資源的 ListKeys 許可權。

例如,您可以使用上表來建立活動記錄讀取器的 Azure 自定義角色,如下所示:

$role = Get-AzRoleDefinition "Reader"
$role.Id = $null
$role.Name = "Activity Log Reader"
$role.Description = "Can view activity logs."
$role.Actions.Clear()
$role.Actions.Add("Microsoft.Insights/eventtypes/*")
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add("/subscriptions/mySubscription")
New-AzRoleDefinition -Role $role 

監視資料的安全性考量

Azure 監視器 中的數據可以在記憶體帳戶中傳送,或串流至事件中樞,這兩者都是一般用途的 Azure 資源。 因為這些是一般用途的資源,因此建立、刪除和存取這些資源是保留給系統管理員的特殊許可權作業。 由於此數據可以包含IP位址或使用者名稱等敏感性資訊,因此請使用下列做法來監視相關資源,以防止誤用:

  • 使用單一專用記憶體帳戶來監視數據。 如果您需要將監視數據分成多個記憶體帳戶,請勿在監視和非監視數據之間共用記憶體帳戶的使用方式。 以這種方式共用使用方式可能會不小心將非監視數據的存取權授與僅需要存取監視數據的組織。 例如,安全性資訊和事件管理的第三方組織應該只需要監視數據的存取權。
  • 使用所有診斷設定的單一專用服務總線或事件中樞命名空間,原因與上一點中所述的相同原因。
  • 將記憶體帳戶或事件中樞保留在個別的資源群組中,以限制監視相關記憶體帳戶或事件中樞的存取。 在您的監視角色上使用範圍 來限制只存取該資源群組。
  • 當使用者只需要監視數據的存取權時,絕不會授與訂用帳戶範圍中記憶體帳戶或事件中樞的 ListKeys 許可權。 相反地,請將這些許可權授與資源或資源群組範圍的使用者(如果您有專用的監視資源群組)。

當使用者或應用程式需要存取記憶體帳戶中的監視數據時, 請在記憶體帳戶上產生共用存取簽章(SAS), 其中包含具有 Blob 記憶體服務層級只讀存取權的監視數據。 在 PowerShell 中,帳戶 SAS 可能看起來像下列程式代碼:

$context = New-AzStorageContext -ConnectionString "[connection string for your monitoring Storage Account]"
$token = New-AzStorageAccountSASToken -ResourceType Service -Service Blob -Permission "rl" -Context $context

接著,您可以將令牌提供給需要從該記憶體帳戶讀取的實體。 實體可以從該記憶體帳戶中的所有 Blob 列出和讀取。

或者,如果您需要使用 Azure RBAC 控制此許可權,您可以授與該實體 Microsoft.Storage/storageAccounts/listkeys/action 該特定記憶體帳戶的許可權。 需要設定診斷設定以將數據傳送至記憶體帳戶的使用者,都需要此許可權。 例如,您可以為需要從一個記憶體帳戶讀取的使用者或應用程式建立下列 Azure 自定義角色:

$role = Get-AzRoleDefinition "Reader"
$role.Id = $null
$role.Name = "Monitoring Storage Account Reader"
$role.Description = "Can get the storage account keys for a monitoring storage account."
$role.Actions.Clear()
$role.Actions.Add("Microsoft.Storage/storageAccounts/listkeys/action")
$role.Actions.Add("Microsoft.Storage/storageAccounts/Read")
$role.AssignableScopes.Clear()
$role.AssignableScopes.Add("/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/myMonitoringStorageAccount")
New-AzRoleDefinition -Role $role 

警告

ListKeys 許可權可讓使用者列出主要和次要記憶體帳戶密鑰。 這些金鑰會將所有已簽署的許可權(例如讀取、寫入、建立 Blob 和刪除 Blob)授與該記憶體帳戶中的所有已簽署服務(Blob、佇列、數據表、檔案)。 建議您盡可能使用帳戶 SAS。

您可以遵循與事件中樞類似的模式,但首先您必須建立專用的授權規則來進行接聽。 如果您想要授與僅需要接聽監視相關事件中樞之應用程式的存取權,請遵循下列步驟:

  1. 在入口網站中,在事件中樞上建立共用存取原則,以只接聽宣告來串流監視數據。 例如,您可能會將其稱為「monitoringReadOnly」。可能的話,請將該密鑰直接提供給取用者,並略過下一個步驟。

  2. 如果取用者需要取得密鑰臨機操作,請將該事件中樞的 ListKeys 動作授與使用者。 需要設定診斷設定或記錄配置檔以串流至事件中樞的使用者,也需要此步驟。 例如,您可以建立 Azure RBAC 規則:

    $role = Get-AzRoleDefinition "Reader"
    $role.Id = $null
    $role.Name = "Monitoring Event Hub Listener"
    $role.Description = "Can get the key to listen to an event hub streaming monitoring data."
    $role.Actions.Clear()
    $role.Actions.Add("Microsoft.EventHub/namespaces/authorizationrules/listkeys/action")
    $role.Actions.Add("Microsoft.EventHub/namespaces/Read")
    $role.AssignableScopes.Clear()
    $role.AssignableScopes.Add("/subscriptions/mySubscription/resourceGroups/myResourceGroup/providers/Microsoft.ServiceBus/namespaces/mySBNameSpace")
    New-AzRoleDefinition -Role $role 
    

下一步