技术分享|基础设施即代码(IaC)的安全问题
发布时间:
2023-12-01 09:17

基础设施即代码(以下缩写为IaC) 改变了我们部署和管理云基础设施的方式。我们现在可以通过代码定义我们的服务架构,而不必与大型运营团队手动配置服务器和网络。IaC使我们能够自动化基础设施部署、扩展整个服务器群、记录架构更改的历史记录以及测试网络的增量更改。
虽然IaC带来了许多好处,但它并非没有安全问题。今天,让我们一起共同探讨一下IaC面临的5大安全问题以及我们缓解这些问题的实践。
01 IaC模版配置错误
IaC大的安全问题之一是模板中的错误配置。IaC模板代码和依赖项可能包含错误,这些错误可能会无意中损害基础设施或为潜在的攻击者提供利用系统的手段。
例如,假设IaC模板无意中包含了存有敏感用户数据(例如财务详细信息或个人身份信息 (PII))的数据库的明文用户名和密码凭据,未经授权访问此模板的攻击者可以查看数据并操纵数据库。
另一个例子是使用过时或已弃用的IaC框架和其他第三方依赖项。攻击者可能会发现旧代码版本中的新缺陷,从而使他们能够利用其他未知的错误配置。当相同的IaC模板在不同的环境中共享时,风险会变得更大,从而使单个错误配置的影响更大。定期维护和更新代码并仔细审查第三方依赖项以确保它们得到更新非常重要。
为了进一步保护IaC模板,我们应该实施安全编码实践,包括编写健壮的IaC代码,其中包括函数中的输入和参数验证,以及使用测试框架和版本控制来验证和跟踪代码更改以快速处理错误。我们还应该验证模板在部署和卸载过程中是否正常运行,以防止因不当删除服务而产生意外成本。
02 秘钥存储和传输不安全
幸运的是,IaC 框架和云平台允许我们安全地存储和使用这些Secret。例如,Terraform Cloud提供了Secret管理功能,以确保这些敏感数据得到正确加密和存储。云服务通常会自动提供机密(例如访问密钥和数据库连接字符串)作为环境变量,因此我们在本地开发时可以用自己的值覆盖它们。
03 访问控制策略配置错误
攻击者可以通过开放的网络端口、不受限制的速率限制或传输或静态的未加密数据来利用配置。然后,他们可以利用这些错误配置来获得未经授权的访问、窃取敏感数据或中断服务。
随着时间的推移,在基础设施变更没有记录或正确管理的情况下,配置错误也可能会因为配置漂移而变得不那么明显。例如,您可能会在不记录更改的情况下应用系统补丁,或者工程师可能会登录调查问题、进行手动更改,然后忘记恢复它们。这些操作可能会导致难以识别和解决IaC模板视图之外的潜在风险,从而使系统面临威胁。
04 不安全的状态文件
-
将状态文件远程存储在云端,以便轻松共享和备份。 -
启用版本控制以在文件损坏时恢复它。 -
使用文件锁定机制,以便只有一个用户可以随时部署和更改状态文件。 -
存储文件时对其进行加密,以便攻击者即使获得访问权限也无法解密。 -
限制用户对状态文件的访问,以便只有团队才能访问该文件。即使Secret被安全存储并保留在IaC模板之外,状态文件也可能以明文形式包含它们,因此必须对这些文件进行加密并限制访问以避免泄露Secret。
05 缺乏测试和验证
未经彻底测试和验证的IaC模板可能会导致不安全的部署或错误配置,从而使攻击者能够破坏基础设施。
-
IaC模板部署成功吗? -
访问控制和配置是否与代码一致? -
资源是否正确映射和引用? -
服务器活动是否得到正确监控和记录? -
基础设施能否处理所需的负载流量?
安全开发、测试和验证IaC的方法是将安全性集成到开发过程中。实现此目的的一种方法是使用8590am发现海洋之神容器安全平台IaC安全扫描功能,这是一种用于增强IaC测试和验证的专属模块。它与开发工具和工作流程无缝集成,实现实时、持续的安全IaC开发。
