Share via


在 Microsoft Sentinel 中開始使用 Jupyter Notebook 和 MSTICPy

本文說明如何執行 Microsoft Sentinel ML Notebook 的 快速入門指南,以設定在 Microsoft Sentinel 中執行 Jupyter Notebook 的基本設定,以及執行簡單的數據查詢。

Microsoft Sentinel ML Notebooks 筆記本的快速入門指南使用 MICROSOFT 所建置之網路安全性工具的 Python 連結庫 MSTICPy,可提供威脅搜捕和調查功能。

MSTICPy 可減少客戶為 Microsoft Sentinel 撰寫的程式代碼數量,並提供:

  • 針對 Microsoft Sentinel 數據表、適用於端點的 Microsoft Defender、Splunk 和其他數據源的數據查詢功能。
  • 與 TI 提供者的威脅情報查閱,例如 VirusTotal 和 AlienVault OTX。
  • 擴充功能,例如IP位址的地理位置、入侵指標 (IoC) 擷取,以及 神秘 Is 查閱。
  • 使用事件時間軸、處理樹狀架構和地理對應的視覺效果工具。
  • 進階分析,例如時間序列分解、異常偵測和叢集。

本文中的步驟說明如何透過 Microsoft Sentinel 在 Azure 機器學習 工作區中執行 Microsoft Sentinel ML Notebooks 筆記本的快速入門指南。 您也可以使用本文作為執行類似步驟的指引,以在其他環境中執行筆記本,包括本機。

如需詳細資訊,請參閱使用筆記本來提供調查和使用 Jupyter Notebook 來尋找安全性威脅

數個 Microsoft Sentinel Notebook 不會使用 MSTICPy,例如 認證掃描儀 筆記本或 PowerShell 和 C# 範例。 不使用 MSTICpy 的筆記本不需要本文中所述的 MSTICPy 組態。

重要

Microsoft Sentinel 是 Microsoft Defender 入口網站中統一安全性作業平臺公開預覽的一部分。 如需詳細資訊,請參閱 Microsoft Defender 入口網站中的 Microsoft Sentinel。

必要條件

開始之前,請確定您具有所需的許可權和資源。

  • 若要在 Microsoft Sentinel 中使用筆記本,請確定您具有必要的許可權。 如需詳細資訊,請參閱 管理 Microsoft Sentinel 筆記本的存取權。

  • 若要執行本文中的步驟,您需要 Python 3.6 或更新版本。 在 Azure 機器學習 中,您可以使用 Python 3.8 核心(建議)或 Python 3.6 核心。

  • 此筆記本會 針對IP位址使用 MaxMind GeoLite2 地理位置查閱服務。 若要使用 MaxMind GeoLite2 服務,您需要帳戶密鑰。 您可以在 Maxmind 註冊頁面上註冊免費帳戶和金鑰

  • 此筆記本使用 VirusTotal (VT) 作為威脅情報來源。 若要使用 VirusTotal 威脅情報查閱,您需要一個 VirusTotal 帳戶和 API 密鑰。

    您可以在 VirusTotal 用戶入門頁面註冊免費的 VT 帳戶。 如果您已經是 VirusTotal 使用者,您可以使用現有的金鑰。

    警告

    如果您使用 VT 企業密鑰,請將它儲存在 Azure 金鑰保存庫 中,而不是 msticpyconfig.yaml 檔案。 如需詳細資訊,請參閱 MSTICPY 檔中將秘密指定為 金鑰保存庫 秘密

    如果您不想立即設定 Azure 金鑰保存庫,請註冊並使用免費帳戶,直到您可以設定 金鑰保存庫 儲存器為止。

執行並初始化快速入門指南筆記本

