Microsoft Defender for Cloud
本文档介绍了如何将 Microsoft Defender for Cloud 与 Google Security Operations 集成。
使用场景
将安全提醒注入 Google SecOps 以进行调查。
更新提醒。
检索标准合规性相关信息。
前提条件
在 Google SecOps 平台中配置集成之前,请务必向 Azure 用户账号授予所需权限,并配置密码身份验证或 OAuth 身份验证。
配置权限
此集成需要对 Azure 资源的委托访问权限。请务必向用于配置集成的 Azure 用户账号授予以下所需权限:
用户账号必须是以下 Azure 角色的有效成员:
Security ReaderSecurity Admin
在 Azure 订阅级别,请务必向用户授予以下 IAM 角色:
Management Group Reader。
配置密码身份验证
如需为 Microsoft Defender for Cloud 配置密码身份验证,请完成以下步骤:
创建 Microsoft Entra 应用。
为您的应用配置 API 权限。
创建客户端密钥。
使用您的 Azure 订阅 ID 作为相应集成参数的值。
创建 Microsoft Entra 应用
以用户管理员或密码管理员身份登录 Azure 门户。
选择 Microsoft Entra ID。
依次前往应用注册 > 新注册。
输入应用名称。
点击注册。
保存应用(客户端)ID 和目录(租户)ID 值,以便稍后在配置集成参数时使用。
配置 API 权限
依次前往 API 权限 > 添加权限。
依次选择 Azure Service Management>委托权限。
在选择权限部分,选择以下权限:
user_impersonation
依次选择 Microsoft Graph > 委托权限。
在选择权限部分,选择以下权限:
SecurityEvents.Read.AllSecurityEvents.ReadWrite.AllUser.Read
依次选择 Microsoft Graph > 应用权限。
在选择权限部分,选择以下权限:
SecurityEvents.Read.AllSecurityEvents.ReadWrite.All
点击添加权限。
点击为
YOUR_ORGANIZATION_NAME授予管理员同意书。当授予管理员同意书确认对话框出现时,点击是。
创建客户端密钥
前往证书和密钥 > 新客户端密钥。
提供客户端密钥的说明,并设置其失效期限。
点击 Add(添加)。
保存客户端密钥的值(而非密钥 ID),以便在配置集成时将其用作
Client Secret参数值。客户端密钥值仅显示一次。
使用 Azure 订阅 ID 配置集成
在 Microsoft Defender for Cloud 中,前往概览标签页。
点击 Azure 订阅。
复制 Azure 订阅 ID 值,并在配置集成参数时将其输入到
Subscription ID参数中。
配置 OAuth 身份验证
如需为 Microsoft Defender for Cloud 配置 OAuth 身份验证,请完成以下步骤:
创建 Microsoft Entra 应用。
为您的应用配置 API 权限。
创建客户端密钥。
使用您的 Azure 订阅 ID 作为相应集成参数的值。
创建 Microsoft Entra 应用
如需创建应用并模拟所选用户,请按照以下步骤操作:
以用户管理员或密码管理员身份登录 Azure 门户。
选择 Microsoft Entra ID。
依次前往应用注册 > 新注册。
输入应用名称。
选择合适的支持的账号类型。
对于重定向网址,请提供以下值:
http://localhost。点击注册。
保存应用(客户端)ID 和目录(租户)ID 值,以便稍后使用它们来配置集成。
配置 API 权限
依次前往 API 权限 > 添加权限。
依次选择 Azure Service Management>委托权限。
在选择权限部分,选择以下权限:
user_impersonation
依次选择 Microsoft Graph > 委托权限。
在选择权限部分,选择以下权限:
SecurityEvents.Read.AllSecurityEvents.ReadWrite.AllUser.Read
依次选择 Microsoft Graph > 应用权限。
在选择权限部分,选择以下权限:
SecurityEvents.Read.AllSecurityEvents.ReadWrite.All
点击添加权限。
点击为
YOUR_ORGANIZATION_NAME授予管理员同意书。当授予管理员同意书确认对话框出现时,点击是。
创建客户端密钥
前往证书和密钥 > 新客户端密钥。
提供客户端密钥的说明,并设置其失效期限。
点击 Add(添加)。
保存客户端密钥的值(而非密钥 ID),以便在配置集成时将其用作
Client Secret参数值。客户端密钥值仅显示一次。
使用 Azure 订阅 ID 配置集成
在 Microsoft Defender for Cloud 中,前往概览标签页。
点击 Azure 订阅。
复制 Azure 订阅 ID 值,并在配置集成时将其输入到
Subscription ID参数中。
在 Google SecOps 中配置 OAuth 身份验证
如需在 Google SecOps 平台中为 Microsoft Defender for Cloud 配置 OAuth 身份验证,请完成以下步骤:
配置集成参数并保存。
生成刷新令牌:
可选:在 Google SecOps 中模拟案例。
手动运行获取 OAuth 授权代码操作。
手动运行生成令牌操作。
输入获取的刷新令牌作为
Refresh Token参数值,然后保存配置。
配置集成参数
在 Google SecOps 中,使用您在前面步骤中获取的客户端 ID、客户端密钥、租户 ID 和订阅 ID 值配置集成参数。
生成刷新令牌
如需生成刷新令牌,您需要对任何现有支持请求执行手动操作。 如果您的 Google SecOps 实例是新实例,并且没有现有案例,请模拟一个案例。
模拟支持请求
如需在 Google SecOps 中模拟案例,请按以下步骤操作:
在左侧导航栏中,选择支持请求。
在“支持请求”页面上,依次点击 添加 > 模拟支持请求。
选择任意默认用例,然后点击创建。您选择模拟哪种情况并不重要。
点击模拟。
如果您有默认环境以外的环境,并且想要使用该环境,请选择正确的环境,然后点击模拟。
在支持请求标签页中,点击刷新。您模拟的支持请求会显示在支持请求列表中。
运行“获取 OAuth 授权代码”操作
使用您模拟的 Google SecOps 案例或任何现有案例,手动运行获取 OAuth 授权代码操作。
在案例标签页中,选择您的模拟案例以打开案例视图。
点击手动操作。
在“手动操作”搜索字段中,输入
Azure Security Center。在 Azure 安全中心集成下的结果中,选择获取 OAuth 授权代码。此操作会返回一个授权链接,用于以交互方式登录 Microsoft Entra 应用。
在
Redirect URL参数字段中,输入您在创建 Microsoft Entra 应用时使用的网址。点击执行。
执行操作后,前往模拟案例的案例墙。在 Azure Security Center_Get OAuth Authorization Code 操作记录中,点击查看更多并复制授权链接。
在无痕模式下打开新的浏览器窗口,然后粘贴生成的授权网址。系统会打开 Azure 登录页面。
使用您为集成选择的用户凭证登录。登录后,您的浏览器应重定向,并在地址栏中显示一个代码。
以下是生成的包含代码的网址示例:
http://localhost/?code=0.ATwAylKP1BpbCEeO0Ou5iiakalBV.......nIAA&state=12345&session_state=28084547-3dea-449a-8b4c-c1671342a39d#从网址中复制
http://localhost/?code=后面的访问代码部分。您需要此访问代码才能运行获取 OAuth 刷新令牌操作。
运行“获取 OAuth 刷新令牌”操作
使用您模拟的 Google SecOps 案例手动运行获取 OAuth 刷新令牌 操作。
在案例标签页中,选择您的模拟案例以打开案例视图。
点击手动操作。
在“手动操作”搜索字段中,输入
Azure Security Center。在 Azure 安全中心集成下的结果中,选择获取 OAuth 刷新令牌。
在
Authorization Code参数字段中,输入您在运行获取 OAuth 授权代码操作后获得的访问代码。点击执行。
执行操作后,前往模拟案例的案例墙。在 Azure Security Center_Get OAuth 刷新令牌 操作记录中,点击查看更多。
复制生成的刷新令牌的完整值。
配置“刷新令牌”参数
前往 Azure 安全中心集成的配置对话框。
将上一步中的刷新令牌值输入到刷新令牌字段中。
点击保存。
将 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 专业人士的解答。