使用 Jupyter 笔记本搜寻安全威胁

在进行安全调查和搜寻的过程中,启动并运行 Jupyter 笔记本,以便以编程方式分析数据。

在本文中,你将创建一个 Azure 机器学习工作区,从 Microsoft Sentinel 向 Azure 机器学习工作区启动笔记本,并运行该笔记本中的代码。

先决条件

建议在完成本文中的步骤之前,先了解 Microsoft Sentinel 笔记本。 请参阅使用 Jupyter 笔记本搜寻安全威胁

若要使用 Microsoft Sentinel 笔记本,你必须具有以下角色和权限:

类型 详细信息
Microsoft Sentinel - Microsoft Sentinel 参与者角色,可以从 Microsoft Sentinel 保存和启动笔记本
Azure 机器学习 - 资源组级别的所有者或参与者角色,可根据需要创建新的 Azure 机器学习工作区 。
- 运行 Microsoft Sentinel 笔记本的 Azure 机器学习工作区上的参与者角色。

有关详细信息,请参阅管理对 Azure 机器学习工作区的访问

从 Microsoft Sentinel 创建 Azure 机器学习工作区

若要创建工作区,请选择以下选项卡之一,具体取决于使用的是公共终结点还是专用终结点。

  • 如果你的 Microsoft Sentinel 工作区具有公共终结点,建议使用公共终结点,以避免网络通信中的潜在问题。
  • 如果你想在虚拟网络中使用 Azure 机器学习工作区,请使用专用终结点。
  1. 转到 Azure 门户,在“威胁管理”下,选择“笔记本”

  2. 选择“配置 Azure 机器学习”>“创建新的 AML 工作区”

  3. 输入以下详细信息,然后选择“下一步”。

    字段 说明
    订阅 选择要使用的 Azure 订阅。
    资源组 使用订阅中的现有资源组,或者输入一个名称以创建新的资源组。 资源组保存 Azure 解决方案的相关资源。
    工作区名称 输入用于标识工作区的唯一名称。 名称在整个资源组中必须唯一。 使用易于记忆且区别于其他人所创建工作区的名称。
    区域 选择离你的用户和数据资源最近的位置来创建工作区。
    存储帐户 存储帐户用作工作区的默认数据存储。 可以创建新的 Azure 存储资源或选择订阅中的现有资源。
    KeyVault 密钥保管库用于存储工作区所需的机密和其他敏感信息。 可以创建新的 Azure Key Vault 资源或选择订阅中的现有资源。
    Application insights 工作区使用 Azure Application Insights 来存储有关已部署模型的监视信息。 可以创建新的 Azure Application Insights 资源或选择订阅中的现有资源。
    容器注册表 容器注册表用于注册在训练和部署中使用的 docker 映像。 为了最大程度地降低成本,生成第一个映像后,才创建新的 Azure 容器注册表。 或者,可以选择立即创建资源或选择订阅中的现有资源,或者选择“无”(如果不想使用任何容器注册表)
  4. 在“网络”选项卡上,选择“启用来自所有网络的公共访问”。

    在“高级”或“标签”选项卡中定义任何相关设置,然后选择“审阅并创建”。

  5. 在“查看 + 创建”选项卡中,查看信息以验证信息是否正确,然后选择“创建”,开始部署工作区 。 例如:

    从 Microsoft Sentinel 查看 + 创建机器学习工作区。

    在云中创建工作区可能需要几分钟时间。 在此期间,工作区的“概述”页显示当前部署状态,并在部署完成后进行更新。

部署完成后,返回 Microsoft Sentinel 中的“笔记本”,并从新的 Azure 机器学习工作区启动笔记本

如果有多个笔记本,请确保启动笔记本时选择使用默认 AML 工作区。 例如:

选择默认 AML 工作区用于笔记本。

启动 Azure 机器学习工作区中的笔记本

创建 Azure 机器学习工作区后,从 Microsoft Sentinel 启动该工作区中的笔记本。 请注意,如果在 Azure 存储帐户中启用了专用终结点,则无法从 Microsoft Sentinel 启动 Azure 机器学习工作区中的笔记本。 必须从 Microsoft Sentinel 复制笔记本模板,并将笔记本上传到 Azure 机器学习工作室。