此程式描述如何啟動筆記本並初始化 MSTICpy。

  1. 針對 Azure 入口網站 中的 Microsoft Sentinel,在 [威脅管理] 底下,選取 [筆記本]。
    針對 Defender 入口網站中的 Microsoft Sentinel,選取 [Microsoft Sentinel>威脅管理>筆記本]。

  2. 從 [ 範本] 索引標籤中,選取 [Microsoft Sentinel ML Notebook 的 快速入門指南]。

  3. 選取 [從範本建立]。

  4. 編輯名稱,並視需要選取 Azure 機器學習 工作區。

  5. 選取 [儲存] 將它儲存至 Azure 機器學習 工作區。

  6. 選取 [ 啟動筆記本 ] 以執行筆記本。 筆記本包含一系列儲存格:

    • Markdown 儲存格包含文字和圖形,其中包含使用筆記本的指示
    • 程式代碼 數據格包含可執行的程式代碼,可執行筆記本函式
  7. 依序讀取並執行程式代碼數據格。 略過儲存格或依序執行,可能會導致筆記本稍後發生錯誤。

    選取每個儲存格左邊的播放按鈕,以執行每個儲存格。 視所執行的函式而定,單元格中的程式碼可能會快速執行,或可能需要幾秒鐘的時間才能完成。

    當儲存格執行時,播放按鈕會變更為載入微調器,且 狀態 Executing 會顯示在儲存格底部,以及經過的時間。

    如果您的筆記本似乎未如所述運作,請重新啟動核心並從頭執行筆記本。 例如,如果快速入門指南筆記本中的任何單元格需要超過一分鐘的時間才能執行,請嘗試重新啟動核心並重新執行筆記本。

    用戶入門指南筆記本包含基本使用 Jupyter Notebook 的指示,包括重新啟動 Jupyter 核心。

    完成閱讀並執行什麼是 Jupyter Notebook 區段中的儲存格之後,您就可以開始設定工作,從設定筆記本環境一節開始

  8. 在筆記本的 [設定筆記本環境] 區段中執行第一個程式代碼數據格,其中包含下列程序代碼:

    # import some modules needed in this cell
    from pathlib import Path
    from IPython.display import display, HTML
    
    REQ_PYTHON_VER="3.6"
    REQ_MSTICPY_VER="1.2.3"
    
    display(HTML("Checking upgrade to latest msticpy version"))
    %pip install --upgrade --quiet msticpy[azuresentinel]>=$REQ_MSTICPY_VER
    
    # intialize msticpy
    from msticpy.nbtools import nbinit
    nbinit.init_notebook(
    namespace=globals(),
    extra_imports=["urllib.request, urlretrieve"]
    )
    pd.set_option("display.html.table_schema", False)
    

    初始化狀態會顯示在輸出中。 因為您尚未設定任何專案,因此預期會預期檔案中 Missing msticpyconfig.yaml 遺漏設定的設定警告。

建立組態檔

基本初始化之後,您就可以使用基本設定來建立組態檔,以便使用 MSTICPy。

許多 Microsoft Sentinel 筆記本會連線到病毒計 (VT) 等外部服務,以收集和擴充數據。 若要連線到這些服務,您需要設定及儲存組態詳細數據,例如驗證令牌。 在組態檔中擁有此數據,可避免每次使用筆記本時,都不需要輸入驗證令牌和工作區詳細數據。

MSTICPy 會使用 msticpyconfig.yaml 來儲存各種設定詳細數據。 根據預設, 筆記本初始化函式會產生 msticpyconfig.yaml 檔案。 如果您 從 Microsoft Sentinel 入口網站複製此筆記本,組態檔會填入 Microsoft Sentinel 工作區數據。 當您啟動筆記本時,此數據會從 azure 機器學習 工作區中建立的config.json檔案讀取。 如需詳細資訊,請參閱 MSTICPy 套件元件組態檔

下列各節說明如何將更多組態詳細數據新增至 msticpyconfig.yaml 檔案。

如果您再次執行 用戶入門指南 筆記本,而且已經有最少設定 的 msticpyconfig.yaml 檔案,則函 init_notebook 式不會覆寫或修改現有的檔案。

在任何時間點,選取 MSTICPy 組態工具中的 -Help 下拉功能表,以取得更多指示和詳細文件的連結。

