Amazon CodeGuru Reviewer推出新功能识别硬编码密钥并用Amazon Secrets Manager进行保护

本文主要是介绍Amazon CodeGuru Reviewer推出新功能识别硬编码密钥并用Amazon Secrets Manager进行保护,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

81858bd4fb3338b108d3f44d39b90d8f.gif

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

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

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

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

这项新功能包含在Amazon CodeGuru Reviewer 服务中,无需额外付费,并支持常见的 API 提供商,例如 亚马逊云科技、Atlassian、Datadog、Databricks、GitHub、Hubspot、Mailchimp、Salesforce、SendGrid、Shopify、Slack、Stripe、Tableau、Telegram 和 Twilio。查看完整列表请扫描下方二维码。

41c23d1753a845173071fcec1cac3fe4.png

密钥检测器操作演示

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

aebf97948560a5eb72988b3bb875c7ee.png

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

84bf4e3d25be504eac158d4ca8d604ab.png

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

820cdb7d03dda3dcc284ec770c94f097.png

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

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

c6ff6ac1878cd1868ed6527d6b90b313.png

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

9ab54c610f5c8e1cb1c226f956e24809.png

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

e316f93aba7336d3d255c5060888e40a.png

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

fa5477ae1a7c13dec097d6152602c858.png

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

92c123ede837f5967ce51b8fb7c5564d.png

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

Amazon CodeGuru Reviewer 

现在支持此功能

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

如果您是Amazon CodeGuru Reviewer 新用户,则可以免费试用 90 天,使用不超过 10 万行代码的存储库。无论您的代码是托管在 Amazon CodeCommit https://aws.amazon.com/codecommit/ 、BitBucket 还是 GitHub 上,都可在几分钟内连接到存储库并开始完整扫描。如果您使用的是 GitHub,还可以参阅 GitHub 操作集成(请扫描下发二维码获取内容)。

2fde0063bf58f92352b1505e64c75ff7.png

有关密钥检测器功能的更多信息,请参阅技术文档(请扫描下方二维码获取内容)。

fe755412d79076e55d46d4ab34ec0bcc.png

本篇作者

5a110d09d1eb041031401d930bd78945.png

Alex Casalboni

高级软件工程师 &云布道者

Alex是亚马逊云科技的布道师,对网络技术和音乐充满热情。自2011年以来,他一直在开发网络产品,并用他的经验帮助其他开发者学习。他对编码的热爱遍及Python和JavaScript社区,他喜欢为开源项目做贡献,比如Amazon Lambda Power Tuning。

f950be67bf22abb9e232336960ad0aba.gif

5c8979d380f44ac1728a543e838e5b8e.gif

听说,点完下面4个按钮

就不会碰到bug了!

791f712d54f4a8040c53be8208404225.gif

这篇关于Amazon CodeGuru Reviewer推出新功能识别硬编码密钥并用Amazon Secrets Manager进行保护的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/291463

相关文章

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

使用Pandas进行均值填充的实现

《使用Pandas进行均值填充的实现》缺失数据(NaN值)是一个常见的问题,我们可以通过多种方法来处理缺失数据,其中一种常用的方法是均值填充,本文主要介绍了使用Pandas进行均值填充的实现,感兴趣的... 目录什么是均值填充?为什么选择均值填充?均值填充的步骤实际代码示例总结在数据分析和处理过程中,缺失数

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient