您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

软件开发中的密码与密钥管理

时间:2023-01-09 11:31:16  来源:  作者:qaseven
让我们深入探讨 DevOps 和 DevSecOps 管道中密码密钥管理的各个方面。

 

当今的数字业务有望以闪电般的速度创新、执行和发布产品。自动化工具的广泛采用,加上 DevOps 和DevSecOps 工具,有助于这些企业实现更高的开发速度和更快的反馈循环。这最终有助于缩短发布周期并以迭代方式提高产品质量。

尽管向微服务和容器化应用程序的转变以及开源的采用正在帮助开发人员更快地交付产品,但它们也带来了与合规性和安全性相关的挑战。根据 1Password 的Hidden In PlAIn Sight 报告,企业中的 DevOps 和 IT 团队不断面临由机密泄露、机密共享不安全和手动机密管理等带来的挑战。

管理大型项目的 API 密钥、密码、加密密钥等机密信息非常复杂。让我们在本文中深入探讨机密管理的各个方面。

 

什么是密码密钥管理?

 

简而言之,密码是非人类特权凭证,为开发人员提供访问应用程序、容器等资源的权限。类似于密码管理,秘密管理是一种将秘密(例如,访问令牌、密码、API 密钥等)存储在具有更严格访问控制的安全环境中的做法。

随着应用程序的复杂性和规模随着时间的推移而增长,管理密码可能会变得混乱。此外,可能会出现跨技术堆栈的不同块共享秘密的情况。这可能会造成严重的安全威胁,因为它会为恶意行为者打开后门来访问您的应用程序。

密码管理确保敏感信息永远不会被硬编码,并且只能以加密格式提供。与 RBAC(基于角色的访问控制)一起安全访问敏感数据是密码管理的秘诀。

 

密码密钥管理的挑战

 

在许多情况下,开发人员可能不小心在他们的代码或配置文件中使用了硬编码的纯文本格式凭证。如果将包含机密的相应文件推送到 Github(或任何其他流行的代码托管平台)上指定的公共存储库,对业务的影响可能会很大。

多云基础设施、容器化应用程序、IoT/IIoT、CI/CD 和类似进步所提供的好处可以通过同时关注秘密的有效管理来最大限度地利用。对开发和 DevOps 团队进行应用程序安全教育是在团队中建立安全第一文化的最重要步骤。

以下是 DevOps 和 DevSecOps 团队在管理机密时面临的主要挑战:

 

这种情况通常发生在团队(和/或组织)的密码分布在整个组织中时。数字优先的组织越来越多地使用容器和基于云的工具来提高开发人员的速度、节省成本并加快发布速度。同样的原则也适用于基于物联网应用程序的开发和测试。

根据应用程序的规模和复杂性,机密很可能分布在:

 

  1. 基于容器化微服务的应用程序(例如,Kube.NETes、OpenShift、Nomad)
  2. 自动化 E2E 测试/跟踪平台(例如,Prometheus、Graphite)
  3. 内部开发的工具/流程
  4. 应用服务器和数据库
  5. DevOps 工具链

 

以上列表中的项目因应用程序的规模、大小和复杂性而异。提供 RBAC、使用强旋转密码和避免密码共享是团队/组织内每个级别都必须遵循的一些简单实践。

 

云开发人员和测试工具的激增

 

无论项目的大小和规模如何,开发团队都希望最大限度地利用 GCP(谷歌云平台)、Microsoft Azure、AWS(亚马逊网络服务)、Kubernetes 等云开发工具。

云工具肯定会加快与开发和测试相关的流程,但必须在使用它们的同时将安全实践放在首位。用于访问相应云平台的密钥(例如 AWS 密钥)的任何泄露都可能导致经济损失。

在存储库中公开公开的 AWS 凭证

鉴于如此多的风险,DevOps 和开发团队必须确保任何类型的密钥在公共领域(例如 GitHub 存储库)中都不会以人类可读的格式提供。专注于社区主导增长 (CLG) 以宣传其产品或开发人员工具的组织需要确保其用户不会将任何密钥公开遗漏!如果密钥可公开访问,黑客可能出于恶意原因利用您的平台。