顯示 MSTICPy 設定編輯器

  1. 在程式代碼數據格中,執行下列程式代碼以匯入工具,MpConfigEdit並顯示 msticpyconfig.yaml 檔案的設定編輯器:

    from msticpy.config import MpConfigEdit
    
    mpedit = MpConfigEdit( "msticpyconfig.yaml")
    mpedit.set_tab("AzureSentinel")
    display(mpedit)
    

    例如:

    MSTICPy 設定編輯器的螢幕快照。

    自動建立 的 msticpyconfig.yaml 檔案,顯示在設定編輯器中,包含 Microsoft Sentinel 區段中的兩個專案。 這兩者都會填入從中複製筆記本的 Microsoft Sentinel 工作區詳細數據。 其中一個專案具有工作區的名稱,另一個專案名為 Default

    MSTICPy 可讓您儲存多個 Microsoft Sentinel 工作區的設定,並在它們之間切換。 [ 預設 ] 專案可讓您預設向「首頁」工作區進行驗證,而不需要明確命名。 如果您新增另一個工作區,您可以將其中任何一個工作區設定為 預設 專案。

    在 Azure 機器學習 環境中,設定編輯器可能需要 10-20 秒的時間才會出現。

  2. 確認目前的設定,然後選取 [儲存 設定]。

新增威脅情報提供者設定

此程式描述如何在 msticpyconfig.yaml 檔案中儲存您的 VirusTotal API 金鑰。 您可以選擇將 API 金鑰上傳至 Azure 金鑰保存庫,但必須先設定 金鑰保存庫 設定。 如需詳細資訊,請參閱設定 金鑰保存庫 設定

若要在 MSTICPy 設定編輯器中新增 VirusTotal 詳細數據,請完成下列步驟。

  1. 在程式代碼資料格中輸入下列程式代碼,然後執行:

    mpedit.set_tab("TI Providers")
    mpedit
    
  2. 在 [TI 提供者] 索引標籤中,選取 [新增 prov>VirusTotal>新增]。

  3. 在 [驗證金鑰] 下,選取 [儲存體] 選項旁的 [文字]。

  4. 在 [ 值] 欄位中,貼上您的 API 金鑰。

  5. 選取 [更新],然後選取 [設定編輯器] 底部的 [儲存 設定]。

如需其他支持的威脅情報提供者的詳細資訊,請參閱 MSTICPy 檔中的威脅情報提供者Microsoft Sentinel 中的威脅情報整合。

新增 GeoIP 提供者設定

此程式描述如何在 msticpyconfig.yaml 檔案中儲存 MaxMind GeoLite2 帳戶密鑰,這可讓您的筆記本使用 IP 位址的地理位置查閱服務。

若要在 MSTICPy 設定編輯器中新增 GeoIP 提供者設定,請完成下列步驟。

  1. 在空白程式代碼資料格中輸入下列程式代碼,然後執行:

    mpedit.set_tab("GeoIP Providers")
    mpedit
    
  2. 在 [GeoIP 提供者] 索引標籤中,選取 [新增 prov>GeoIPLite>新增]。

  3. 在 [ 值] 欄位中,輸入您的 MaxMind 帳戶密鑰。

  4. 如有需要,請更新預設 ~/.msticpy 資料夾以儲存下載的 GeoIP 資料庫。

    • 在 Windows 上,此資料夾會對應至 %USERPROFILE%/.msticpy
    • 在 Linux 或 macOS 上,此路徑會對應至主資料夾中的 .msticpy 資料夾。

如需其他支援地理位置查閱服務的詳細資訊,請參閱 MSTICPy GeoIP 提供者檔

設定 Azure 雲端設定

如果您的組織未使用 Azure 公用雲端,您必須在設定中指定此專案,才能成功驗證及使用來自 Microsoft Sentinel 和 Azure 的數據。 如需詳細資訊,請參閱 指定 Azure 雲端和預設 Azure 驗證方法

驗證設定

  1. 在設定編輯器中選取 [驗證設定 ]。

    預期遺漏設定的相關警告訊息,但您不應該有任何威脅情報提供者或 GeoIP 提供者設定。

  2. 視您的環境而定,您可能也需要設定 金鑰保存庫 設定指定 Azure 雲端

  3. 如果您需要因為驗證而進行任何變更,請進行這些變更,然後選取 [儲存 設定]。

  4. 當您完成時,請選取 [ 關閉 ] 按鈕以隱藏驗證輸出。

