AWS CodeArtifact 专业2020年〜
安全存储和共享软件包的全托管制品仓库
它能做什么
AWS CodeArtifact 是一项支持 npm、PyPI、Maven、NuGet 等主流包管理器的全托管制品仓库服务。集中管理组织内使用的软件包,并作为代理中继从公共仓库获取包,确保依赖项的安全性和可用性。通过 IAM 策略实现精细的访问控制,团队间的包共享也能安全进行。
使用场景
用于内部开发的公共库的集中管理和分发、缓存 npm 和 PyPI 的公共包以确保依赖稳定性、在 CI/CD 流水线中保存和分发构建产物、作为供应链攻击对策控制包的获取来源、多团队间安全共享私有包等,广泛应用于软件开发的包管理。
日常类比
可以将其比作公司内部的图书馆。每次从外部书店(公共仓库)买书(包)都有缺货或质量风险。设置内部图书馆(CodeArtifact)后,可以常备常用的书,还能一起管理员工编写的内部手册(私有包),并记录谁借了哪本书。
什么是 CodeArtifact
AWS CodeArtifact 是 2020 年发布的全托管制品仓库服务。软件开发中依赖大量外部包,但存在公共仓库故障、包被删除、恶意包混入等风险。CodeArtifact 减轻这些风险,为整个组织提供安全高效管理包的基础设施。
主要特性
CodeArtifact 通过域和仓库两个层级管理包。域是整个组织的管理单元,其中可以创建多个仓库。每个仓库可以设置上游连接,自动缓存来自公共仓库(npmjs.com、pypi.org 等)的包。一旦缓存的包即使公共仓库不可用也能继续使用,提高构建稳定性。包的版本管理和依赖追踪也会自动进行。
安全与访问控制
CodeArtifact 支持 IAM 策略和基于资源的策略两种访问控制方式。可以为每个仓库精细设置读写权限,限制只有特定团队才能发布包。此外,标准支持通过 AWS KMS 进行静态加密,传输中的数据也通过 TLS 保护。通过与 CloudTrail 集成,可以将包的获取和发布操作日志作为审计跟踪记录。 关于安全与访问控制的具体实现方法,也可以参考Amazon 的相关书籍。
与 CI/CD 流水线的集成
CodeArtifact 可以与 CodeBuild、CodePipeline、GitHub Actions、Jenkins 等主流 CI/CD 工具无缝集成。可以轻松构建在构建时从 CodeArtifact 获取依赖包、将构建产物发布到 CodeArtifact 的工作流。认证令牌通过 AWS CLI 获取,通过有时效的令牌安全地提供临时访问。
注意事项
- 从公共仓库获取的包通过上游连接自动缓存,但首次获取时需要访问公共仓库
- 认证令牌默认有效期为 12 小时,长时间构建过程需要考虑令牌刷新