什么是容器注册安全?
容器注册表安全侧重于保护容器注册表,即容器映像的集中存储和分发系统。容器注册机构在容器生态系统中发挥着举足轻重的作用,可确保容器化应用程序的完整性和安全性。正确的容器注册表安全包括使用可信的注册表、实施严格的访问控制、监控漏洞并确保托管服务器的安全。此外,它还要求拒绝不安全的连接并删除陈旧的图像。通过优先考虑容器注册安全,组织可以保障其容器化环境的安全,并维护用户和客户的信任。
容器注册安全详解
容器注册表安全是容器生态系统的一个重要组成部分--容器注册表。在更广泛的 容器安全叙述中,注册中心充当容器映像(容器化应用程序的构件)的保管人。因此,集装箱登记处不仅仅是一个存储单元。相反,它是维护和分发应用程序映像完整性的连接点。
了解容器注册表
众所周知,在 容器化 环境中,应用程序连同其依赖项都被包进容器中,使其具有可移植性,便于跨平台部署。容器注册中心为这一过程提供了一个位置,在这里可以以一致的方式对容器映像进行版本控制、检索和部署。
那么,容器注册中心就是容器映像的集中存储和分发系统。该注册中心允许开发人员和运营团队存储、管理和共享容器映像,他们将使用这些映像来创建和部署容器化应用程序和 微服务。
公共和私人登记处
组织可能会结合使用公共和私有容器注册表来管理其容器映像以及其他工件。
Docker Hub 和 GitHub 包的子功能 GitHub Container Registry 等公共注册中心提供了大量开源映像,组织可将其用作应用程序的基础。这些注册表通常可供任何人访问,使开发人员可以轻松查找和使用预置图像。
但各组织往往有特定的要求和专有软件,因此必须使用私营登记处。
图 1:容器注册表/存储库的公共与私有之分
Azure 容器注册中心、亚马逊弹性容器注册中心和谷歌容器注册中心等私有容器注册中心为存储和管理专有映像及相关工件提供了安全、受控的环境。只有组织内的授权用户才能访问这些注册表,以帮助确保敏感信息和定制图像的安全。
通过结合使用公共和私人注册表,组织可以利用开源图像的优势,同时保持对其专有软件的控制。这种双重方法使组织能够优化其容器管理工作流程,并简化部署过程。
容器注册安全的组成部分
鉴于注册表对于容器化环境的运行方式至关重要,而且组织中很容易存储数以万计的映像,因此确保注册表的安全对于 软件开发生命周期的完整性不可或缺。
漏洞可能危及的不仅仅是应用程序。利用配置错误的攻击者可以在未经授权的情况下访问 CI/CD 系统 ,并横向移动以访问底层操作系统。他们有可能操纵合法的 CI/CD 流程,获取敏感的令牌,并转移到生产环境,在生产环境中识别暴露的凭证可能会让他们进入组织的网络。
相关文章云供应管道攻击剖析
注册表安全始于只使用受信任的注册表和库。持续监控漏洞变化是基础,同时还要确保托管服务器的安全,并实施实质性的访问策略。正确的注册表安全性应拒绝不安全的连接,标记或删除过期图像,并执行严格的身份验证和授权限制。
让我们来详细了解一下这些测量方法。
在 CI/CD 中促进图像和人工制品的完整性
了解了与图像和人工制品相关的风险,我们就知道实施严格检查以确保其完整性的重要性。考虑实施以下策略。
拒绝不安全的连接
虽然公共注册机构可能允许匿名访问容器映像,但为了防止中间人攻击、未经授权的篡改和未经授权的敏感信息访问,您必须保持安全连接。
要拒绝不安全的连接,可将系统配置为只接受 HTTPS 或 TLS 加密连接等安全协议。首先从可信的证书颁发机构(CA)获取并安装有效的 SSL/TLS 证书。然后,更新服务器或服务配置,强制使用 HTTPS 或 TLS,禁用 HTTP 等不安全协议。根据您的设置,这可能需要调整网络服务器(如 Nginx、Apache)、负载平衡器或应用程序的设置。此外,还可考虑使用 HSTS(HTTP 严格传输安全)等安全功能,指示浏览器在访问您的网站或服务时始终使用安全连接。
删除过期图片
制定一项政策来定义陈旧图像--超过特定时间范围或在一定时间内未使用的图像--并使用注册表工具或应用程序接口来根据政策列出和过滤图像。例如,在 Docker Registry 中,使用 Docker Registry API 检索图像元数据,并按最后推送日期或标签进行过滤。在其他注册表中,可能也有类似的 API 或 CLI 工具。识别出过期镜像后,使用相应的命令或应用程序接口删除它们,确保遵循注册表的垃圾回收最佳实践。
避免第三方注册机构出现 IAM 问题
身份和访问管理(IAM) 对于组织来说至关重要,尤其是在 GitHub 这样的源控制管理系统(SCM)中,代码存储库存储着宝贵的代码和资产。不适当的 IAM 会导致 CI/CD 管道中的安全风险。为了优化资源库的安全和治理,组织可以使用单点登录(SSO)和跨域身份管理系统(SCIM)来管理访问控制。不过,SSO 只适用于 GitHub 企业版,其他许可证可能会面临风险。
为减少涉及 GitHub 账户中的私人电子邮件地址、ghost GitHub 账户和未完成离线操作的问题,应执行双因素身份验证 (2FA)、建立使用专用企业账户的入职协议,并维护用户账户清单。对于支持 SSO 的组织来说,实施 SCIM 可确保自动取消用户配置,并消除通过过期凭证进行访问的情况。应对 IAM 风险有助于保护存储库和 CI/CD 生态系统,并在所有系统中保持较高的安全级别。
采用充分的身份验证和授权限制
被授予超过存储库所需权限的身份为权限升级提供了机会,并可能导致未经授权的代码更改、篡改构建流程和访问敏感数据。自动化可帮助验证访问控制、检查用户权限和识别潜在漏洞,使组织能够制定常规的主动措施,如
- 分析和映射整个工程生态系统中的所有身份。对于每个身份,持续映射身份提供者、授予的权限和使用的权限。确保分析涵盖所有计划访问方法。
- 删除环境中各系统中每个身份的不必要权限。
- 确定禁用或删除过期账户的可接受期限。禁用和删除超过此静止期的身份。
- 摸清所有外部合作者的情况,并根据最少特权原则调整他们的身份。在可能的情况下,为人工账户和程序账户授予有有效期的权限。
- 禁止员工使用个人电子邮件地址或不属于组织的域名地址访问 SCM、CI 或其他 CI/CD 平台。监控不同系统中的非域名地址,并删除不合规的用户。
- 禁止用户自行注册系统,并根据需要授予权限。
- 避免将系统中的基本权限授予所有用户和自动分配用户账户的大型群组。
- 为每个特定上下文创建专用账户,而不是使用共享账户,并授予特定上下文所要求的确切权限集。
实施安全存储
建立一个安全的防篡改存储库来存储人工制品。启用版本管理以维护人工制品更改的历史记录,实施实时监控以跟踪可疑活动并发出警报。在工件受损的情况下,配置系统以方便回滚到以前的已知良好版本。
进行从开发到生产的完整性验证检查
实施在整个软件交付链中验证资源完整性的流程和技术。开发人员在生成资源时,应使用外部资源签名基础设施对其进行签名。在后续管道阶段使用资源之前,应根据签名机构交叉检查其完整性。
代码签名
SCM 解决方案可为每个贡献者的提交使用唯一密钥签名,防止未签名的提交在管道中继续进行。
人工制品验证软件
专为签名和验证代码及工件而设计的工具,如 Linux 基金会的 Sigstore,可以阻止未经验证的软件在管道中前进。
配置漂移检测
实施措施检测配置漂移,如云环境中的资源未使用已签名的 基础设施即代码 模板进行管理。这种漂移可能表明部署来自不受信任的来源或流程。
采用加密签名
在 CI/CD 管道的每个阶段使用公钥基础设施(PKI)对工件进行加密签名。这种做法是在使用前根据受信任的证书颁发机构验证签名。配置您的 CI/CD 管道,拒绝接受签名无效或缺失的工件,以降低部署被篡改的资源或未经授权的更改的风险。
只使用安全的容器映像
容器映像可能包含漏洞,攻击者可利用这些漏洞未经授权访问容器及其主机。为防止出现这种情况,请使用可靠来源的安全可信容器映像,并定期对其进行扫描。从公共注册表部署容器时,首先扫描容器是否存在恶意软件和漏洞尤为重要。
执行多源验证
采用多源验证策略,利用校验和、数字签名和安全哈希算法等各种来源以及可信存储库验证人工制品的完整性。及时更新加密算法和密钥,以保持其有效性。
第三方资源验证
纳入构建和部署管道的第三方资源,如在构建过程中执行的脚本,应经过严格验证。在使用这些资源之前,先计算它们的哈希值,然后与资源提供者提供的官方哈希值进行比较。
整合安全扫描
在创建镜像时,CI/CD 管道应只使用经过审核的代码(生产批准)。将漏洞扫描工具以及 软件组成分析(SCA) 和 静态应用程序安全测试(SAST) 纳入 CI/CD 管道,以确保在将映像推送到注册表之前映像的完整性,生产部署将从注册表中提取映像。还要确保遵循最佳做法。例如,在删除所有不必要的软件组件、库、配置文件、机密等之前,不要构建镜像。
采取保守、谨慎的方法,可以让小组在开发过程中尽早解决漏洞问题,保持较高的代码质量,同时降低安全事故的风险。选择能与所有注册表类型集成的容器映像扫描解决方案。Prisma Cloud 等平台为管理员提供了灵活的一站式影像扫描解决方案。
映像分析沙箱
在开发和部署容器化应用程序期间,使用映像分析沙箱将增强您的容器安全策略,使您能够安全地从外部资源库中提取和运行可能包含过时、易受攻击的包和嵌入式恶意软件的容器映像。
沙箱的功能将允许您在受控环境中扫描可疑的异常容器行为,如加密货币挖矿、端口扫描、修改二进制文件和修改内核模块。您可以揭露风险,识别隐藏在软件供应链中的 可疑依赖关系 ,否则静态分析可能会漏掉它们。
- 捕获 容器的详细 运行时配置文件
- 评估图像风险
- 将动态分析纳入工作流程
制定验证政策和审核时间表
为确保正确的图像和人工制品完整性验证,组织应制定明确的政策来定义验证流程。一旦建立,定期审计内部政策的合规性,以发现和解决薄弱环节以及不合规的地方。持续监控和分析有助于发现异常和未经授权的活动。
集装箱注册安全一览表
- 使用可信的注册表和库
- 确保托管服务器安全,实施稳健的访问策略
- 实施充分的身份验证和授权限制
- 为文物建立安全的储存库
- 在整个 CI/CD 过程中执行完整性验证检查
- 采用加密签名
- 执行多源验证
- 验证第三方资源
- 将安全扫描集成到 CI/CD 管道中
- 制定验证政策和定期审计计划
集装箱注册常见问题
CI/CD 管道 将软件从版本控制到最终用户手中的过程自动化。它包含持续集成(CI)和持续部署(CD),实现了软件交付和基础设施变更过程的自动化。管道通常包括代码编译、单元测试、集成测试和部署等阶段。这种自动化可确保软件始终处于可部署状态,从而促进快速、可靠的软件发布周期。CI/CD 管道对于 DevOps 实践至关重要,它使团队能够更频繁、更可靠地交付代码变更。
- SCM 有助于保持用于构建容器映像的代码的一致性和可追溯性,使开发人员能够轻松识别用于创建容器映像的特定代码版本。
- SCM 使开发人员能够对代码进行协作,确保构建并存储在注册表中的容器映像符合组织的质量要求。
- SCM 工具通过与 CI/CD 管道集成,将构建、测试和向注册中心推送容器映像的流程自动化,从而增强了工作流程。
网络钩子是一种通过自定义回调来增强或改变网页或网络应用程序行为的方法。这些回调可能由第三方用户和开发人员维护、修改和管理,他们不一定能访问网页或应用程序的源代码。在云计算和 DevOps 中,网络钩子用于在存储库或部署环境中发生特定事件时触发自动化工作流程,如 CI/CD 管道。Webhooks 可实现对事件的实时通知和自动反应,增强云服务和工具之间的自动化和集成。
Notary 是一款开源工具,为发布和验证容器映像等内容的签名提供了一个框架。它实施了更新框架(TUF)规范,以确保内容传输和更新的安全性。公证人确保用户收到的内容与发布者的意图完全一致,防止未经授权的修改。
公证人通常与 Docker Content Trust 结合使用,对 Docker 映像进行签名和验证。