如需詳細資訊,請參閱: Microsoft Sentinel 中 Jupyter Notebook 和 MSTICPy 的進階設定

載入已儲存的 MSTICPy 設定

在建立 組態檔 程式中,您已將設定儲存到本機 msticpyconfig.yaml 檔案。

不過,在您重新啟動核心或執行另一個筆記本之前,MSTICPy 不會自動重載這些設定。 若要強制 MSTICPy 從新的組態檔重載,請繼續進行下一個程式代碼數據格,並執行下列程式代碼:

import msticpy
msticpy.settings.refresh_config()

測試筆記本

既然您已初始化環境並設定工作區的基本設定,請使用 MSTICPy QueryProvider 類別來測試筆記本。 QueryProvider 會查詢數據源,在此案例中是您的 Microsoft Sentinel 工作區,並讓查詢的數據可供在筆記本中檢視和分析。

使用下列程式來建立 類別的 QueryProvider 實例、從筆記本向 Microsoft Sentinel 進行驗證,以及檢視及執行具有各種不同參數選項的查詢。

您可以有多個載入的QueryProvider實例,以便與多個 Microsoft Sentinel 工作區或其他數據提供者搭配使用,例如 適用於端點的 Microsoft Defender。

載入 QueryProvider

若要載入 QueryProviderAzureSentinel,請繼續使用下列程式代碼前往資料格,然後執行它:

# Initialize a QueryProvider for Microsoft Sentinel
qry_prov = QueryProvider("AzureSentinel")

如果您在載入 Microsoft Sentinel 驅動程式時看到警告 Runtime dependency of PyGObject is missing ,請參閱 錯誤: PyGObject 的運行時間相依性遺失。 此警告不會影響筆記本功能。

從筆記本向 Microsoft Sentinel 工作區進行驗證

在 Azure 機器學習 Notebook 中,驗證預設會使用您用來向 Azure 機器學習 工作區驗證的認證。

藉由完成下列步驟,使用受控識別進行驗證。

  1. 執行下列程式代碼來向 Sentinel 工作區進行驗證。

    # Get the default Microsoft Sentinel workspace details from msticpyconfig.yaml
    
    ws_config = WorkspaceConfig()
    
    # Connect to Microsoft Sentinel with our QueryProvider and config details
    qry_prov.connect(ws_config)
    
  2. 檢閱輸出。 顯示的輸出類似下圖。

    顯示以已連線訊息結尾之 Azure 驗證的螢幕快照。

使用 Azure CLI 快取您的登入令牌

若要避免在重新啟動核心或執行其他筆記本時重新驗證,您可以使用 Azure CLI 快取您的登入令牌。

計算實例上的 Azure CLI 元件會快取 可重複使用的重新整理令牌 ,直到令牌逾時為止。MSTICPy 會自動使用 Azure CLI 認證,如果有的話。

若要使用 Azure CLI 進行驗證,請在空白資料格中輸入下列命令並加以執行:

!az login

如果您重新啟動計算實例或切換至不同的實例,則必須重新驗證。 如需詳細資訊,請參閱 Microsoft Sentinel Notebooks GitHub 存放庫 Wiki 中的使用 Azure CLI 快取認證一節。

檢視 Microsoft Sentinel 工作區數據架構和內建 MSTICPy 查詢

聯機到 Microsoft Sentinel QueryProvider 之後,您可以藉由查詢 Microsoft Sentinel 工作區數據架構來瞭解可供查詢的數據類型。

Microsoft Sentinel QueryProvider 有屬性 schema_tables ,可提供您架構數據表的清單,以及 schema 屬性,其中也包含每個數據表的數據行名稱和數據類型。

若要檢視 Microsoft Sentinel 架構中的前 10 個數據表:

使用下列程式代碼繼續進行下一個儲存格,然後執行它。 您可以省略 以 [:10] 列出工作區中的所有資料表。

# Get list of tables in the Workspace with the 'schema_tables' property
qry_prov.schema_tables[:10]  # Output only a sample of tables for brevity
                             # Remove the "[:10]" to see the whole list

會出現下列輸出:

Sample of first 10 tables in the schema
    ['AACAudit',
     'AACHttpRequest',
     'AADDomainServicesAccountLogon',
     'AADDomainServicesAccountManagement',
     'AADDomainServicesDirectoryServiceAccess',
     'AADDomainServicesLogonLogoff',
     'AADDomainServicesPolicyChange',
     'AADDomainServicesPrivilegeUse',
     'AADDomainServicesSystemSecurity',
     'AADManagedIdentitySignInLogs']

MSTICPy 也包含許多可供您執行的內建查詢。 使用 .list_queries()列出可用的查詢,並以問號 (?) 作為參數呼叫查詢,以取得查詢的特定詳細數據。 或者,您可以在查詢瀏覽器中檢視查詢清單和相關聯的說明。

若要檢視可用查詢的範例:

  1. 使用下列程式代碼繼續進行下一個儲存格,然後執行它。 您可以省略 [::5] 以列出所有查詢。

    # Get a sample of available queries
    print(qry_prov.list_queries()[::5])  # showing a sample - remove "[::5]" for whole list
    
  2. 檢閱輸出。

    Sample of queries
    =================
    ['Azure.get_vmcomputer_for_host', 'Azure.list_azure_activity_for_account', 'AzureNetwork.az_net_analytics', 'AzureNetwork.get_heartbeat_for_ip', 'AzureSentinel.get_bookmark_by_id', 'Heartbeatget_heartbeat_for_host', 'LinuxSyslog.all_syslog', 'LinuxSyslog.list_logon_failures', 'LinuxSyslog.sudo_activity', 'MultiDataSource.get_timeseries_decompose', 'Network.get_host_for_ip','Office365.list_activity_for_ip', 'SecurityAlert.list_alerts_for_ip', 'ThreatIntelligence.list_indicators_by_filepath', 'WindowsSecurity.get_parent_process', 'WindowsSecurity.list_host_events','WindowsSecurity.list_hosts_matching_commandline', 'WindowsSecurity.list_other_events']
    
  3. 若要透過傳遞 ? 做為參數來取得查詢的說明:

    # Get help about a query by passing "?" as a parameter
    qry_prov.Azure.list_all_signins_geo("?")
    
  4. 檢閱輸出。

    Help for 'list_all_signins_geo' query
    =====================================
    Query:  list_all_signins_geo
    Data source:  AzureSentinel
    Gets Signin data used by morph charts
    
    Parameters
    ----------
    add_query_items: str (optional)
        Additional query clauses
    end: datetime (optional)
        Query end time
    start: datetime (optional)
        Query start time
        (default value is: -5)
    table: str (optional)
        Table name
        (default value is: SigninLogs)
    Query:
         {table} | where TimeGenerated >= datetime({start}) | where TimeGenerated <= datetime({end}) | extend Result = iif(ResultType==0, "Sucess", "Failed") | extend Latitude = tostring(parse_json(tostring(LocationDetails.geoCoordinates)).latitude) | extend Longitude = tostring(parse_json(tostring(LocationDetails.geoCoordinates)).longitude)
    
  5. 若要在可捲動、可篩選的清單中檢視數據表和查詢,請繼續進行下一個數據格,並執行下列程式代碼。

    qry_prov.browse_queries()
    
  6. 針對選取的查詢,會顯示所有必要的和選擇性參數,以及查詢的全文。 例如:

    顯示在可捲動、可篩選清單中之數據表和查詢的螢幕快照。

雖然您無法從瀏覽器執行查詢,但您可以在每個查詢結尾複製並貼上範例,以在筆記本中的其他位置執行。

如需詳細資訊,請參閱 MSTICPy 檔中執行預先定義的查詢

使用時間參數執行查詢

大部分的查詢都需要時間參數。 輸入日期/時間字串很繁瑣,而且在多個位置修改字串可能會容易出錯。

