使用 Amazon Inspector 导出软件材料清单

关键要点

在这篇文章中,我们将介绍如何使用 Amazon Inspector 导出软件材料清单SBOM。Amazon Inspector 是一个自动化的漏洞管理服务,可以持续扫描 AWS 工作负载中的软件漏洞和意外网络暴露。通过导出 SBOM,您可以了解您的软件供应链的安全状况,追踪与现有软件相关的安全威胁。本文将介绍导出 SBOM 的步骤,包括如何将其存储到 Amazon S3,以及如何利用 Amazon Athena 进行数据分析。

Amazon Inspector 现已支持导出受监控资源的合并 SBOM,包括 CycloneDx 和 SPDX 格式。跟随本文,您将学会将 Amazon Inspector 的 SBOM 导出到指定的 S3 桶中,并利用 AWS Glue 和 Athena 进行数据查询和可视化。

概述

软件材料清单SBOM是用于记录组成软件组件的成分清单,它有助于安全团队了解信息。在 AWS 管理控制台的 Amazon Inspector 资源覆盖页面,安全团队可以将合并的 SBOM 导出到 Amazon 简单存储服务S3 中。

使用 CycloneDx 和 SPDX 标准格式,SBOM 提供了有用的见解,帮助您判断哪些软件包需要更新或淘汰。个人应用或安全工程师也可以通过过滤特定账户、资源类型等条件来导出单个或一组资源的 SBOM。

导出 SBOM

要将 Amazon Inspector SBOM 报告导出到 S3 桶中,您必须创建并配置一个存储桶,并确保该存储桶的权限设置为只允许 Amazon Inspector 将新对象放入桶中。这可以防止其他 AWS 服务或用户向存储桶中添加对象。

每个 SBOM 报告会存储在 S3 桶中,并以 Cyclonedx14 (Json) 或 Spdx23compatible (Json) 命名,具体取决于您选择的导出格式。此外,您还可以使用 S3 事件通知 及时告知运营团队有新 SBOM 报告已导出。

为了加密 SBOM 报告,Amazon Inspector 需要您使用 AWS 密钥管理服务KMS 密钥。此密钥必须是客户管理的对称 KMS 加密密钥,并且位于与存储 SBOM 报告的 S3 桶相同的区域。

部署前提

所提供的 AWS CloudFormation 模板将创建一个 S3 桶,并配置适当的存储桶策略,以允许 Amazon Inspector 将 SBOM 报告对象导出到该桶。该模板还会创建用于 SBOM 报告导出的新的 KMS 密钥,并授予 Amazon Inspector 服务使用该密钥的权限。

安易加速器苹果版

导出可以从 AWS Inspector 指定管理员账户 或 AWS Inspector 管理员账户本身发起,以便 S3 桶中包含 AWS Inspector 成员账户的报告。

部署 CloudFormation 模板的步骤

点击以下 启动堆栈 按钮以在您的账户中启动 CloudFormation 堆栈。

检查堆栈名称和模板参数MyKMSKeyName 和 MyS3BucketName。请注意 S3 桶名称必须唯一。点击 下一步 确认堆栈选项。进入下一页并选择 提交。CloudFormation 堆栈的部署需要 12 分钟。

部署完成后,您可以使用由堆栈创建的 S3 桶和 KMS 密钥导出 SBOM 报告。

导出 SBOM 报告

设置完成后,您可以将 SBOM 报告导出到 S3 桶。

从控制台导出 SBOM 报告的步骤

在创建 S3 桶和 KMS 密钥的相同区域,导航到 AWS Inspector 控制台。从导航窗格中选择 导出 SBOMs。添加过滤器 创建特定资源子集的报告。如果没有提供过滤器,则将导出所有活跃且受支持的资源的 SBOM。选择要导出的文件类型,选项包括 Cyclonedx14 (Json) 或 Spdx23compatible (Json)。输入 CloudFormation 模板输出部分中的 S3 桶 URI 和创建的 KMS 密钥。点击 导出。根据导出文档的数量,导出过程可能需要 35 分钟。

导出完成后,所有 SBOM 文档将存储在 S3 桶中,您可以从 S3 桶中下载这些文档,或利用 Amazon S3 Select 通过标准 SQL 查询检索对象中的数据。

查询与可视化

借助 Athena,您可以对存储在 S3 桶中的原始数据执行 SQL 查询。Amazon Inspector 报告会导出到 S3 桶中,您可以查询这些数据并使用 添加 AWS Glue 爬虫 来创建表。

要使 AWS Glue 爬虫能够抓取 S3 数据,您需要按照教程所述将角色添加到 AWS KMS 密钥权限,以便 AWS Glue 可以解密 S3 数据。

