特殊權限 Azure 角色指派的警示

特殊權限的 Azure 角色 (例如參與者、擁有者或使用者存取管理員) 是功能強大的角色,可能會對您的系統產生風險。 您可能會想要在有人指派這些角色或其他角色時,透過電子郵件或簡訊收到通知。 本文會說明如何使用 Azure 監視器建立警示規則,以收到訂用帳戶範圍的特殊權限角色指派通知。

必要條件

若要建立警示規則,您必須具備:

  • 存取 Azure 訂用帳戶
  • 可在訂用帳戶內建立資源群組和資源的權限
  • 已設定 Log Analytics,使其能夠存取 AzureActivity 資料表

先估計成本再使用 Azure 監視器

使用 Azure 監視器和警示規則會產生相關成本。 成本的計算依據是查詢的執行頻率和所選取的通知。 如需詳細資訊,請參閱 Azure 監視器計量價格

建立警示規則

若要收到特殊權限角色指派通知,您可以在 Azure 監視器中建立警示規則。

  1. 登入 Azure 入口網站

  2. 瀏覽至 [監視器]

  3. 在左側導覽中,按一下 [警示]

  4. 按一下 [建立]>[警示規則]。 [建立警示規則] 頁面隨即開啟。

  5. 在 [範圍] 索引標籤上,選取您的訂用帳戶。

  6. 在 [條件] 索引標籤上,選取 [自訂記錄搜尋] 訊號名稱。

  7. 在 [記錄查詢] 方塊中,新增將對訂用客戶的記錄執行的下列 Kusto 查詢,並觸發警示。

    此查詢會篩選出嘗試在所選訂用帳戶範圍內指派參與者擁有者使用者存取管理員角色的動作。

    AzureActivity
    | where CategoryValue =~ "Administrative" and
        OperationNameValue =~ "Microsoft.Authorization/roleAssignments/write" and
        (ActivityStatusValue =~ "Start" or ActivityStatus =~ "Started")
    | extend Properties_d = todynamic(Properties)
    | extend RoleDefinition = extractjson("$.Properties.RoleDefinitionId",tostring(Properties_d.requestbody),typeof(string))
    | extend PrincipalId = extractjson("$.Properties.PrincipalId",tostring(Properties_d.requestbody),typeof(string))
    | extend PrincipalType = extractjson("$.Properties.PrincipalType",tostring(Properties_d.requestbody),typeof(string))
    | extend Scope = extractjson("$.Properties.Scope",tostring(Properties_d.requestbody),typeof(string))
    | where Scope !contains "resourcegroups"
    | extend RoleId = split(RoleDefinition,'/')[-1]
    | extend RoleDisplayName = case(
        RoleId =~ 'b24988ac-6180-42a0-ab88-20f7382dd24c', "Contributor",
        RoleId =~ '8e3af657-a8ff-443c-a75c-2fe8c4bcb635', "Owner",
        RoleId =~ '18d7d88d-d35e-4fb5-a5c3-7773c20a72d9', "User Access Administrator",
        "Irrelevant")
    | where RoleDisplayName != "Irrelevant"
    | project TimeGenerated,Scope, PrincipalId,PrincipalType,RoleDisplayName
    

    Screenshot of Create an alert rule condition tab in Azure Monitor.

  8. 在 [量測] 區段中,設定下列值:

    • 量值:資料表資料列
    • 彙總類型:計數
    • 彙總細微性:5 分鐘

    針對 [匯總細微性],您可以將預設值變更為您想要的頻率。

  9. 在 [依維度分割] 區段中,將 [資源識別碼資料行] 設定為 [不要分割]

  10. 在 [警示邏輯] 區段中,設定下列值:

    • 運算子:大於
    • 閾值:0
    • 評估頻率:5 分鐘

    針對 [評估頻率],您可以將預設值變更為您想要的頻率。

  11. 在 [動作] 索引標籤上,建立動作群組或選取現有的動作群組。

    動作群組會定義警示觸發時所執行的動作和通知。

    在建立動作群組時,必須指定要用來放置動作群組的資源群組。 然後,選取要在警示規則觸發時叫用的通知 (電子郵件/簡訊/推播/語音動作)。 您可以略過 [動作] 和 [標籤] 索引標籤。 如需詳細資訊,請參閱在 Azure 入口網站中建立和管理動作群組

  12. 在 [詳細資料] 索引標籤上,選取要儲存警示規則的資源群組。

  13. 在 [警示規則詳細資料] 區段中,選取 [嚴重性],然後指定 [警示規則名稱]

  14. 針對 [區域],您可以選取任何區域,因為 Azure 活動記錄是全球性功能。

  15. 跳過 [標籤] 索引標籤。

  16. 在 [檢閱 + 建立] 索引標籤上,按一下 [建立] 以建立警示規則。

測試警示規則

建立了警示規則後,便可以測試其是否能引發。

  1. 指派訂用帳戶範圍的參與者、擁有者或使用者存取管理員角色。 如需詳細資訊,請參閱使用 Azure 入口網站指派 Azure 角色

  2. 等候幾分鐘來接收警示 (時間長短取決於彙總細微性和記錄查詢的評估頻率)。

  3. 在 [警示] 頁面上,監視您在動作群組中指定的警示。

    Screenshot of the Alerts page showing that role assignment alert fired.

    下圖顯示電子郵件警示範例。

    Screenshot of an email alert for a role assignment.

刪除警示規則

請遵循下列步驟來刪除角色指派警示規則,並停止產生額外的成本。

  1. 在 [監視器] 中,瀏覽至 [警示]

  2. 在警示列中,按一下 [警示規則]

  3. 在想要刪除的警示規則旁邊新增核取記號。

  4. 按一下 [刪除] 以移除警示。

下一步