每個查詢提供者都有查詢的預設開始和結束時間參數。 每當呼叫時間參數時,預設會使用這些時間參數。 您可以開啟 query_time 控制項來變更預設的時間範圍。 變更會持續生效,直到您再次變更這些變更為止。

  1. 使用下列程式代碼繼續進行下一個儲存格,然後執行它:

    # Open the query time control for your query provider
    qry_prov.query_time
    
  2. start視需要設定和 end 時間。 例如:

    設定查詢預設時間參數的螢幕快照。

使用內建的時間範圍執行查詢

查詢結果會以 Pandas DataFrame 傳回,這是表格式數據結構,例如電子錶格或資料庫數據表。 使用 pandas 函式 對查詢結果執行額外的篩選和分析。

  1. 執行下列程式代碼數據格。 它會使用查詢提供者的預設時間設定來執行查詢。 您可以變更此範圍,然後再次執行程式碼數據格來查詢新的時間範圍。

    # The time parameters are taken from the qry_prov time settings
    # but you can override this by supplying explict "start" and "end" datetimes
    signins_df = qry_prov.Azure.list_all_signins_geo()
    
    # display first 5 rows of any results
    # If there is no data, just the column headings display
    signins_df.head()
    
  2. 檢閱輸出。 它會顯示結果的前五個數據列。 例如:

    查詢執行的螢幕快照,其中包含內建的時間範圍。

    如果沒有數據,則只會顯示數據行標題。

使用自訂時間範圍執行查詢

您也可以建立新的查詢時間物件,並將其傳遞至查詢做為參數。 這可讓您針對不同的時間範圍執行一次性查詢,而不會影響查詢提供者預設值。

# Create and display a QueryTime control.
time_range = nbwidgets.QueryTime()
time_range

設定所需的時間範圍之後,您可以將時間範圍傳遞至查詢函式,並在與先前程式代碼不同的數據格中執行下列程式代碼:

signins_df = qry_prov.Azure.list_all_signins_geo(time_range)
signins_df.head()

您也可以使用 和 end 參數,以 start Python 日期時間或日期時間字串的形式傳遞 datetime 值:

from datetime import datetime, timedelta
q_end = datetime.utc.now()
q_start = end – timedelta(5)
signins_df = qry_prov.Azure.list_all_signins_geo(start=q_start, end=q_end)

自訂您的查詢

您可以藉由新增更多查詢邏輯,或使用 函式執行完整的查詢,來自定義內建查詢 exec_query

例如,大部分的內建查詢都支持 add_query_items 參數,可用來將篩選或其他作業附加至查詢。

  1. 執行下列程式代碼資料格,以新增資料框架,以依警示名稱摘要警示數目:

    from datetime import datetime, timedelta
    
    qry_prov.SecurityAlert.list_alerts(
       start=datetime.utcnow() - timedelta(28),
        end=datetime.utcnow(),
        add_query_items="| summarize NumAlerts=count() by AlertName"
    )
    
  2. 將完整 Kusto 查詢語言 (KQL) 查詢字串傳遞至查詢提供者。 查詢會針對連接的工作區執行,而數據會以 panda DataFrame 的形式傳回。 請執行:

    # Define your query
    test_query = """
    OfficeActivity
    | where TimeGenerated > ago(1d)
    | take 10
    """
    
    # Pass the query to your QueryProvider
    office_events_df = qry_prov.exec_query(test_query)
    display(office_events_df.head())
    
    

如需詳細資訊,請參閱

Test VirusTotal

  1. 若要使用威脅情報來查看是否在 VirusTotal 數據中出現 IP 位址,請使用下列程式代碼執行數據格:

    # Create your TI provider – note you can re-use the TILookup provider (‘ti’) for
    # subsequent queries - you don’t have to create it for each query
    ti = TILookup()
    
    # Look up an IP address
    ti_resp = ti.lookup_ioc("85.214.149.236")
    
    ti_df = ti.result_to_df(ti_resp)
    ti.browse_results(ti_df, severities="all")
    
  2. 檢閱輸出。 例如:

    在 VirusTotal 資料中顯示的 IP 位址螢幕快照。

  3. 向下卷動以檢視完整結果。

如需詳細資訊,請參閱 MSTICPy 中的威脅 Intel 查閱。

測試地理位置IP查閱

  1. 若要使用 MaxMind 服務取得 IP 位址的地理位置詳細數據,請使用下列程式代碼執行數據格:

    # create an instance of the GeoLiteLookup provider – this
    # can be re-used for subsequent queries.
    geo_ip = GeoLiteLookup()
    raw_res, ip_entity = geo_ip.lookup_ip("85.214.149.236")
    display(ip_entity[0])
    
  2. 檢閱輸出。 例如:

    ipaddress
    { 'AdditionalData': {},
      'Address': '85.214.149.236',
      'Location': { 'AdditionalData': {},
                    'CountryCode': 'DE',
                    'CountryName': 'Germany',
                    'Latitude': 51.2993,
                    'Longitude': 9.491,
                    'Type': 'geolocation',
                    'edges': set()},
      'ThreatIntelligence': [],
      'Type': 'ipaddress',
      'edges': set()}
    

第一次執行此程式代碼時,您應該會看到 GeoLite 驅動程式下載其資料庫。

如需詳細資訊,請參閱 MSTICPy GeoIP 提供者

設定 金鑰保存庫 設定

本節只有在將秘密儲存在 Azure 金鑰保存庫 時才相關。

當您在 Azure 金鑰保存庫 中儲存秘密時,必須先在 Azure 全域 KeyVault 管理入口網站建立 金鑰保存庫。

必要設定是您從保存庫屬性取得的所有值,但有些值可能有不同的名稱。 例如:

  • VaultName 會顯示在 Azure 金鑰保存庫 [屬性] 畫面的左上方
  • TenantId 會顯示為 目錄標識碼
  • AzureRegion 會顯示為 Location
  • 授權單位 是 Azure 服務的雲端。

只有 VaultNameTenantIdAuthority 值才能從保存庫擷取秘密。 如果您選擇從 MSTICPy 建立保存庫,則需要其他值。 如需詳細資訊,請參閱將秘密指定為 金鑰保存庫 秘密

默認會選取 [使用 KeyRing] 選項,並可讓您在本機 KeyRing 中快取 金鑰保存庫 認證。 如需詳細資訊,請參閱 KeyRing 檔

警告

如果您不完全信任筆記本執行所在主機計算,請勿使用 [使用 KeyRing ] 選項。

在我們的案例中,計算是 Jupyter 中樞伺服器,其中筆記本核心正在執行,而且不一定是您瀏覽器執行所在的計算機。 如果您使用 Azure ML,計算會是您選取的 Azure ML 計算實例。 Keyring 會在筆記本核心執行所在的主機上執行其快取。

若要在 MSTICPy 設定編輯器中新增 金鑰保存庫 設定,請完成下列步驟。

  1. 使用下列程式代碼繼續進行下一個儲存格,然後執行它:

    mpedit.set_tab("Key Vault")
    mpedit
    
  2. 輸入 金鑰保存庫的保存庫詳細數據。 例如:

    金鑰保存庫 設定區段的螢幕快照

  3. 選取 [儲存],然後選取 [儲存 設定]。

測試 金鑰保存庫

若要測試金鑰保存庫,請檢查您是否可以連線並檢視秘密。 如果您未新增秘密,則不會看到任何詳細數據。 如果您需要,請從 Azure 金鑰保存庫 入口網站將測試密碼新增至保存庫,並檢查它是否顯示在 Microsoft Sentinel 中。

例如:

mpconfig = MpConfigFile()
mpconfig.refresh_mp_config()
mpconfig.show_kv_secrets()

警告

請勿讓輸出顯示在您儲存的筆記本中。 如果輸出中有真正的秘密,請先使用筆記本的 Clear 輸出 命令,再儲存筆記本。

此外,請刪除筆記本的快取複本。 例如,查看 筆記本目錄的 .ipynb_checkpoints 子資料夾,並刪除找到此筆記本的任何複本。 使用清除的輸出儲存筆記本應該會覆寫檢查點複本。

