全部產品
Search
文件中心

:使用KubeAPIAction Trail

更新時間:Jun 30, 2024

當您需要全面監控和審計服務網格內的KubeAPI操作時,可以使用KubeAPIAction Trail功能,記錄或追溯不同使用者的日常操作。通過查看審計中心概覽、帳號操作詳情、資源操作概覽和指定資源的詳細巨集指令清單,您可以更好地追蹤和分析關鍵事件,瞭解資源的分布情況和操作統計,提高網格的安全性和可追溯性,最佳化安全性原則和資源管理,確保服務網格的穩定運行和高效利用。

前提條件

已開通Log Service

背景資訊

  • 本文中所提及的資源指的是Istio資源,包括VirtualService、Gateway、DestinationRule、EnvoyFilter、Sidecar、ServiceEntry等。

  • 審計功能開啟後,審計日誌會產生費用,計費方式請參見按使用功能計費

步驟一:啟用KubeAPIAction Trail功能

建立ASM執行個體

  1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

  2. 網格管理頁面,單擊建立新網格,選中啟用網格審計,配置其他資訊,然後單擊建立服務網格

    關於配置項的說明,請參見建立ASM執行個體

    說明

    預設建立的審計LogProject名稱為mesh-log-${Mesh-ID},同時會在該LogProject中建立名為audit-${Mesh-ID}的LogStore用於儲存審計日誌。

已建立ASM執行個體

  1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

  2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇網格資訊安全中心 > KubeAPIAction Trail

  3. 網格審計頁面,選中啟用網格審計,然後單擊確定

步驟二:查看KubeAPI審計報表

  1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

  2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇網格資訊安全中心 > KubeAPIAction Trail

  3. 網格審計頁面,按需單擊API訪問概覽資源操作詳細列表頁簽,查看審計報表詳情。

    • API訪問概覽:查看網格執行個體的Kube API訪問行為的詳細資料。

      image

    • 資源操作詳細列表:查看網格執行個體中指定資源的詳細巨集指令清單。

      您需要選擇或輸入指定的資源類型進行即時查詢,包括資源操作各類事件的總數、Namespace分布、時序趨勢以及詳細巨集指令清單。image

相關操作

查看詳細日誌記錄

如果您有自訂查詢和分析審計日誌的需求,可以進入Log Service管理主控台查看詳細的日誌記錄。

  1. 登入Log Service控制台

  2. Project列表地區,單擊名為mesh-log-${Mesh-ID}的日誌Project。

  3. 選擇名稱為audit-${Mesh-ID}的日誌庫,單擊查詢 / 分析,查看對應的審計日誌。

    查詢分析表徵圖

    說明
    • 在啟用網格審計時,產生的日誌Project中會自動添加一個名為audit-${Mesh-ID}的日誌庫。

    • 審計日誌的日誌庫預設已經配置索引。請不要修改索引,以免報表失效。

    • ASM的API Server審計日誌在Log Service中對應的日誌庫資料預設儲存時間為30天,如需修改日誌的預設儲存時間,請參見管理Logstore

    常見的審計記錄搜尋方式如下所示。

    • 查詢某一子帳號的操作記錄,直接在搜尋方塊中輸入子帳號ID,單擊查詢 / 分析

    • 查詢某一資源的操作,直接在搜尋方塊中輸入資源名,單擊查詢 / 分析

    • 過濾系統組件的操作,在搜尋方塊中輸入NOT user.username: node NOT user.username: serviceaccount NOT user.username: apiserver NOT user.username: kube-scheduler NOT user.username: kube-controller-manager,單擊查詢 / 分析

    更多查詢和統計方式,請參見查詢概述

    設定警示

    若您需要對某些資源的操作進行即時警示,可以通過Log Service的警示功能實現。警示方式支援簡訊、DingTalk機器人、郵件、自訂WebHook和通知中樞。更多資訊,請參見警示

    關於審計日誌的更多查詢方式,您還可以通過審計報表中的查詢語句來查詢審計日誌:

    • 樣本一:對容器執行命令時觸發警示

      某公司對於網格執行個體的使用有嚴格限制,不允許使用者登入容器或對容器執行命令。如果有使用者執行命令時需要立即給出警示,並希望警示時能夠顯示使用者登入的具體容器、執行的命令、操作人、事件ID、時間、操作源IP等資訊。

      • 查詢語句如下所示。

        verb : create and objectRef.subresource:exec and stage:  ResponseStarted | SELECT auditID as "事件ID", date_format(from_unixtime(__time__), '%Y-%m-%d %T' ) as "操作時間",  regexp_extract("requestURI", '([^\?]*)/exec\?.*', 1)as "資源",  regexp_extract("requestURI", '\?(.*)', 1)as "命令" ,"responseStatus.code" as "狀態代碼",
         CASE 
         WHEN "user.username" != 'kubernetes-admin' then "user.username"
         WHEN "user.username" = 'kubernetes-admin' and regexp_like("annotations.authorization.k8s.io/reason", 'RoleBinding') then regexp_extract("annotations.authorization.k8s.io/reason", ' to User "(\w+)"', 1)
         ELSE 'kubernetes-admin' END  
         as "操作帳號", 
        CASE WHEN json_array_length(sourceIPs) = 1 then json_format(json_array_get(sourceIPs, 0)) ELSE  sourceIPs END
        as "源地址" limit 100
      • 條件運算式如下所示。

        操作事件 =~ ".*"
    • 樣本二:APIServer公網訪問失敗時觸發警示

      某網格執行個體開啟了公網訪問,為防止惡意攻擊,需要監控公網訪問的次數以及失敗率。若訪問次數到達一定閾值(例如10次)且失敗率高於一定閾值(例如50%)則立即警示,並希望警示時能夠顯示使用者的IP所屬地區、操作源IP、是否高危IP等資訊。

      • 查詢語如下所示。

        * | select ip as "源地址", total as "訪問次數", round(rate * 100, 2) as "失敗率%", failCount as "非法訪問次數", CASE when security_check_ip(ip) = 1 then 'yes' else 'no' end  as "是否高危IP",  ip_to_country(ip) as "國家", ip_to_province(ip) as "省", ip_to_city(ip) as "市", ip_to_provider(ip) as "電訊廠商" from (select CASE WHEN json_array_length(sourceIPs) = 1 then json_format(json_array_get(sourceIPs, 0)) ELSE  sourceIPs END
        as ip, count(1) as total,
        sum(CASE WHEN "responseStatus.code" < 400 then 0 
        ELSE 1 END) * 1.0 / count(1) as rate,
        count_if("responseStatus.code" = 403) as failCount
        from log  group by ip limit 10000) where ip_to_domain(ip) != 'intranet'  having "訪問次數" > 10 and "失敗率%" > 50 ORDER by "訪問次數" desc limit 100
      • 條件運算式如下所示。

        源地址 =~ ".*"

    重建網格審計

    如果您誤刪了Log ServiceSLS中用於網格審計的Project,但是仍然想要使用網格審計功能,您需要重建用於網格審計的Project。

    1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

    2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇網格資訊安全中心 > KubeAPIAction Trail

    3. 網格審計頁面彈出的重建網格審計對話方塊,單擊重建

      重建後的Project名稱為上一次Project名稱基礎上加上時間戳記。

相關文檔

  • 當您需要在重要資源變動時及時發送警示通知到警示連絡人,請參見為網格資源操作配置審計警示

  • 您可以在網格中配置工作負載身份、對等身份認證、請求身份認證、授權策略等,更加細粒度地管理網格資源,提高網格的安全性。具體操作,請參見零信任安全概述