Azure 安全中心
集成版本:9.0
使用场景
将安全提醒注入 Google SecOps 以供调查。
更新提醒。
检索有关标准合规性的信息。
前提条件
在 Google SecOps 平台中配置集成之前,请务必向 Azure 用户账号授予所需权限,并配置密码身份验证或 OAuth 身份验证。
配置权限
此集成需要对 Azure 资源具有委托访问权限。请务必向用于配置集成的 Azure 用户账号授予以下必需的权限:
用户账号必须是以下 Azure 角色的有效成员:
Security Reader
Security 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 服务管理 > 委托权限。
在选择权限部分,选择以下权限:
user_impersonation
依次选择 Microsoft Graph > 委托权限。
在选择权限部分,选择以下权限:
SecurityEvents.Read.All
SecurityEvents.ReadWrite.All
User.Read
依次选择 Microsoft Graph > 应用权限。
在选择权限部分,选择以下权限:
SecurityEvents.Read.All
SecurityEvents.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 服务管理 > 委托权限。
在选择权限部分,选择以下权限:
user_impersonation
依次选择 Microsoft Graph > 委托权限。
在选择权限部分,选择以下权限:
SecurityEvents.Read.All
SecurityEvents.ReadWrite.All
User.Read
依次选择 Microsoft Graph > 应用权限。
在选择权限部分,选择以下权限:
SecurityEvents.Read.All
SecurityEvents.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 授权代码 操作。
手动运行 Generate Token 操作。
将获得的刷新令牌作为
Refresh Token
参数值输入,然后保存配置。
配置集成参数
在 Google SecOps 中,使用您在之前的步骤中获得的客户端 ID、客户端密钥、租户 ID 和订阅 ID 值配置集成参数。
生成刷新令牌
生成刷新令牌需要对任何现有支持请求执行手动操作。 如果您的 Google Security Operations 实例是新实例,并且没有现有支持请求,请模拟一个。
模拟支持请求
如需在 Google SecOps 中模拟支持请求,请按以下步骤操作:
在左侧导航栏中,选择支持请求。
在“支持请求”页面上,依次点击 添加 > 模拟支持请求。
选择任意默认情形,然后点击创建。您选择模拟哪种情况无关紧要。
点击模拟。
如果您有非默认环境,并且想要使用该环境,请选择正确的环境,然后点击模拟。
在支持请求标签页中,点击刷新。您模拟的支持请求会显示在支持请求列表中。
运行“获取 OAuth 授权代码”操作
使用您模拟的 Google SecOps 支持服务工单或任何现有工单,手动运行获取 OAuth 授权代码操作。
在支持请求标签页中,选择模拟的支持请求以打开支持请求视图。
点击手动操作。
在“手动操作”搜索字段中,输入
Azure Security Center
。在 Azure Security Center 集成下的结果中,选择 Get OAuth Authorization Code(获取 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=
后面的访问代码部分。您需要此授权码才能运行 Get OAuth Refresh Token 操作。
运行“获取 OAuth 刷新令牌”操作
使用您模拟的 Google SecOps 支持请求手动运行 Get OAuth Refresh Token 操作。
在支持请求标签页中,选择模拟的支持请求以打开支持请求视图。
点击手动操作。
在“手动操作”搜索字段中,输入
Azure Security Center
。在 Azure Security Center 集成下的结果中,选择 Get OAuth Refresh Token。
在
Authorization Code
参数字段中,输入您在运行 Get OAuth Authorization Code 操作后获得的访问代码。点击执行。
执行操作后,前往模拟支持请求的“支持请求墙”。在 Azure Security Center_Get OAuth Refresh Token 操作记录中,点击查看更多。
复制生成的刷新令牌的完整值。
配置刷新令牌参数
前往 Azure 安全中心集成的配置对话框。
将上一步中的刷新令牌值输入到 Refresh Token 字段中。
点击保存。
将 Azure 安全中心与 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 执行:“Successfully generated Authorization code 网址 in Azure Security Center. 请将其复制并粘贴到浏览器中。然后,复制网址中的“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 刷新令牌’时出错。原因:{0}''.format(error.Stacktrace) 如果状态代码不是 200:“执行操作‘获取 OAuth 刷新令牌’时出错。原因:{0}''.format(error_description) |
常规 |
列出监管标准
列出 Microsoft Defender for Cloud 中的可用法规标准。
参数
参数显示名称 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
订阅 ID | 字符串 | 不适用 | 否 | 指定要查询信息的订阅的 ID。 注意:如果在集成级和操作级都提供了订阅 ID,系统会优先考虑操作级配置。 |
状态过滤条件 | CSV | 失败 | 否 | 指定以英文逗号分隔的状态列表。示例:失败、跳过。系统只会返回具有匹配状态的标准。例如,如果您指定“失败”,则操作只会返回失败的标准。 可能的值: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". 原因:{0}''.format(error.Stacktrace) 如果状态过滤条件包含无效值:“执行操作‘列出监管标准’时出错。原因:“状态过滤条件”参数应仅包含以下值:“已通过”“已失败”“已跳过”“不受支持”。 |
常规 |
“案例墙”表格 | 名称:监管标准 列:
|
常规 |
列出监管标准控制
列出 Microsoft Defender for Cloud 中与标准相关的可用控制措施。
参数
参数显示名称 | 类型 | 默认值 | 是否为必需属性 | 说明 |
---|---|---|---|---|
订阅 ID | 字符串 | 不适用 | 否 | 指定要查询信息的订阅的 ID。 注意:如果在集成级和操作级都提供了订阅 ID,系统会优先考虑操作级配置。 |
标准名称 | CSV | 是 | 指定要检索详细信息的标准名称的英文逗号分隔列表。示例:Azure-CIS-1.1.0 | |
状态过滤条件 | CSV | 失败 | 否 | 指定以英文逗号分隔的状态列表。示例:失败、跳过。系统只会返回具有匹配状态的控件。例如,如果您指定“失败”,操作将仅返回失败的控制措施。 可能的值: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)的数据:“已成功检索 Microsoft Azure 安全中心内以下标准对应的监管控制措施:\n {0}”。format(standard) 如果标准(is_success = true)失败:“操作无法在 Microsoft Azure 安全中心内检索以下标准的监管控制措施:\n {0}”。format(standard) 如果过滤后未找到某些标准的数据 (is_success=true):“Microsoft Azure 安全中心内未找到以下标准对应的监管控制措施:\n {0}”。format(standard) 如果根据过滤条件未找到任何标准的数据:“未找到所提供标准的任何监管控制措施。” 操作应失败并停止 playbook 执行: 如果报告了致命错误、SDK 错误(例如凭据错误、无法连接到服务器、其他错误):“Error executing action "List Regulatory Standard Controls"”(执行“列出监管标准控制”操作时出错)。原因:{0}''.format(error.Stacktrace) 如果状态过滤条件包含无效值:“执行操作‘列出监管标准控制’时出错。原因:“状态过滤条件”参数应仅包含以下值:“已通过”“已失败”“已跳过”“不受支持”。 |
常规 |
“案例墙”表格 | 表格名称:“Regulatory Controls: {0}”.format(Standard) 列:
|
常规 |
Ping
使用 Google Security Operations Marketplace 标签页中的集成配置页面上提供的参数,测试与 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):“已成功在 Microsoft Azure 安全中心内{0} ID 为 {1} 的提醒:\n {0}”。format(dismissed/resolved/reactivated, alert_id) 如果响应中存在“errors”(is_success = false):“无法在 Microsoft Azure 安全中心中{0} ID 为 {1} 的提醒。原因:{2}".format(dismiss/resolve/reactivate, alert_id, errors/message) 操作应失败并停止 playbook 执行: 如果报告了严重错误、SDK 错误(例如凭据错误、无法连接到服务器)或其他错误:“Error executing action "Update Alert Status". 原因:{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 Security Operations 中配置作业,请前往响应 > 作业调度器。
刷新令牌续订作业
刷新令牌续订作业的目标是定期更新集成中使用的刷新令牌。
默认情况下,刷新令牌每 90 天过期一次,因此集成在过期后将无法使用。建议每 7 天或 14 天运行一次此作业,以确保刷新令牌是最新的。
作业输入
如需配置作业,请使用以下参数:
参数 | |
---|---|
集成环境 | 可选
作业为其更新刷新令牌的集成环境。 此参数接受多个值,这些值以英文逗号分隔的字符串形式表示。请用引号 ( |
连接器名称 | 可选
作业更新刷新令牌所针对的连接器名称。 此参数接受多个值,这些值以英文逗号分隔的字符串形式表示。请用引号 ( |
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。