Microsoft Defender for Cloud

本文档介绍了如何将 Microsoft Defender for Cloud 与 Google Security Operations 集成。

使用场景

  1. 将安全提醒注入 Google SecOps 以进行调查。

  2. 更新提醒。

  3. 检索标准合规性相关信息。

前提条件

在 Google SecOps 平台中配置集成之前,请务必向 Azure 用户账号授予所需权限,并配置密码身份验证或 OAuth 身份验证。

配置权限

此集成需要对 Azure 资源的委托访问权限。请务必向用于配置集成的 Azure 用户账号授予以下所需权限:

  1. 用户账号必须是以下 Azure 角色的有效成员:

    • Security Reader
    • Security Admin
  2. 在 Azure 订阅级别,请务必向用户授予以下 IAM 角色:Management Group Reader。

配置密码身份验证

如需为 Microsoft Defender for Cloud 配置密码身份验证,请完成以下步骤:

  1. 创建 Microsoft Entra 应用。

  2. 为您的应用配置 API 权限。

  3. 创建客户端密钥。

  4. 使用您的 Azure 订阅 ID 作为相应集成参数的值。

创建 Microsoft Entra 应用

  1. 以用户管理员或密码管理员身份登录 Azure 门户。

  2. 选择 Microsoft Entra ID。

  3. 依次前往应用注册 > 新注册。

  4. 输入应用名称。

  5. 点击注册。

  6. 保存应用(客户端)ID 和目录(租户)ID 值,以便稍后在配置集成参数时使用。

配置 API 权限

  1. 依次前往 API 权限 > 添加权限。

  2. 依次选择 Azure Service Management>委托权限。

  3. 在选择权限部分,选择以下权限:

    • user_impersonation
  4. 依次选择 Microsoft Graph > 委托权限。

  5. 在选择权限部分,选择以下权限:

    • SecurityEvents.Read.All
    • SecurityEvents.ReadWrite.All
    • User.Read
  6. 依次选择 Microsoft Graph > 应用权限。

  7. 在选择权限部分,选择以下权限:

    • SecurityEvents.Read.All
    • SecurityEvents.ReadWrite.All
  8. 点击添加权限。

  9. 点击为 YOUR_ORGANIZATION_NAME 授予管理员同意书。

    当授予管理员同意书确认对话框出现时,点击是。

创建客户端密钥

  1. 前往证书和密钥 > 新客户端密钥。

  2. 提供客户端密钥的说明,并设置其失效期限。

  3. 点击 Add(添加)。

  4. 保存客户端密钥的值(而非密钥 ID),以便在配置集成时将其用作 Client Secret 参数值。客户端密钥值仅显示一次。

使用 Azure 订阅 ID 配置集成

  1. 在 Microsoft Defender for Cloud 中,前往概览标签页。

  2. 点击 Azure 订阅。

  3. 复制 Azure 订阅 ID 值,并在配置集成参数时将其输入到 Subscription ID 参数中。

配置 OAuth 身份验证

如需为 Microsoft Defender for Cloud 配置 OAuth 身份验证,请完成以下步骤:

  1. 创建 Microsoft Entra 应用。

  2. 为您的应用配置 API 权限。

  3. 创建客户端密钥。

  4. 使用您的 Azure 订阅 ID 作为相应集成参数的值。

创建 Microsoft Entra 应用

如需创建应用并模拟所选用户,请按照以下步骤操作:

  1. 以用户管理员或密码管理员身份登录 Azure 门户。

  2. 选择 Microsoft Entra ID。

  3. 依次前往应用注册 > 新注册。

  4. 输入应用名称。

  5. 选择合适的支持的账号类型。

  6. 对于重定向网址,请提供以下值:http://localhost。

  7. 点击注册。

  8. 保存应用(客户端)ID 和目录(租户)ID 值,以便稍后使用它们来配置集成。

配置 API 权限

  1. 依次前往 API 权限 > 添加权限。

  2. 依次选择 Azure Service Management>委托权限。

  3. 在选择权限部分,选择以下权限:

    • user_impersonation
  4. 依次选择 Microsoft Graph > 委托权限。

  5. 在选择权限部分,选择以下权限:

    • SecurityEvents.Read.All
    • SecurityEvents.ReadWrite.All
    • User.Read
  6. 依次选择 Microsoft Graph > 应用权限。

  7. 在选择权限部分,选择以下权限:

    • SecurityEvents.Read.All
    • SecurityEvents.ReadWrite.All
  8. 点击添加权限。

  9. 点击为 YOUR_ORGANIZATION_NAME 授予管理员同意书。

    当授予管理员同意书确认对话框出现时,点击是。