設定 金鑰保存庫 之後,您可以使用 [數據提供者] 和 [TI 提供者] 區段中的 [上傳至 KV] 按鈕,將選取的設定移至保存庫。 MSTICPy 會根據設定的路徑產生密碼的預設名稱,例如 TIProviders-VirusTotal-Args-AuthKey

如果成功上傳值,則會刪除設定編輯器中的 [值] 字段內容,並將基礎設定取代為佔位元值。 MSTICPy 會使用這個值,指出它應該會在嘗試擷取密鑰時自動產生 金鑰保存庫 路徑。

如果您已經將必要的秘密儲存在 金鑰保存庫 中,您可以在 [值] 字段中輸入秘密名稱。 如果密碼未儲存在預設保存庫中(金鑰保存庫 區段中指定的值),您可以指定 VaultName/SecretName 的路徑

目前不支援從不同租使用者中的保存庫擷取設定。 如需詳細資訊,請參閱將秘密指定為 金鑰保存庫 秘密

指定 Azure 雲端和 Azure 驗證方法

如果您使用主權或政府 Azure 雲端,而不是公用或全域 Azure 雲端,您必須在設定中選取適當的雲端。 對大多數組織而言,全域雲端是預設值。

您也可以使用這些 Azure 設定來定義 Azure 驗證類型的預設喜好設定。

若要指定 Azure 雲端和 Azure 驗證方法,請完成下列步驟。

  1. 使用下列程式代碼繼續進行下一個儲存格,然後執行它:

    mpedit.set_tab("Azure")
    mpedit
    
  2. 選取貴組織所使用的雲端,或保留預設選取 的全域 選項。

  3. 選取下列一或多個方法:

    • env 將 Azure 認證儲存在環境變數中。
    • msi 用來使用受控服務識別,這是指派給 Jupyter 中樞執行所在主機或虛擬機的身分識別。 Azure 機器學習 計算實例目前不支援 MSI。
    • cli 可從已驗證的 Azure CLI 作業階段使用認證。
    • 互動式,使用一次性裝置程式代碼來使用互動式裝置授權流程。

    在大部分情況下,我們建議選取多個方法,例如 cliinteractive。 Azure 驗證會依列出的順序嘗試每個已設定的方法,直到成功為止。

  4. 選取 [儲存],然後選取 [儲存 設定]。

    例如:

    Azure Government 雲端所定義的設定螢幕快照。

下一步

本文說明在 Microsoft Sentinel 中搭配 Jupyter Notebook 使用 MSTICPy 的基本概念。 如需詳細資訊,請參閱 Microsoft Sentinel 中 Jupyter Notebook 和 MSTICPy 的進階設定。

您也可以試用儲存在 Microsoft Sentinel Notebooks GitHub 存放庫中的其他筆記本,例如:

如果您在另一個 Jupyter 環境中使用本文所述的筆記本,您可以使用任何支援 Python 3.6 或更新版本的核心。

若要在 Microsoft Sentinel 和 Azure 機器學習 (ML) 外部使用 MSTICPy 筆記本,您也必須設定 Python 環境。 使用 Anaconda 散發套件安裝 Python 3.6 或更新版本,其中包含許多必要的套件。

更多有關 MSTICPy 和筆記本的閱讀

下表列出更多有關瞭解 MSTICPy、Microsoft Sentinel 和 Jupyter 筆記本的參考。

主體 更多參考
MSTICPy - MSTICPy 套件組態
- MSTICPy 設定 編輯器
- 設定筆記本環境
- MP 設定 Editor 筆記本

注意:GitHub 存放 Azure-Sentinel-Notebooks 庫也包含具有批注化區段的範本 msticpyconfig.yaml 檔案,可協助您了解設定。
Microsoft Sentinel 和 Jupyter 筆記本 - 建立您的第一個 Microsoft Sentinel 筆記本 (部落格系列)
- Jupyter Notebooks:簡介
- MSTICPy 檔
- Microsoft Sentinel Notebooks 文件
- The Infosec Jupyterbook
- Linux 主機總管筆記本逐步解說
- 為何使用 Jupyter 進行安全性調查
- 使用 Microsoft Sentinel 和 Notebook 進行安全性調查
- Pandas 檔
- Bokeh 檔