以下是您可以根据自己的情况更新的示例策略 JSON。请确保将 AWS 账户 ID lt111122223333gt 和 S3 桶名称 ltDOCEXAMPLEBUCKET111122223333gt 替换为您自己的信息。

json{ Sid Allow the AWS Glue crawler usage of the KMS key Effect Allow Principal { AWS arnawsiamlt111122223333gtrole/servicerole/AWSGlueServiceRoleS3InspectorSBOMReports } Action [ kmsDecrypt kmsGenerateDataKey ] Resource arnawss3ltDOCEXAMPLEBUCKET111122223333gt}

注意: 为 AWS Glue 创建的角色还需要对导出报告的 S3 桶具有读取权限,以便创建爬虫。AWS Glue 的 AWS 身份与访问管理IAM 角色允许爬虫运行和访问您的 Amazon S3 数据存储。

在构建了 AWS Glue 数据目录后,您可以定期运行爬虫,以确保其随最新的 Amazon Inspector SBOM 清单保持更新。

您可以使用爬虫导航到新增的表,并在 Athena 中查看数据。通过 Athena,您可以对 Amazon Inspector 报告执行查询,以生成与您的环境相关的输出数据。根据不同的报告资源如 Amazon Elastic Compute Cloud (Amazon EC2)、AWS Lambda、Amazon Elastic Container Registry (Amazon ECR),生成的 SBOM 报告的模式会有所不同。因此,您可以根据模式创建 SQL Athena 查询,从报告中提取信息。

以下是一个 Athena 示例查询,用于识别 SBOM 报告中资源的前 10 个漏洞。您可以使用报告中的通用漏洞和暴露CVEID 列出受 CVE 影响的各个组件。

sqlSELECT account vulnid as vulnid count() as vulncountFROM ltInserttablenamegt UNNEST(ltInserttablenamegtvulnerabilities) as t(vuln)GROUP BY account vulnidORDER BY vulncount DESCLIMIT 10

以下 Athena 示例查询可用于识别前 10 个操作系统OS,以及它们的资源类型和数量。

sqlSELECT resource metadatacomponentname as osname count() as oscount FROM ltInserttablenamegtWHERE resource = AWSLAMBDAFUNCTIONGROUP BY resource metadatacomponentname ORDER BY oscount DESC LIMIT 10

如果您有一个具有严重漏洞的软件包,并需要知道该软件包是主要软件包还是依赖项,您可以使用以下 Athena 示例查询检查您的应用中该软件包的使用情况。在这个例子中,我在搜索 Log4j 包。结果将返回账户 ID、资源类型、包名称和包数量。

sqlSELECT account resource compname as packagename count() as packagecount FROM ltInsertTablenamegt UNNEST(ltInsertTablenamegtcomponents) as t(comp) WHERE compname = Log4j GROUP BY account compname resource ORDER BY packagecount DESC LIMIT 10

注意: 示例 Athena 查询必须根据 SBOM 导出报告的模式进行定制。

为了进一步扩展这一解决方案,您可以使用 Amazon QuickSight 制作仪表板,通过连接到 AWS Glue 表来可视化数据。

使用 Amazon Inspector 导出软件材料清单 安全博客

结论

Amazon Inspector 新的 SBOM 生成能力提升了对软件供应链的可见性,提供多个层次依赖关系的软件包清单。您还可以利用 SBOM 监控每个软件包的许可证信息,识别潜在的许可证违规,帮助规避法律风险。

SBOM 导出的最大好处是确保您遵守行业法规和标准。通过提供行业标准格式SPDX 和 CycloneDX并简化与其他工具、系统或服务如 Nexus IQ 和 WhiteSource的集成,您可以优化事件响应流程,提高安全评估的准确性和速度,并遵守合规要求。

除此之外,SBOM 导出功能让您更好地理解资源中的操作系统包和软件库,进一步增强您遵守行业法规和标准的能力。

如果您对本帖子有反馈,请在下面的评论区留言。如果您对本文分享的信息有任何问题,请在 AWS IAM Identity Center rePost 上开启新线程,或 联系客服支持。

想获取更多 AWS 安全新闻?请关注我们的 Twitter。

Varun Sharma

Varun 是一名 AWS 云安全工程师,热衷于解决 Amazon Cognito 和 IAM 的复杂问题。他是这些服务的主题专家。当他不在忙于确保云环境的安全时,您常常可以在安全渗透测试的世界中找到他。当闲下来时,Varun喜欢通过镜头记录大自然的美丽。

标签:Amazon Inspector, 安全博客