若要在 Azure 机器学习工作区中启动 Microsoft Sentinel 笔记本,请完成以下步骤。

  1. 转到 Azure 门户,在“威胁管理”下,选择“笔记本”

  2. 选择“模板”选项卡以查看 Microsoft Sentinel 提供的笔记本

  3. 选择笔记本以查看其说明、所需的数据类型和数据源。

  4. 找到你想要使用的笔记本时,请选择“从模板创建”和“保存”,将其克隆到自己的工作区中

  5. 按需编辑名称。 如果工作区中已存在笔记本,请覆盖现有笔记本或创建新笔记本。 默认情况下,笔记本保存在所选 AML 工作区的 /Users/<Your_User_Name>/ 目录中。

    保存笔记本以将其克隆到自己的工作区。

  6. 保存笔记本后,“保存笔记本”按钮更改为“启动笔记本” 。 选择“启动笔记本”,在工作区中打开它。

    例如:

    在 AML 工作区中启动笔记本。

  7. 在页面顶部,选择“计算”实例用于笔记本服务器。

    如果没有计算实例,请创建新的实例。 如果计算实例已停止,请确保启动它。 有关详细信息,请参阅在 Azure 机器学习工作室中运行笔记本

    只有本人可以查看和使用自己创建的计算实例。 用户文件与 VM 分开存储,并在工作区中的所有计算实例之间共享。

    如果要创建新的计算实例以测试笔记本,请创建“常规用途”类别的计算实例。

    内核也会显示在 Azure 机器学习窗口右上角。 如果未选择所需的内核,请从下拉列表中选择其他版本。

  8. 创建并启动笔记本服务器后,运行笔记本单元。 在每个单元格中,选择“运行”图标以运行笔记本代码。

    有关详细信息,请参阅命令模式快捷方式

  9. 如果笔记本挂起或者你希望从头开始,可以重启内核,并从头开始重新运行笔记本单元格。 如果重启内核,将会删除变量和其他状态。 请在重启后重新运行任何初始化和身份验证单元格。

    若要重新开始,请选择“内核操作”>“重启内核”。 例如:

    重启笔记本内核。

将代码粘贴到笔记本中

始终按顺序运行笔记本代码单元格。 跳过单元格可能会导致错误。

在笔记本中:

  • “Markdown”单元格包含文本,包括 HTML 和静态图像。
  • “代码”单元格包含代码。 选择某一代码单元格后,通过选择该单元格左侧的“播放”图标或按 SHIFT+ENTER 来运行该单元格中的代码。

例如,在笔记本中运行以下代码单元格:

# This is your first code cell. This cell contains basic Python code.

# You can run a code cell by selecting it and then selecting
# the Play button to the left of the cell, or by pressing SHIFT+ENTER.
# Code output displays below the code.

print("Congratulations, you just ran this code cell")

y = 2 + 2

print("2 + 2 =", y)

示例代码生成以下输出:

Congratulations, you just ran this code cell

2 + 2 = 4

笔记本代码单元格中的变量集在单元格格之间保持不变,这样可以将单元格链接在一起。 例如,下面的代码单元格使用上一个单元格中的 y 值:

# Note that output from the last line of a cell is automatically
# sent to the output cell, without needing the print() function.

y + 2

输出为:

6

下载所有 Microsoft Sentinel 笔记本

本部分介绍如何使用 Git 从 Microsoft Sentinel 笔记本内部将 Microsoft Sentinel GitHub 存储库提供的所有笔记本直接下载到 Azure 机器学习工作区。

将 Microsoft Sentinel 笔记本存储在 Azure 机器学习工作区中可让你轻松更新这些笔记本。

  1. 在 Microsoft Sentinel 笔记本中,将以下代码输入空单元格中,然后运行该单元格:

    !git clone https://github.com/Azure/Azure-Sentinel-Notebooks.git azure-sentinel-nb
    

    GitHub 存储库内容的副本是在 Azure 机器学习工作区中用户文件夹的 azure-Sentinel-nb 目录中创建的

  2. 将所需的笔记本从此文件夹复制到工作目录。

  3. 若要使用 GitHub 中的最近更改来更新笔记本,请运行:

    !cd azure-sentinel-nb && git pull