Azure 監視器中的角色、權限與安全性

本文說明如何在 Azure 中快速將內建的監視角色套用到使用者,或針對需要有限監視權限的使用者建置您自己的自訂角色。 接著會討論 Azure 監視器相關資源的安全性考量,以及如何限制對這些資源中的資料進行存取。

內建的監視角色

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

監視讀取器

受指派監視讀者角色的人員可以檢視訂閱中所有的監視資料,但無法修改任何資源或編輯與監視資源相關的任何設定。 這個角色適用於組織中的使用者,例如支援或作業工程師,這些人員必須︰

  • 在Azure 入口網站中檢視監視儀表板。
  • 檢視 Azure 警示中定義的警示規則。
  • 使用 Azure 監視器 REST APIPowerShell cmdlets,或跨平台 CLI 查詢 Azure 監視器計量。
  • 使用入口網站、Azure 監視器 REST API、PowerShell Cmdlets,或跨平台 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/[Read, Write, Delete] 讀取、寫入或刪除動作群組。
Microsoft.Insights/ActivityLogAlerts/[Read, Write, Delete] 讀取、寫入或刪除活動記錄警示。
Microsoft.Insights/AlertRules/[讀取、寫入、刪除] (從傳統警示) 讀取、寫入或刪除警示規則。
Microsoft.Insights/AlertRules/Incidents/Read 列出警示規則的事件 (觸發的警示規則歷程記錄)。 這僅適用於入口網站。
Microsoft.Insights/AutoscaleSettings/[讀取、寫入、刪除] 讀取、寫入或刪除自動調整設定。
Microsoft.Insights/DiagnosticSettings/[讀取、寫入、刪除] 讀取、寫入或刪除診斷設定。
Microsoft.Insights/EventCategories/Read 列舉「活動記錄」中所有可能的類別。 「Azure 入口網站」所使用。
Microsoft.Insights/eventtypes/digestevents/Read 此為使用者需要透過入口網站存取活動記錄時所需的權限。
Microsoft.Insights/eventtypes/values/Read 列出訂用帳戶中的活動記錄檔事件 (管理事件)。 此權限適用於以程式設計方式存取和入口網站存取活動記錄檔。
Microsoft.Insights/ExtendedDiagnosticSettings/[Read, Write, Delete] 讀取、寫入或刪除網路流量記錄的診斷設定。
Microsoft.Insights/LogDefinitions/Read 此為使用者需要透過入口網站存取活動記錄時所需的權限。
Microsoft.Insights/LogProfiles/[Read, Write, Delete] 讀取、寫入或刪除記錄設定檔 (將「活動記錄」串流至事件中樞或儲存體帳戶)。
Microsoft.Insights/MetricAlerts/[Read, Write, Delete] 讀取、寫入或刪除計量警示規則。
Microsoft.Insights/MetricDefinitions/Read 讀取計量定義 (資源的可用指標類型清單)。
Microsoft.Insights/Metrics/Read 讀取資源的計量。
Microsoft.Insights/Register/Action 註冊「Azure 監視器」資源提供者。
Microsoft.Insights/ScheduledQueryRules/[讀取、寫入、刪除] 在 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 權限。 反之,對資源或資源群組 (如果您有專用的監視資源群組) 範圍內的使用者授與這些權限。

當使用者或應用程式須存取儲存體帳戶中的監視資料時,請針對包含監視資料的儲存體帳戶 (具有 Blob 儲存體服務層級的唯讀存取權) 產生共用存取簽章 (SAS)。 在 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 
    

下一步