创建客户端密钥

  1. 前往证书和密钥 > 新客户端密钥。

  2. 提供客户端密钥的说明,并设置其失效期限。

  3. 点击 Add(添加)。

  4. 保存客户端密钥的值(而非密钥 ID),以便在配置集成时将其用作 Client Secret 参数值。客户端密钥值仅显示一次。

使用 Azure 订阅 ID 配置集成

  1. 在 Microsoft Defender for Cloud 中,前往概览标签页。

  2. 点击 Azure 订阅。

  3. 复制 Azure 订阅 ID 值,并在配置集成时将其输入到 Subscription ID 参数中。

在 Google SecOps 中配置 OAuth 身份验证

如需在 Google SecOps 平台中为 Microsoft Defender for Cloud 配置 OAuth 身份验证,请完成以下步骤:

  1. 配置集成参数并保存。

  2. 生成刷新令牌:

    • 可选:在 Google SecOps 中模拟案例。

    • 手动运行获取 OAuth 授权代码操作。

    • 手动运行生成令牌操作。

  3. 输入获取的刷新令牌作为 Refresh Token 参数值,然后保存配置。

配置集成参数

在 Google SecOps 中,使用您在前面步骤中获取的客户端 ID、客户端密钥、租户 ID 和订阅 ID 值配置集成参数。

生成刷新令牌

如需生成刷新令牌,您需要对任何现有支持请求执行手动操作。 如果您的 Google SecOps 实例是新实例,并且没有现有案例,请模拟一个案例。

模拟支持请求

如需在 Google SecOps 中模拟案例,请按以下步骤操作:

  1. 在左侧导航栏中,选择支持请求。

  2. 在“支持请求”页面上,依次点击 添加 > 模拟支持请求。

  3. 选择任意默认用例,然后点击创建。您选择模拟哪种情况并不重要。

  4. 点击模拟。

    如果您有默认环境以外的环境,并且想要使用该环境,请选择正确的环境,然后点击模拟。

  5. 在支持请求标签页中,点击刷新。您模拟的支持请求会显示在支持请求列表中。

运行“获取 OAuth 授权代码”操作

使用您模拟的 Google SecOps 案例或任何现有案例,手动运行获取 OAuth 授权代码操作。

  1. 在案例标签页中,选择您的模拟案例以打开案例视图。

  2. 点击手动操作。

  3. 在“手动操作”搜索字段中,输入 Azure Security Center。

  4. 在 Azure 安全中心集成下的结果中,选择获取 OAuth 授权代码。此操作会返回一个授权链接,用于以交互方式登录 Microsoft Entra 应用。

  5. 在 Redirect URL 参数字段中,输入您在创建 Microsoft Entra 应用时使用的网址。

  6. 点击执行。

  7. 执行操作后,前往模拟案例的案例墙。在 Azure Security Center_Get OAuth Authorization Code 操作记录中,点击查看更多并复制授权链接。

  8. 在无痕模式下打开新的浏览器窗口,然后粘贴生成的授权网址。系统会打开 Azure 登录页面。

  9. 使用您为集成选择的用户凭证登录。登录后,您的浏览器应重定向,并在地址栏中显示一个代码。

    以下是生成的包含代码的网址示例:

    http://localhost/?code=0.ATwAylKP1BpbCEeO0Ou5iiakalBV.......nIAA&state=12345&session_state=28084547-3dea-449a-8b4c-c1671342a39d#
    
  10. 从网址中复制 http://localhost/?code= 后面的访问代码部分。您需要此访问代码才能运行获取 OAuth 刷新令牌操作。

运行“获取 OAuth 刷新令牌”操作

使用您模拟的 Google SecOps 案例手动运行获取 OAuth 刷新令牌 操作。

  1. 在案例标签页中,选择您的模拟案例以打开案例视图。

  2. 点击手动操作。

  3. 在“手动操作”搜索字段中,输入 Azure Security Center。

  4. 在 Azure 安全中心集成下的结果中,选择获取 OAuth 刷新令牌。

  5. 在 Authorization Code 参数字段中,输入您在运行获取 OAuth 授权代码操作后获得的访问代码。

  6. 点击执行。

  7. 执行操作后,前往模拟案例的案例墙。在 Azure Security Center_Get OAuth 刷新令牌 操作记录中,点击查看更多。

  8. 复制生成的刷新令牌的完整值。

配置“刷新令牌”参数
  1. 前往 Azure 安全中心集成的配置对话框。

  2. 将上一步中的刷新令牌值输入到刷新令牌字段中。

  3. 点击保存。

