你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Defender for Storage 支持处理恶意文件的不同方法。 选择适合你的方案的修正选项:
- 内置修正功能
- 用于移动或删除恶意文件的自动化工作流
- 自动化工作流,用于将干净文件移动或引入到其他目的地。
通过恶意软件扫描,您可以使用这些扫描结果选项建立自动修正:
- Defender for Cloud 安全警报
- 事件网格事件
- Blob 索引标记
提示
尝试动手实验,探索“Defender for Storage”中的恶意软件扫描。 Ninja 培训模块提供详细的步骤说明:
- 设置恶意软件扫描
- 测试功能全流程
- 设置修正响应
此实验室是 Microsoft Defender for Cloud 培训系列的一部分,提供具有安全功能的实践经验。
恶意软件检测的修正选项
针对恶意 Blob 的内置自动恶意软件修正
Defender for Storage Malware Protection 具有内置功能,可简化和自动执行恶意 Blob 的修正过程,从而降低恶意软件分发的风险。 当 Defender for Storage 在上传或按需恶意软件扫描期间检测到恶意 Blob 时,它会自动启动软删除,以安全地隔离 Blob 并使其可恢复以供进一步分析。
如果尚未在存储帐户上启用“启用 Blob 的软删除”,那么在你启用“软删除恶意 Blob”功能时,Defender for Storage 会尝试启用它。 此功能可减少设置步骤并立即提高安全响应能力。
用例
通过以下方式自动修正恶意软件分发:
- 软删除 blob 以防止访问
- 保留 blob 以供调查和恢复
- 无需外部自动化或手动步骤
让安全管理员或 SOC 分析师以最少的手动工作量保持存储干净
让组织在不复杂的工作流的情况下快速修复威胁
功能说明
软删除恶意 blob 仅适用于恶意 blob。 默认情况下,它处于关闭状态。
可以在订阅或存储帐户级别启用针对恶意 Blob 的软删除功能。
软删除 blob 时,它会保留在同一 Blob 容器中。 可以在保留期内还原 blob。 有关详细信息,请参阅 blob 软删除。
如果在存储帐户上为 Blob 启用版本控制功能,请参阅管理和还原 Blob 的软删除功能,了解如何还原软删除的 Blob。
若要使“软删除恶意 Blob”在启用了版本控制的情况下使用存储帐户,还需要启用 Blob 索引标记来存储扫描结果,这是通过确保检查参数“将扫描结果存储为 Blob 索引标记”来完成的。
如果启用软删除恶意 Blob 功能,则保留期默认为 7 天,但可以更改它(范围:1-365 天)。 可以在存储帐户设置中更改默认保留期。
如果在打开存储帐户后关闭了存储帐户上的软删除属性设置,则不会删除恶意 Blob。 在这种情况下,Defender for Storage 不会重新打开软删除,并且会创建警报。
由于配置错误或缺少权限,删除可能会失败。 警报显示失败的原因。
在保持期内存储软删除的 Blob 的成本与活动数据相同。 有关详细信息,请参阅 blob 软删除。
如果恢复 blob 时,Azure 会将其计为写入事务。 有关详细信息,请参阅 将每个 REST 操作映射到价格。
为恶意 blob 设置自定义修正
使用以下选项自动执行修正:
使用 ABAC 阻止访问未扫描的文件或恶意文件(基于属性的访问控制)
使用Microsoft基于 Entra 属性的访问控制(ABAC)授权,可以阻止对恶意和未扫描的文件的访问。 可以根据扫描结果设置对 Blob 的条件访问,并允许应用程序和用户仅访问已清理的已扫描文件。
要进行设置,请按照以下视频中的说明操作。
删除或移动恶意 blob
使用代码或工作流自动化删除恶意文件或将恶意文件移动到隔离区。
为删除或移动操作做好环境准备
删除恶意文件 - 在设置自动删除之前,在存储帐户上启用 软删除 。 如果存在误报或安全专业人员想要调查恶意文件,则它允许你“取消删除”文件。
将恶意文件移动到隔离区 - 将文件移动到被视为“隔离”的专用存储容器或存储帐户。 你可能只希望某些用户(例如安全管理员或 SOC 分析师)有权访问此专用容器或存储帐户。
- 最佳做法 是使用 Microsoft Entra ID 来控制对 blob 存储的访问 。 若要控制对专用隔离存储容器的访问,可以利用使用 Microsoft Entra 基于角色的访问控制 (RBAC) 的容器级角色分配。 具有存储帐户级权限的用户可能仍可以访问“隔离”容器。 可以将权限编辑为容器级,也可以选择其他方法,并将恶意文件移动到专用存储帐户。
- 如果必须使用其他方法(如受保护存储帐户上的 SAS(共享访问签名) 令牌,请将恶意文件移到另一个存储帐户(隔离)。 然后,向 Microsoft Entra 授予访问隔离存储帐户的权限。
设置自动化
选项 1:基于 Microsoft Defender for Cloud 安全警报的逻辑应用
基于逻辑应用的响应是一种用于设置响应的方法,该方法简单且无需代码。 但响应时间比基于代码的事件驱动型方法要慢。
使用 Azure 门户部署 DeleteBlobLogicApp Azure 资源管理器 (ARM) 模板。
选择已部署的逻辑应用。
要允许逻辑应用从存储帐户中删除 Blob,请添加角色分配:
选项 2:基于事件网格事件的函数应用
函数应用以低延迟响应时间提供高性能。
在受保护存储帐户所在的同一资源组中创建函数应用。
为函数应用标识添加角色分配。
转到边栏菜单中的“标识”,确保“系统分配”标识状态为“启用”,然后选择“Azure 角色分配”。
使用“存储 Blob 数据参与者”角色在订阅或存储帐户级别添加角色分配。
使用事件网格事件并连接 Azure 函数作为终结点类型。
编写 Azure 函数代码时,可以使用我们预制的函数示例 MoveMaliciousBlobEventTrigger,也可以编写自己的代码,将 blob 复制到其他位置,然后将其从源中删除。
针对每个扫描结果,会根据以下架构发送一个事件。
事件消息结构
事件消息是 JSON 对象,其中包含提供恶意软件扫描结果详细信息的键值对。 下面细分了事件消息中的每个键:
id:事件的唯一标识符。
subject:一个字符串,用于描述存储帐户中已扫描的 blob(文件)的资源路径。
data:包含事件详细信息的 JSON 对象:
correlationId:可用于关联与同一扫描相关的多个事件的唯一标识符。
blobUri:存储帐户中已扫描的 blob(文件)的 URI。
eTag:已扫描的 blob(文件)的 ETag。
scanFinishedTimeUtc:扫描完成后的 UTC 时间戳。
scanResultType:扫描的结果,例如 “恶意 ”或 “未发现威胁”。
scanResultDetails:包含扫描结果详细信息的 JSON 对象:
malwareNamesFound:在已扫描的文件中发现的一组恶意软件名称。
sha256:已扫描的文件的 SHA-256 哈希。
eventType:指示事件类型的字符串,在本例中为“Microsoft.Security.MalwareScanningResult”。
dataVersion:数据架构的版本号。
metadataVersion:元数据架构的版本号。
eventTime:生成事件时的 UTC 时间戳。
topic:事件所属的事件网格主题的资源路径。
下面是一个事件消息示例:
{
"id": "aaaa0000-bb11-2222-33cc-444444dddddd",
"subject": "storageAccounts/<storage_account_name>/containers/app-logs-storage/blobs/EICAR - simulating malware.txt",
"data": {
"correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd",
"blobUri": "https://<storage_account_name>.blob.core.windows.net/app-logs-storage/EICAR - simulating malware.txt",
"eTag": "0x000000000000000",
"scanFinishedTimeUtc": "2023-05-04T11:31:54.0481279Z",
"scanResultType": "Malicious",
"scanResultDetails": {
"malwareNamesFound": [
"DOS/EICAR_Test_File"
],
"sha256": "AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00"
}
},
"eventType": "Microsoft.Security.MalwareScanningResult",
"dataVersion": "1.0",
"metadataVersion": "1",
"eventTime": "2023-05-04T11:31:54.048375Z",
"topic": "/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.EventGrid/topics/<event_grid_topic_name>"
}
通过了解事件消息的结构,可以提取有关恶意软件扫描结果的相关信息并进行相应的处理。
使应用程序和数据流能够识别恶意软件扫描结果
恶意软件扫描几乎实时运行,上传文件和扫描文件之间通常有一个较短的时间范围。 由于存储不是计算的,因此恶意文件无法在存储中运行。 风险在于用户或应用程序使用恶意文件,并将其分散到整个组织。
可以让应用程序和数据流了解恶意软件扫描结果。 这些方法可确保在以下之前未使用或处理文件:
- 扫描完成
- 扫描结果可用
- 您根据结果采取适当的行动。
应用程序根据扫描结果引入数据
选项 1:应用先检查“索引标记”再进行处理
更新使用存储帐户的所有应用程序。 每个应用程序都会检查每个文件的扫描结果,如果 blob 索引标记的扫描结果是“未发现威胁”,则应用程序将读取 blob。
选项 2:将应用程序连接到事件网格事件中的 Webhook
将您的应用程序连接到事件网格中的 Webhook,并利用这些事件来触发对扫描结果为未发现威胁的文件的相关处理过程。 详细了解如何使用 Webhook 事件传递和验证终结点。
使用中间存储帐户作为 DMZ
为不受信任的内容(DMZ)设置中间存储帐户,并将流量直接上传到 DMZ。 在不受信任的存储帐户上,启用“恶意软件扫描”并连接事件网格和函数应用,以仅将扫描结果为“未发现威胁”的 blob 移动到目标存储帐户。
后续步骤
了解如何在 Microsoft Defender for Storage 中 了解恶意软件扫描的结果 。