用于管理机密的手动流程、使用第三方资源(例如 API)时的数据安全以及安全镜头的端到端可见性是组织在机密管理方面面临的其他挑战。

 

密码密钥管理最佳实践

 

在安全管理机密方面没有一种放之四海而皆准的方法,因为这在很大程度上取决于基础设施、产品要求和其他此类变化因素。

撇开变量不谈,这里有一些关于高效和可扩展的秘密管理的最佳实践:

 

使用 RBAC(基于角色的访问控制)

 

每个项目和组织都有敏感数据和资源,必须只能由受信任的用户和应用程序访问。系统中的任何新用户都必须分配默认权限(即最小访问控制)。提升的权限必须仅对项目或组织中的少数成员可用。

管理员(或超级管理员)必须有权根据需要添加或撤销其他成员的权限。权限升级也必须根据需要进行,并且只能在有限的时间内进行。在授予/撤销权限时必须添加适当的注释,以便所有相关的项目涉众都具有完整的可见性。

 

使用安全保险

 

简单来说,保险库是一种主要用于保护任何敏感信息(例如,密码、API 密钥、证书等)的工具。以人类可读的形式在本地存储机密信息是管理机密信息最糟糕的方法之一。

这就是安全保险库非常有用的地方,因为它们为任何秘密提供了统一的接口,并提供了详细的审计日志。通过指定访问权限(授权),安全保险库还可用于检测基于角色的访问控制 (RBAC)。Hashicorp Vault Helm chart和Vault for Docker是两个流行的保险库管理器,可用于运行保险库服务、访问和存储机密等。

由于大多数应用程序都利用了云的潜力,因此在数据传输或静止时关注数据安全性非常重要。这就是 EaaS(加密即服务)可用于在静态存储数据之前将应用程序的加密需求卸载到保管库的地方。

 

定期轮换密钥

 

几周或几个月后重置密钥是一种很好的安全做法。一种做法是手动重新生成密钥,因为使用这些秘密的应用程序可能会在日志文件或集中式日志记录系统中留下痕迹。攻击者可以获得对日志的后门访问并使用它来泄露秘密。

此外,同事可能会无意中向组织外部泄露机密。为避免此类情况,建议在相应的机密管理工具中启用机密轮换。例如,AWS Secrets Manager 中的 Secrets Manager 轮换使用 AWS Lambda 函数来更新密钥和数据库。

最重要的是,团队应该有适当的实践来检测对系统的未授权访问。这将有助于在对业务造成重大损害之前采取适当的措施。

 

为什么要在 DevSecOps 管道中实施机密管理?

 

只有在 CI/CD 管道中对代码进行自动化测试,才能实现加速发布周期和更快的开发人员反馈。在 CI 管道中运行的测试可能需要访问关键的受保护资源,如数据库、HTTP 服务器等。

甚至在 Docker 容器内运行单元测试也是一种常见做法,但开发人员和 QA 需要确保秘密不存储在 Dockerfile 中。秘密管理工具可以与流行的 CI/CD 工具(例如 Jenkins)结合使用,从而在集中位置管理密钥和其他秘密。秘密也通过加密和令牌化存储。