将 Microsoft Defender for Cloud 与 Google SecOps 集成

有关如何在 Google SecOps 中配置集成的详细说明,请参阅配置集成。

集成输入

使用以下参数配置集成:

参数显示名称 类型 默认值 为必填项 说明
客户端 ID 字符串 不适用 是 Microsoft Entra 应用的客户端 ID。
客户端密钥 密码 不适用 是 Microsoft Entra 应用的客户端密钥。
用户名 字符串 不适用 否 Microsoft Entra 账号的用户名。
密码 密码 不适用 否 Microsoft Entra 账号的密码。
订阅 ID 字符串 不适用 是

您要查询其信息的订阅的 ID。

注意:如果在集成级别和操作级别都提供了订阅 ID,则优先采用操作配置。

租户 ID 字符串 不适用 是 Microsoft Entra 应用的租户 ID。
刷新令牌 密码 不适用 是 OAuth 授权的刷新令牌。
验证 SSL 复选框 尚未核查 是 如果启用,则会验证与 Microsoft Defender for Cloud 服务器的连接所使用的 SSL 证书是否有效。

操作

获取 OAuth 授权代码

生成 OAuth 授权代码以获取刷新令牌。

参数

参数显示名称 类型 默认值 为必填项 说明
重定向网址 字符串 https://localhost 是 指定创建 Microsoft Entra 应用时使用的重定向网址。

运行时间

此操作不会对实体执行。

操作结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
案例墙
结果类型 值/说明 类型(实体 \ 常规)
输出消息* 该操作不应失败,也不应停止 playbook 执行:“已在 Azure 安全中心成功生成授权代码网址。请将其复制并粘贴到浏览器中。然后,从网址中复制“code”部分。此授权代码用于“获取 OAuth 刷新令牌”操作。”。 常规
链接

名称:授权代码链接
网址:{生成的链接}

获取 OAuth 刷新令牌

生成集成配置所需的刷新令牌。 可以使用获取 OAuth 授权代码操作生成授权代码。

参数

参数显示名称 类型 默认值 为必填项 说明
重定向网址 字符串 https://localhost 是 指定创建应用时使用的重定向网址。
授权代码 字符串 是 指定“获取 OAuth 授权代码”操作中的授权代码

运行时间

此操作不会对实体执行。

操作结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
{
    "token_type": "Bearer",
    "scope": "user_impersonation",
    "expires_in": "3599",
    "ext_expires_in": "3599",
    "expires_on": "1628514482",
    "not_before": "1628510582",
    "resource": "https://management.azure.com",
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Im5PbzNaRH",
    "refresh_token": "0.ATwAylKP1BpbCEeO0Ou5iiakalBVs4hy5YpMhS4OVguFb9Y8AGw",
    "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiI4OGIzNTU1MC1"
}
案例墙
结果类型 值/说明 类型(实体 \ 常规)
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果报告了 200 状态代码 (is_success = true):“已在 Azure 安全中心成功生成刷新令牌。”

操作应失败并停止 playbook 执行:

如果发生严重错误,例如凭据错误、无法连接到服务器等:“执行‘获取 OAuth 刷新令牌’操作时出错。Reason: {0}''.format(error.Stacktrace)

如果状态代码不是 200:“执行‘获取 OAuth 刷新令牌’操作时出错。Reason: {0}''.format(error_description)

常规

列出监管标准

列出 Microsoft Defender for Cloud 中可用的监管标准。

参数

参数显示名称 类型 默认值 为必填项 说明
订阅 ID 字符串 不适用 否

指定要查询其信息的订阅的 ID。

注意:如果在集成级别和操作级别都提供了订阅 ID,则优先采用操作配置。

州/省级行政区过滤条件 CSV 失败 否

指定逗号分隔列表中的状态。示例:失败、跳过。系统只会返回具有匹配状态的标准。例如,如果您指定“Failed”,则操作将仅返回失败的标准。

可能的值:Passed、Failed、Unsupported、Skipped

返回的标准数上限 字符串 50 否 指定要返回的标准数量。

运行时间

此操作不会对实体执行。

操作结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
{
    "value": [
        {
            "id": "/subscriptions/a052d33b-b7c4-4dc7-9e17-5c89ea594669/providers/Microsoft.Security/regulatoryComplianceStandards/Azure-CIS-1.1.0",
            "name": "Azure-CIS-1.1.0",
            "type": "Microsoft.Security/regulatoryComplianceStandards",
            "properties": {
                "state": "Failed",
                "passedControls": 21,
                "failedControls": 3,
                "skippedControls": 0,
                "unsupportedControls": 87
            }
        }
    ]
}
案例墙
结果类型 值/说明 类型(实体 \ 常规)
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果状态代码为 200,并且过滤后有数据:“已成功检索 Microsoft Azure 安全中心内所提供标准的监管控制措施”

如果状态代码为 200,且过滤后没有数据:“在 Microsoft Azure 安全中心内未找到任何监管标准”

操作应失败并停止 playbook 执行:

如果报告了严重错误、SDK 错误(例如凭据错误、无法连接到服务器等),则会显示以下错误消息:“Error executing action "List Regulatory Standards". Reason: {0}''.format(error.Stacktrace)

如果 State Filter 包含无效值:“执行操作‘列出监管标准’时出错。原因:“状态过滤条件”参数只能包含以下值:“Passed”“Failed”“Skipped”“Unsupported”。

常规
案例墙表格

名称:监管标准

列:

  • 姓名
  • 州/省/自治区/直辖市
  • 通过的控制措施
  • 失败的控制措施
  • 跳过的控件
  • 不支持的控件
常规

列出监管标准控制

列出 Microsoft Defender for Cloud 中与标准相关的可用控制措施。

参数

参数显示名称 类型 默认值 为必填项 说明
订阅 ID 字符串 不适用 否

指定要查询其信息的订阅的 ID。

注意:如果在集成级别和操作级别都提供了订阅 ID,则优先采用操作配置。

标准名称 CSV 是 指定要检索其详细信息的标准名称的逗号分隔列表。示例:Azure-CIS-1.1.0
州/省级行政区过滤条件 CSV 失败 否

指定逗号分隔列表中的状态。示例:失败、跳过。系统只会返回具有匹配状态的控件。例如,如果您指定“Failed”,则操作将仅返回失败的控件。

可能的值:Passed、Failed、Unsupported、Skipped

要返回的控件数上限 字符串 50 否 指定每个标准要返回的控件数量。

运行时间

此操作不会对实体执行。

