8款最佳实践,保护你的 IaC 安全!
基础设施即代码(IaC) 是一种快速发展的技术,利用软件开发原则和实践,用软件配置基础设施。与传统的 IT 基础架构相比,IaC 可以更高效地交付软件。自动化还解锁了弹性配置的能力,该功能可在不同的负载下有效地分配资源。
尽管 IaC 有很多优势,但配置不当的 IaC 也会在整个系统中迅速传播错误配置。IaC 的自动化配置能够提高效率,也可以放大错误,而这些错误通常会对安全产生不利影响。坚持 IaC 最佳实践是降低成功供应链网络攻击和漏洞风险的有效方法,考虑以下8个 IaC 最佳实践,为企业安全保驾护航。
扫描 IaC 代码,排查错误配置
IaC 是一个功能强大的工具,但同时也存在一定安全风险,例如在整个云基础设施中传播小的配置错误。错误配置可能的形式有:不安全的默认配置,可公开访问的 S3 buckets 或未加密的数据库。
SAST 和 SCA 扫描是特征代码的最佳方式,然而很少有企业优先考虑用此类方式保护 IaC。对 IaC 代码进行安全扫描可以有效减少由于配置错误导致的暴露和漏洞。此外,可以通过扫描新的 commit 以查找对云部署的更改,来检测和更正与其原始模板匹配的基础结构。
将自动化 IaC 安全扫描嵌入开发工作流程中
在漏洞进入生产环境之前发现并修复比后置的补救手段更有效。因此通过将对 IaC 错误配置的检查嵌入到开发人员工作流中,开发人员能够提前发现并纠正问题。可以采用pre-commit的形式,以便在开发人员保存其工作时测试代码,也可以使用拉取请求自动执行的分支保护规则,或者作为在CI中运行的安全构建规则。在开发人员的工作流中运行安全扫描还可以确保开发人员及时获得准确信息,并修复错误配置,提高修复效率。
识别并纠正环境偏移
环境偏移检测(不同部署环境的配置与其模板不同步的情况)和修复错误配置是 IaC 的最佳实践之一。配置中的偏差通常发生在维护期间,并可能导致环境(如测试和生产)变化。随着时间的推移,这会导致配置偏离安全状态。
环境偏移可能是由粗心的错误引起的,而由此造成的问题修复难度高并且可能导致业务宕机,造成巨大损失。通过将 IaC 与实际生产配置进行比较来识别偏移,但手动完成此操作既繁琐又耗时。因此,偏移检测是 IaC 安全扫描工具的不错选择。
防止硬编码密钥渗透到 IaC 中
IaC 最广泛认可的最佳实践之一是避免部署包含凭证的代码。硬编码密钥可以在特征代码或 IaC 代码中被引入,而进入 IaC 代码的密钥有可能对组织的安全性造成毁灭性的影响。硬编码密钥的存在也使得由于密码破解而导致相关帐户泄露,让恶意攻击者有机可乘。因此如果硬编码密钥保留在程序中,会导致身份验证措施失败,因为任何有权访问项目的人都可以查看这些硬编码密钥。与扫描 IaC 安全配置错误非常相似,初始评估应在主分支和版本历史记录中的 IaC 代码中查找硬编码密钥。最好的方法是通过扫描 commit 来防止这些硬编码密钥进入版本控制系统。
减少代码泄漏的时间和影响
无意泄露源代码可能导致知识产权盗窃、硬编码密钥的暴露等等。源代码和 IaC 代码通常位于同一存储库中,暴露 IaC 代码的风险众多,其中包括攻击者通过解析代码找到对应的漏洞、配置错误和破解密钥的风险。
建立协议以避免代码泄漏,同时制定应急计划,以防发生泄漏。应调查潜在的可疑用户活动,例如使用 IaC 下载、克隆或分叉存储库。强制实施最小特权策略有助于减少代码泄漏风险。此外执行定期检查,防止源代码继续发布到公共存储库或代码共享站点,并确保快速处理任何源代码泄漏。公开专有 IaC 代码的时间越长,恶意攻击者就越有可能借此进行发起攻击。因此,设置警报机制,能够尽可能降低代码泄漏发生的风险。
建立一致的工具管理机制标准
IaC 安全中经常被忽视的一个方面是 DevOps 工具和基础结构本身的安全设置和策略。强化身份验证、确保最小特权原则以及强制实施职责分离,在建立有利于安全的协议方面都大有裨益。开发者凭证是攻击者和其他恶意行为者的有力工具,但实施治理保护措施有助于防止单个被盗用帐户危及系统的其他部分或访问 IaC 工具。
实现策略的一致实施是 IaC的最佳做法之一。Google 的 SLSA 框架(Supply chain Levels for Software Artifacts) 包含有关确保源代码完整性的具体指南,此指南旨在减少代码篡改的机会,并防止恶意活动被忽视。这些要求旨在使对 IaC 的更改可跟踪和审查。建立一致的管理标准,要求软件供应链中的每个系统都是安全的,用户无法在没有额外监督的情况下更改系统。
防止 IaC 代码篡改
如果开发人员的帐户遭到入侵,攻击者可以篡改 IaC 代码,从而造成严重后果,例如使数据库可公开访问。因此,不仅要强化开发人员的帐户,还需要明确 IaC 配置何时发生更改,并验证更改是否经过批准。在 SDLC 的不同阶段之间定期比对,通过识别源代码不匹配的点,帮助降低代码篡改风险。同时通过比较构建生命周期的不同阶段,确保代码完整性,以降低篡改代码的风险。如前所述,IaC 会放大错误配置,未经授权的更改可能会导致 IaC 模板更改或配置篡改,从而导致代码泄漏,因此检查和确认正在执行更改的主体十分关键。
关键代码监控是降低 IaC 篡改风险的另一个途径。从本质上讲,关键代码监控是在每次发生更改时的发出警报,对于特征代码,必须谨慎使用关键代码监控。但 IaC 代码是为应用程序初始化和部署的基础结构的模板,因此使用关键代码监控再合适不过。因为基础架构通常不会更改,但发生更改时应具有高可见性,以确保更改不是恶意的。
全面了解安全环境
繁冗复杂的环境是保障安全的最大阻碍。全面了解安全环境非常重要,因为这能有效减少修复安全问题所需的响应时间。通过改善安全环境,保障开发安全,避免代码泄漏或代码被篡改。此外,可以通过多个事件和工具的环境更有效地确定修复的优先级。这种方法可以产生深度防御,从而降低产生漏洞的风险以及在漏洞对企业和组织产生的影响。
参考链接:
Supply chain Levels for Software Artifacts
https://github.com/slsa-framework/slsa
8款最佳实践,保护你的 IaC 安全!的更多相关文章
- 保护REST API/Web服务的最佳实践
在设计REST API或服务时,是否存在处理安全性(身份验证,授权,身份管理)的最佳实践? 在构建SOAP API时,您可以使用WS-Security作为指导,有关该主题的文献很多.我发现了有关保护R ...
- 一款不错的 Go Server/API boilerplate,使用 K8S+DDD+CQRS+ES+gRPC 最佳实践构建
Golang API Starter Kit 该项目的主要目的是使用最佳实践.DDD.CQRS.ES.gRPC 提供样板项目设置. 为开发和生产环境提供 kubernetes 配置.允许与反映生产的 ...
- Dropbox可伸缩性设计最佳实践分享
http://www.infoq.com/cn/news/2012/11/dropbox-scale-bestpractice Dropbox的运维工程师Rajiv,跟大家分享了可伸缩性设计的最佳实践 ...
- Windows Azure 安全最佳实践 - 第 4 部分:需要采取的其他措施
那么,哪些安全威胁应由WindowsAzure环境缓解?哪些安全威胁必须由开发人员缓解? 开发 Windows Azure 应用程序的最佳安全做法一文说明了对于在 Windows Azure 中运行的 ...
- Windows Azure 安全最佳实践 - 第 3 部分:确定安全框架
构建云应用程序时,安全始终是计划和执行Windows Azure的首要核心因素.第 1 部分提出安全是一项共同责任,Windows Azure为您的应用程序提供超出内部部署应用程序需求的强大安全功能. ...
- MongoDB最佳实践中文手册
背景:查阅了一下MongoDB的相关文档,发现中文文档还是比较少的,工作中需要用到MongoDB,而这本<MongoDB最佳实践>是很好的选择,所以就把这本手册翻译了一下,其中生涩的专业用 ...
- 2018亚太CDN峰会开幕, 阿里云王海华解读云+端+AI的短视频最佳实践
4月11-12日,2018亚太CDN峰会在北京隆重召开,在11日下午的短视频论坛中,阿里云高级技术专家王海华进行了<短视频最佳实践:云+端+AI>的主题演讲,分享了短视频的生命周期关键点和 ...
- 快速web开发中的前后端框架选型最佳实践
这个最佳实践是我目前人在做的一个站点,主要功能: oauth登录 发布文章(我称为"片段"),片段可以自定义一些和内容有关的指标,如“文中人物:12”.支持自定义排版.插图.建立相 ...
- MySQL · 答疑解惑 · MySQL 锁问题最佳实践
http://mysql.taobao.org/monthly/2016/03/10/ 前言 最近一段时间处理了较多锁的问题,包括锁等待导致业务连接堆积或超时,死锁导致业务失败等,这类问题对业务可能会 ...
- 【MySQL】锁问题最佳实践
最近一段时间处理了较多锁的问题,包括锁等待导致业务连接堆积或超时,死锁导致业务失败等,这类问题对业务可能会造成严重的影响,没有处理经验的用户往往无从下手.下面将从整个数据库设计,开发,运维阶段介绍如何 ...
随机推荐
- NLP机器翻译全景:从基本原理到技术实战全解析
机器翻译是使计算机能够将一种语言转化为另一种语言的技术领域.本文从简介.基于规则.统计和神经网络的方法入手,深入解析了各种机器翻译策略.同时,详细探讨了评估机器翻译性能的多种标准和工具,包括BLEU. ...
- 最佳实践-使用Github Actions来构建跨平台容器镜像
公众号「架构成长指南」,专注于生产实践.云原生.分布式系统.大数据技术分享. 前言 最近在写K8s的相关系列文章,因为有涉及到镜像构建,发现在Mac m1的Arm架构下构建的部分镜像,没法在X86架构 ...
- LabVIEW基于机器视觉的实验室设备管理系统(5)
目录 行动计划 设备借用 判断设备ID是否正确.设备是否在库 判断是否为已注册用户.电话是否正确 借出设备 设备归还 信息查询 判断ID是否正确.选择设备状态 效果演示 今天这一期,我们就来完成实验 ...
- C#Winform使用NPOI获取word中的数据
公众号「DotNet学习交流」,分享学习DotNet的点滴. 需求 想要获取word里面的内容,如下图所示: 有一张表和一段文本,并将它们存入数据库或者Excel. 步骤 添加NPOI的库,如下图所示 ...
- vue+element-ui小笔记
1.图片加载失败,给默认图 2.form表单中,输入框加回车事件,页面刷新,如何解决? 3.使用在线主题生成工具,修改element自定义主题色 1.图片加载失败,给默认图,两种解决方法: 方法一: ...
- 【Javaweb】implements Serializable是什么意思?反序列化是什么意思?
为了保证数据传输的可靠 性,常常要implements Serializable,为什么? 对象本质上是虚无缥缈的,只是内存中的一个地址,如果想要让对象持久化,让对象在网络上传输,总不可能传送一个内存 ...
- [USACO2007OPENS] Fliptile S
题目描述 FJ 知道,智商高的奶牛产奶量也大,所以他为奶牛们准备了一个翻动瓦片的益智游戏. 在一个 \(M \times N\) 的方阵上(\(1 \leq M,N \leq 15\)),每个格子都有 ...
- C# 提取PDF中指定文本、图片的坐标
获取PDF文件中文字或图片的坐标可以实现精确定位,这对于快速提取指定区域的元素,以及在PDF中添加注释.标记或自动盖章等操作非常有用.本文将详解如何使用国产PDF库通过C# 提取PDF中指定文本或图片 ...
- 15、string
1.string是什么? Go中的字符串是一个字节的切片,可以通过将其内容封装起在""中来创建字符串.Go中的的字符串是Unicode兼容的并且是UTF-8编码的. 2.strin ...
- 开源.NetCore通用工具库Xmtool使用连载 - 图像处理篇
[Github源码] <上一篇> 介绍了Xmtool工具库中的扩展动态对象,今天我们继续为大家介绍其中的图像处理类库. 在我们的软件系统中,经常需要对图片进行各种各样的处理:例如最常见的头 ...