分享方式:


在 Microsoft Sentinel 中開始使用 Jupyter 筆記本和 MSTICPy

本文說明如何執行 Microsoft Sentinel ML Notebooks 的使用者入門指南筆記本,其會設定在 Microsoft Sentinel 中執行 Jupyter Notebook 以及執行簡單資料查詢的基本設定。

Microsoft Sentinel ML Notebooks 的使用者入門指南筆記本使用 MSTICPy,這是 Microsoft 所建置網路安全性工具的 Python 程式庫,其提供威脅搜捕和調查功能。

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

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

本文中的步驟描述如何透過 Microsoft Sentinel 在 Azure Machine Learning 工作區中執行 Microsoft Sentinel ML Notebooks 的使用者入門指南筆記本。 您也可以使用本文做為在其他環境 (包括本機) 中執行筆記本的類似步驟的指引。

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

數個 Microsoft Sentinel 筆記本未使用 MSTICPy,例如認證掃描器筆記本或 PowerShell 和 C# 範例。 未使用 MSTICpy 的筆記本不需要本文所述的 MSTICPy 設定。

重要

Microsoft Sentinel 現已在 Microsoft Defender 入口網站中 Microsoft 統一的安全性作業平台中正式推出。 如需詳細資訊,請參閱 Microsoft Defender 入口網站中的 Microsoft Sentinel

必要條件

開始之前,請確定您擁有所需的權限和資源。

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

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

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

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

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

    警告

    如果您使用 VT 企業金鑰,請將其儲存在 Azure Key Vault,而非 msticpyconfig.yaml 檔案中。 如需詳細資訊,請參閱 MSTICPY 文件中的將秘密指定為 Key Vault 秘密

    如果您不想立即設定 Azure Key Vault,請註冊並使用免費帳戶,直到您可以設定 Key Vault 儲存體為止。

執行並初始化使用者入門指南筆記本

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

  1. 針對 Azure 入口網站中的 Microsoft Sentinel,於 [威脅管理] 底下,選取 [Notebooks]
    針對 Defender 入口網站中的 Microsoft Sentinel,選取 [Microsoft Sentinel]> [威脅管理]> [Notebooks]

  2. 從 [樣本] 索引標籤中,選取 [Microsoft Sentinel ML 筆記本入門指南]

  3. 選取 [從範本建立]

  4. 編輯名稱,並視需要選取 Azure Machine Learning 工作區。

  5. 選取 [儲存],將其儲存至您的 Azure Machine Learning 工作區。

  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 筆記本會連線到外部服務,例如 VirusTotal (VT),以收集和擴充資料。 若要連線到這些服務,您需要設定及儲存設定詳細資料,例如驗證權杖。 在設定檔中擁有此資料,可避免在每次使用筆記本時,都必須輸入驗證權杖和工作區詳細資料。

MSTICPy 會使用 msticpyconfig.yaml 來儲存各種設定詳細資料。 根據預設,筆記本初始化函式會產生 msticpyconfig.yaml 檔案。 如果您從 Microsoft Sentinel 入口網站複製此筆記本,設定檔將會填入 Microsoft Sentinel 工作區資料。 啟動您的筆記本時,此資料會從在 Azure Machine Learning 工作區中建立的 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 工作區的設定,並在兩者之間切換。 Default 項目可讓您預設向「首頁」工作區進行驗證,而不需要明確命名。 如果您新增其他工作區,您可以將其中任何一個工作區設定為 Default 項目。

    在 Azure Machine Learning 環境中,設定編輯器可能需要 10-20 秒才會出現。

  2. 驗證您目前的設定,然後選取 [儲存設定]

新增威脅情報提供者設定

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

若要在 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. 如有需要,請更新用於儲存所下載 GeoIP 資料庫的預設 ~/.msticpy 資料夾。

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

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

設定 Azure 雲端設定

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

驗證設定

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

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

  2. 視您的環境而定,您可能也需要設定 Key Vault 設定指定 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

若要載入 AzureSentinelQueryProvider,請前往下一個資料格,加上下列程式碼並執行:

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

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

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

在 Azure Machine Learning 筆記本中,驗證會預設會使用您用來向 Azure Machine Learning 工作區驗證的認證。

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

  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. 視需要設定 startend 時間。 例如:

    為查詢設定預設時間參數的螢幕擷取畫面。

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

查詢結果會以 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()

您也可以使用 startend 參數,以 Python datetimes 或 date-time 字串的形式傳遞 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 Query Language (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())
    
    

如需詳細資訊,請參閱

測試 VirusTotal

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

    # 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 中的威脅情報查閱

測試地理位置 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 Key Vault 設定

本節只有在將秘密儲存在 Azure Key Vault 時才相關。

將祕密儲存在 Azure Key Vault 時,必須先在 Azure 全域 KeyVault 管理入口網站中建立 Key Vault。

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

  • VaultName 會顯示在 Azure Key Vault [屬性] 畫面的左上方
  • TenantId 會顯示為目錄識別碼
  • AzureRegion 會顯示為位置
  • Authority 是您的 Azure 服務的雲端。

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

預設會選取 [使用 KeyRing] 選項,並可讓您在本機 KeyRing 中快取 Key Vault 認證。 如需詳細資訊,請參閱 KeyRing 文件

警告

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

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

若要在 MSTICPy 設定編輯器中新增 Key Vault 設定,請完成下列步驟。

  1. 前往下一個資料格,加上下列程式碼並執行:

    mpedit.set_tab("Key Vault")
    mpedit
    
  2. 輸入您的 Key Vault 的保存庫詳細資料。 例如:

    Key Vault 設定區段的螢幕擷取畫面

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

測試 Key Vault

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

例如:

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

警告

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

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

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

如果成功上傳值,則會刪除設定編輯器中 [值] 欄位的內容,並將基礎設定取代為預留位置值。 MSTICPy 會使用此值來指出應該在嘗試擷取金鑰時自動產生 Key Vault 路徑。

如果您已經有儲存在 Key Vault 中的必要祕密,則可以在 [值] 欄位中輸入祕密名稱。 如果祕密未儲存在預設保存庫 (Key Vault 區段中指定的值),您可以指定 VaultName/SecretName 的路徑。

目前不支援從位於不同租用戶的保存庫擷取設定。 如需詳細資訊,請參閱將秘密指定為 Key Vault 秘密

指定 Azure 雲端和 Azure 驗證方法

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

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

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

  1. 前往下一個資料格,加上下列程式碼並執行:

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

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

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

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

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

    例如:

    為 Azure Government 雲端定義設定的螢幕擷取畫面。

下一步

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

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

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

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

深入了解 MSTICPy 和筆記本

下表列出更多有關 MSTICPy、Microsoft Sentinel 和 Jupyter Notebook 的參考。

主體 更多參考
MSTICPy - MSTICPy 套件設定
- MSTICPy 設定編輯器
- 設定您的筆記本環境
- MPSettingsEditor 筆記本

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