操作结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
JSON 结果
{
    "results": [
      "Name": "{Standard_name}",
      "Controls":
[
        {
            "id": "/subscriptions/a052d33b-b7c4-4dc7-9e17-5c89ea594669/providers/Microsoft.Security/regulatoryComplianceStandards/Azure-CIS-1.1.0",
            "name": "Azure-CIS-1.1.0",
            "type": "Microsoft.Security/regulatoryComplianceStandards",
            "properties": {
                "state": "Failed",
                "passedControls": 21,
                "failedControls": 3,
                "skippedControls": 0,
                "unsupportedControls": 87
            }
        }
    ]
}
案例墙
结果类型 值/说明 类型(实体 \ 常规)
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果状态代码为 200,并且过滤后我们至少有一个标准的数据(is_success = true):“Successfully retrieved regulatory controls for the following standards in Microsoft Azure Security Center:\n {0}”。format(standard)

If fail for standard(is_success = true) : "Action wasn't able to retrieve regulatory controls for the following standards in Microsoft Azure Security Center:\n {0}".format(standard)

If no data is found for some standards after filter (is_success=true): "No regulatory controls were found for the following standards in Microsoft Azure Security Center:\n {0}".format(standard)

如果根据过滤条件未找到任何标准的数据:“未找到所提供标准的监管控制措施。”

操作应失败并停止 playbook 执行:

如果报告了严重错误、SDK 错误(例如凭据错误、无法连接到服务器等),则会显示以下错误消息:“Error executing action "List Regulatory Standard Controls". Reason: {0}''.format(error.Stacktrace)

如果状态过滤条件包含无效值:“执行操作‘列出监管标准控制措施’时出错。原因:“状态过滤条件”参数只能包含以下值:“Passed”“Failed”“Skipped”“Unsupported”。

常规
案例墙表格

表名称:“Regulatory Controls: {0}”.format(Standard)

列:

  • 姓名
  • 州/省/自治区/直辖市
  • 说明
  • 已通过的评估
  • 失败的评估
  • 跳过的评估
常规

Ping

使用 Google SecOps Content Hub 页面中的集成配置页面上提供的参数,测试与 Microsoft Defender for Cloud 的连接。

运行时间

此操作不会对实体执行。

操作结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果成功:“已使用提供的连接参数成功连接到 Azure 安全中心服务器!”

操作应失败并停止 playbook 执行:

如果未成功:“Failed to connect to the Azure Security Center server! 错误为 {0}”。format(exception.stacktrace)

常规

更新提醒状态

更新 Microsoft Defender for Cloud 中提醒的状态。

参数

参数显示名称 类型 默认值 为必填项 说明
订阅 ID 字符串 不适用 否

指定要查询其信息的订阅的 ID。

注意:如果在集成级别和操作级别都提供了订阅 ID,则优先采用操作配置。

提醒 ID 字符串 不适用 是 指定要更新状态的提醒的 ID。
位置 字符串 不适用 是 指定提醒的位置。示例:centralus。
状态 DDL

解决

可能的值:

  • 关闭
  • 重新激活
  • 解决
是 指定提醒的状态。

运行时间

此操作不会对实体执行。

操作结果

脚本结果
脚本结果名称 值选项
is_success is_success=False
is_success is_success=True
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行:

如果状态代码为 204 (is_success = true):"Successfully {0} alert with ID {1} in Microsoft Azure Security Center:\n {0}".format(dismissed/resolved/reactivated, alert_id)

如果响应中出现“errors”(is_success = false):“Action wasn't able to {0} alert with ID {1} in Microsoft Azure Security Center. Reason: {2}".format(dismiss/resolve/reactivate, alert_id, errors/message)

操作应失败并停止 playbook 执行:

如果报告了严重错误、SDK 错误(例如凭据错误、无法连接到服务器等):“执行‘更新提醒状态’操作时出错。Reason: {0}''.format(error.Stacktrace)

常规

连接器

如需详细了解如何在 Google SecOps 中配置连接器,请参阅配置连接器。

Azure 安全中心 - 安全提醒连接器

从 Microsoft Defender for Cloud 中拉取安全提醒。

连接器参数

使用以下参数配置连接器:

参数显示名称 类型 默认值 为必填项 说明
产品字段名称 字符串 产品名称 是 输入源字段名称,以便检索产品字段名称。
事件字段名称 字符串 resourceType 是 输入源字段名称,以检索事件字段名称。
环境字段名称 字符串 "" 否

描述存储环境名称的字段的名称。

如果未找到环境字段,则环境为默认环境。

环境正则表达式模式 字符串 .* 否

要对“环境字段名称”字段中的值运行的正则表达式模式。

默认值为 .*,用于捕获所有值并返回未更改的值。

用于允许用户通过正则表达式逻辑操作环境字段。

如果正则表达式模式为 null 或空,或者环境值为 null,则最终环境结果为默认环境。

脚本超时(秒) 整数 180 是 运行当前脚本的 Python 进程的超时限制。
客户端 ID 字符串 不适用 正确 Microsoft Entra 应用的客户端 ID。
客户端密钥 密码 不适用 正确 Microsoft Entra 应用的客户端密钥。
用户名 字符串 不适用 正确 Microsoft Entra 账号的用户名。
密码 密码 不适用 正确 Microsoft Entra 账号的密码。
订阅 ID 字符串 不适用 正确 Microsoft Entra 应用的订阅 ID
租户 ID 字符串 不适用 正确 Microsoft Entra 应用的租户 ID。
要提取的最低严重级别 字符串 低

用于提取提醒的最低严重级别。

可能的值:低、中、高

要提取的提醒数量上限 整数 50 否 每次连接器迭代要处理的提醒数量。
回溯的小时数上限 整数 1 否 获取过去多少小时内的提醒。
将白名单用作黑名单 复选框 尚未核查 是 如果启用,动态列表将用作屏蔽名单。
验证 SSL 复选框 尚未核查 是 如果已启用,请验证与 Microsoft Defender for Cloud 服务器的连接所使用的 SSL 证书是否有效。
代理服务器地址 字符串 不适用 否 要使用的代理服务器的地址。
代理用户名 字符串 不适用 否 用于进行身份验证的代理用户名。
代理密码 密码 不适用 否 用于进行身份验证的代理密码。
刷新令牌 密码 不适用 否 OAuth 授权的刷新令牌。

连接器规则

代理支持

此连接器支持代理。

作业

如需在 Google SecOps 中配置作业,请前往响应 > 作业调度器。

刷新令牌续订作业

刷新令牌续订作业的目标是定期更新集成中使用的刷新令牌。

默认情况下,刷新令牌每 90 天过期一次,因此集成在过期后无法使用。建议每 7 天或 14 天运行一次此作业,以确保刷新令牌是最新的。

作业输入

如需配置作业,请使用以下参数:

参数
集成环境 可选

作业为其更新刷新令牌的集成环境。

此参数接受多个值,以逗号分隔的字符串形式表示。请用英文引号 (" ") 将各个值括起来。

连接器名称 可选

作业为其更新刷新令牌的连接器名称。

此参数接受多个值,以逗号分隔的字符串形式表示。请用英文引号 (" ") 将各个值括起来。

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。