Tags:软件开发   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03  Search: 软件开发  点击:(7)  评论:(0)  加入收藏
生成式AI将在十个方面改变软件开发
上个世纪90年代,当人们提起软件编程时,通常意味着选择一个编辑器,将代码检入CVS或SVN代码库,然后将代码编译成可执行文件。与之对应的Eclipse和Visual Studio等集成开发环境(IDE)...【详细内容】
2024-03-11  Search: 软件开发  点击:(15)  评论:(0)  加入收藏
未来世界的12个软件开发预测
译者 | 李睿审校 | 重楼预测软件开发的未来趋势通常是一件困难的事情。因为人们总是期望软件开发领域中的新兴趋势和频繁的变化能够满足市场不断增长的期望。这样的趋势也将...【详细内容】
2024-01-15  Search: 软件开发  点击:(74)  评论:(0)  加入收藏
软件开发中的破窗理论
破窗理论,作为一种社会学的理论,认为如果一个地方出现了一些小的破坏或不良现象,而没有及时得到修复或制止,就会导致更多的破坏或不良现象的发生,从而形成一种恶性循环。然而,这个...【详细内容】
2023-11-30  Search: 软件开发  点击:(137)  评论:(0)  加入收藏
使用 CodeWhisperer 作为 AI 编码助手,重新构想软件开发
在 Amazon CodeWhisperer 正式发布后,许多客户都已经使用它来简化和精简其软件开发方式。CodeWhisperer 使用由根基模型提供支持的生成式人工智能来理解代码的语义和上下文,并...【详细内容】
2023-11-30  Search: 软件开发  点击:(122)  评论:(0)  加入收藏
软件开发“自我毁灭”的七宗罪
作者丨Peter Wayner译者 | 晶颜审校 | 重楼软件开发是一门具有挑战性的学科,它建立在数以百万计的参数、变量、库以及更多必须绝对正确的因素之上。即便是一个字符不合适,整个...【详细内容】
2023-10-18  Search: 软件开发  点击:(263)  评论:(0)  加入收藏
软件开发者值得尝试的代码调试技巧
译者 | 刘汪洋审校 | 重楼调试是软件开发过程中的关键环节,既具有挑战性,也充满了成就感。 我们常常会遇到一些难以理解的 Bug,解决它们不仅富有挑战也为工作增添了些许趣味。...【详细内容】
2023-10-16  Search: 软件开发  点击:(252)  评论:(0)  加入收藏
10个大数据软件开发的数据队列框架
在软件开发中,数据队列框架用于实现消息传递、异步通信和事件驱动的系统。以下是一些常见的数据队列框架和消息中间件,希望对大家有所帮助。1.Apache Kafka:Kafka是一个高吞吐...【详细内容】
2023-10-08  Search: 软件开发  点击:(377)  评论:(0)  加入收藏
人工智能与软件开发的未来
人工智能正在从各个方面改变软件开发。尽管许多公司竞相推出人工智能功能,但人工智能的潜力已超出了功能层面,成为大多数SaaS解决方案的基础。当机器学习和人工智能模型应用在...【详细内容】
2023-08-24  Search: 软件开发  点击:(254)  评论:(0)  加入收藏
风头不减的低代码会取代传统软件开发模式吗?
近年来,随着数字经济蓬勃发展,越来越多的企业踏上了数字化转型的征程,能够快速构建、交付、维护和升级应用程序成为实现业务数字化的关键。面对不断飙升的应用开发需求,低代码开...【详细内容】
2023-08-23  Search: 软件开发  点击:(274)  评论:(0)  加入收藏
▌简易百科推荐
Netflix 是如何管理 2.38 亿会员的
作者 | Surabhi Diwan译者 | 明知山策划 | TinaNetflix 高级软件工程师 Surabhi Diwan 在 2023 年旧金山 QCon 大会上发表了题为管理 Netflix 的 2.38 亿会员 的演讲。她在...【详细内容】
2024-04-08    InfoQ  Tags:Netflix   点击:(2)  评论:(0)  加入收藏
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(7)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(13)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(9)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(5)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(11)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(9)  评论:(0)  加入收藏
为什么都说 HashMap 是线程不安全的?
做Java开发的人,应该都用过 HashMap 这种集合。今天就和大家来聊聊,为什么 HashMap 是线程不安全的。1.HashMap 数据结构简单来说,HashMap 基于哈希表实现。它使用键的哈希码来...【详细内容】
2024-03-22  Java技术指北  微信公众号  Tags:HashMap   点击:(11)  评论:(0)  加入收藏
如何从头开始编写LoRA代码,这有一份教程
选自 lightning.ai作者:Sebastian Raschka机器之心编译编辑:陈萍作者表示:在各种有效的 LLM 微调方法中,LoRA 仍然是他的首选。LoRA(Low-Rank Adaptation)作为一种用于微调 LLM(大...【详细内容】
2024-03-21  机器之心Pro    Tags:LoRA   点击:(12)  评论:(0)  加入收藏
这样搭建日志中心,传统的ELK就扔了吧!
最近客户有个新需求,就是想查看网站的访问情况。由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的...【详细内容】
2024-03-20  dbaplus社群    Tags:日志   点击:(4)  评论:(0)  加入收藏
站内最新
站内热门
站内头条