亚马逊AWS官方博客

Amazon CodeGuru Reviewer 推出密钥检测器功能来识别硬编码的密钥并使用 AWS Secrets Manager 进行保护

Amazon CodeGuru 通过扫描和分析 Java 和 Python 应用程序来帮助提高代码质量并实现自动化的代码审查。CodeGuru Reviewer 可以检测代码中的潜在缺陷和错误。例如,它可就安全漏洞、资源泄漏、并发问题、错误输入验证以及偏离 AWS 最佳实践等问题提出改进建议。

最广为人知的一个安全实践是集中管理密码、API 密钥和一般凭证等密钥。与许多面临严格时间要求的其他开发人员一样,我经常会在管理和使用代码中的密钥方面走捷径,在本地开发过程中使用纯文本环境变量或将静态密钥进行硬编码,然后在无意中将它们提交。当然,我总是非常后悔,希望有一种自动化的方法来检测和保护我所有存储库中的这些密钥。

我很高兴地宣布 Amazon CodeGuru Reviewer 新推出密钥检测器功能,这是一种自动化的工具,可帮助开发人员检测源代码或配置文件中的密钥,例如密码、API 密钥、SSH 密钥和访问令牌。

这种新推出的检测器在代码审查过程中使用机器学习(ML)来识别硬编码的密钥,从而帮助您确保所有新代码在合并和部署之前未包含硬编码的密钥。除 Java 和 Python 代码之外,密钥检测器还可以扫描配置和文档文件。在补救措施方面,CodeGuru Reviewer 建议使用 AWS Secrets Manager 来保护密钥,这是一项托管式的服务,可让您安全并自动地存储、轮换、管理和检索凭证、API 密钥以及其他各种类型的密钥。

这项新功能包含在 CodeGuru Reviewer 服务中,无需额外付费,并支持常见的 API 提供商,例如 AWS、Atlassian、Datadog、Databricks、GitHub、Hubspot、Mailchimp、Salesforce、SendGrid、Shopify、Slack、Stripe、Tableau、Telegram 和 Twilio。完整列表详见此处

密钥检测器操作演示
首先,我从 AWS Secrets Manager 控制台中选择 CodeGuru。此新的工作流允许我关联一个新的存储库并运行完整的存储库分析,目的是识别硬编码的密钥。

关联新存储库只需要几秒钟即可完成。我连接我的 GitHub 账户,然后选择一个名为 hawkcd 的存储库,其中包含了一些 Java、C#、JavaScript 和配置文件。

几分钟后,我完整的存储库关联成功并完成了完整扫描。我还可以看一下一个名为 DemoFullRepositoryAnalysisSecrets 的演示存储库分析。进入您的 AWS 账户后,您可以在 CodeGuru 控制台的 Full repository analysis(完整存储库分析)下找到此演示。

我选中该存储库分析并找到了 42 条建议,其中包括一个针对硬编码密钥的建议(您可以用 Type=Secrets 条件来筛选推荐)。CodeGuru Reviewer 在 .travis.yml 文件中发现了硬编码的 AWS 访问密钥 ID。

该建议强调了安全存储这些密钥的重要性,提供了有关此问题的更多信息的链接,并建议轮换识别出的密钥,以确保将来不会被作恶者再次利用。

CodeGuru Reviewer 允许我跳转到该密钥所在的准确文件和代码行,从而更深入地了解上下文,验证文件历史记录并快速采取行动。

最后但并非最不重要的一点是,该建议包括一个 Protect your credential(保护您的凭证)按钮,让我可以快速跳转到 AWS Secrets Manager 控制台,并使用正确的名称和值创建一个新密钥。

我将删除源代码中的纯文本密钥,然后更新我的应用程序以从 AWS Secrets Manager 获取密钥值。在许多情况下,您可以保留当前的配置结构,并使用现有参数来存储密钥名称,但不存储密钥值。

安全存储好密钥后,AWS Secrets Manager 还会为我提供可以使用 AWS SDK 以多种编程语言获取我的新密钥的代码片段。这些代码段包含了必要的 SDK 调用,以及错误处理、解密和解码逻辑,从而为我节省了时间。

前面我演示了如何运行完整的存储库分析,当然也可以对每个新的拉取请求持续执行相同的分析,以帮助防止未来出现密钥硬编码和其他问题。

CodeGuru Reviewer 现在支持此功能
CodeGuru Reviewer 密钥检测器功能已在所有提供 CodeGuru Reviewer 的区域开放,无需额外付费。

如果您是 CodeGuru Reviewer 新用户,则可以免费试用 90 天,使用不超过 10 万行代码的存储库。无论您的代码是托管在 AWS CodeCommit、BitBucket 还是 GitHub 上,都可在几分钟内连接到存储库并开始完整扫描。如果您使用的是 GitHub,还可以参阅 GitHub 操作集成

有关密钥检测器功能的更多信息,请参阅技术文档。

Alex