将 IBM Cloud Object Storage 存储区用作证据锁定程序
您可以配置 IBM Cloud Object Storage (COS) 存储桶来存储由集成到 管道 DevSecOps 中的合规性检查生成的证据。 合规性证据将创建审计人员在合规性审计期间查找的审计跟踪。 的目标之一 DevSecOps 是在可审计的证据存储库中实现证据的自动化生成与存储。 有关更多信息,请参阅 证据锁定程序。
合规性自动化管道将以下信息存储在 COS 存储区中:
- 任务工件
- 测试结果,扫描结果或任务的任何已保存输出。
- 任务日志
- 管道运行后,该运行的日志将发送到证据锁定程序。
- 证据
- 有关任务及其结果输出的信息,可以是失败或成功。 有关所发送证据的格式的更多信息,请参阅 证据摘要。
配置存储区
必须先创建专用云 Object Storage 实例,然后才能设置持续集成或持续部署工具链。 此 COS 存储区用于与合规性相关的存储,因为必须在应用程序的边界内创建证据存储库。 这有助于提高管道的弹性。 有关更多信息,请参阅 弹性。
要将云 Object Storage 存储区配置为作为持续集成或持续部署管道的一部分充当合规性证据锁定程序,您可以使用以下信息作为指南。 管道或工具链模板脚本未在 Cloud Object Storage中设置锁定程序。
有关使用云 Object Storage 作为合规性证据的注意事项(粒度、安全性......)的更多信息,请参阅 本页。
保留时间策略
您可以设置云 Object Storage 存储区以对已上载的对象实施保留时间策略或时间段,也称为 不可变 Object Storage。 不可变对象存储器会保留电子记录,并维护数据完整性。 数据保留政策确保数据以“一次写入、多次读取”(WORM)的方式存储,且不可擦除、不可重写。 不能在保留期内更改或删除受保护存储区中的对象,也不能在保留期结束之前删除具有对象本身的受保护存储区。 该政策将一直执行至保留期结束且所有法律保留要求被解除为止。
建议团队为存储区设置保留策略,这些存储区用作存储每个对象至少 365 天的证据锁定程序。
存储区访问许可权
在 DevSecOps 环境中使用云管道时,证据、证据摘要和人工制品等对象要么被导入,要么从 IBM Cloud Object Storage (COS)中的存储桶中读取。 工具不会创建、更新、删除或更改任何对象或存储桶。
为了确保安全访问您的云 Object Storage 存储空间,同时方便必要的管道操作,请遵循以下访问政策:
-
读者。
- 此权限确保 Continuous Delivery (CD)管道能够在不修改任何数据的情况下验证存储桶的保留设置。
- 需要阅读CI流程生成的证据
-
对象写入器。
- 此权限允许持续集成(CI)、CD和配置控制(CC)管道将新对象上传到存储桶或写入存储桶。
创建服务凭据的步骤
要使用云管道访问您的COS存储桶,请执行以下操作:
- 导航至服务凭证:
- 请访问 IBM Cloud 中的 服务证书 部分。
- 创建新凭据:
- 点击“创建”,按照提示为您的COS存储桶创建一个新的服务凭证。
COS Bucket访问权限分配步骤
为您的COS存储桶分配适当的访问权限:
- 导航至IAM Bucket权限:
- 请访问 IBM Cloud 中的 COS桶权限 部分。
- 分配角色和策略:
- 为CD管道分配 “阅读器”角色,用于检查保留策略。
- 将对象写入器角色分配给CI、CD和CC管道,以便将证据写入存储桶。
当您使用云 Object Storage 存储桶作为证据存储时,建议设置为读取者和对象写入者权限。 应避免使用权限更高的权限(例如管理员级别的访问权限),以防止意外或恶意修改您的对象。
存储类
具有不同设置和部署频率的团队的成本各不相同。 建议不要将免费层用作云 Object Storage 存储区,因为无法将免费层配置为不可改变。
样本估计
如果您正在使用引用连续集成或连续部署管道,每个管道包含六个证据,那么单个连续集成和连续部署运行对将发出 37 个 A 类请求和 6 个 B 类请求。
- 持续集成会写入 6 个日志,6 个工件和 6 个证据,这等于 18 个 PUT-Class A。
- 持续部署会读取 6 个证据 (6 个 GET-Class B),写入 6 个证据,6 个日志,6 个工件和一个摘要,这等于 19 个 PUT-Class A。
通过平均 5 个微服务 (5 个连续集成) 和 4 个部署区域 (4 个连续部署),一个完整部署等于 166 个 A 类和 24 个 B 类请求。
通过每周一次完整部署 (每月四次),您可以计算每月 664 个 A 类和 96 个 B 类请求。
收集的数据量因用例而异。 使用证据 (1 kB),测试工件 (100 kB) 和日志 (15 kB) 的平均大小,您可以计算每月创建和传输的数据的 0.01 GByte。
弹性
如果需要保持在边界内,建议您使用 Cross-Region 或 Regional 弹性。 有关这些区域的更多信息,请参阅 端点和存储位置。
存储区名称
云 Object Storage 存储区名称必须全局唯一且符合 DN。 名称长度必须为 3-63 个字符,并且必须包含小写字母,数字和短划线。 存储区名称必须以小写字母或数字开头和结尾。 不允许使用类似 IP 地址的名称。 存储区名称在整个 IBM Cloud Object Storage 系统中是唯一的,它们不能包含任何个人信息,例如名称或地址的任何部分,财务,安全帐户或 SSN。
存储区名称必须唯一,因为公共云中的所有存储区都共享一个全局名称空间。 此要求允许在无需提供任何服务实例或账户信息的情况下访问存储桶。 此外,无法创建名称以 cosv1- 或 account- 开头的存储桶,因为这些前缀已被系统预留。
端点
将 private 端点用于源自 IBM Cloud® 中的大多数请求,并将 public 端点用于源自 IBM Cloud®外部的大多数请求。 有关更多信息,请参阅 端点类型。
对于在伦敦区域中运行的管道,由于那里的管道管理的工作程序基础结构,请使用 direct 端点。
使用COS桶配置工具链
为了存储证据、资产和附件,请在您的管道中配置COS桶。 由于该存储桶用于保存现有信息,因此应具有 Reader 和 Object Writer 访问权限。 在管道中配置此桶。
环境 COS 桶配置属性 |名称 |类型 |描述 |必需或可选 | 锁定或解锁 | |:----------|:------------------------------|:------------------|:----------|:----------| |
cos-api-key | SECRET | Cloud Object Storage API 密钥。| 必填 | 已锁定 | |
cos-access-key-id | SECRET | 来自HMAC凭证的 Cloud Object Storage 访问密钥ID。 (与 cos-secret-access-key 一起提供,而不是 cos-api-key )| 必填 | 已解锁 | |
cos-secret-access-key | SECRET | 来自HMAC凭证的 Cloud Object Storage 秘密访问密钥。 (与 cos-access-key-id 一起提供,而不是 cos-api-key )| 必填 | 已解锁 | |
cos-bucket-name | 文本 | Cloud Object Storage 实例中用作证据保管箱的存储桶名称。| 必填 | 已解锁 | |
cos-endpoint | text | 从用作证据保管箱的 Cloud Object Storage 实例中读取证据的端点。 更多信息,请参阅 端点类型。| 必填 | 已解锁 |
在所有管道CI/CD/CC中配置相同的存储桶。
从 Git 证据保管库迁移至COS证据保管库
为提升构建性能、可靠性和可扩展性,已弃用基于 Git 的证据存储库支持。 迁移至基于 Cloud Object Storage (COS)的证据存储库有助于减少对 Git (操作)的依赖,并避免因( Git hosting 提供商)的速率限制问题。
所有用户都应更新其工具链和管道,以使用COS证据存储库。
当您的工具链仅使用证据 Git 存储库时
请按照以下步骤完成迁移:
- 为您的工具链配置COS证据存储库
- 从所有管道中移除环境
evidence-repo属性。 - 从您的工具链中移除与证据存储库相关的集成 GitHub/GitLab。
当您的工具链同时使用 Git 和 COS 证据保险柜时
如果你已经同时配置了这两项:
- 从所有管道中移除环境
evidence-repo属性。 - 从您的工具链中移除与证据存储库相关的集成 GitHub/GitLab。
为CD管道迁移至 Git COS证据存储库做准备
如果您的持续集成(CI)和持续交付(CD)管道依赖于证据 Git 存储库,则必须引导CD管道使用COS证据存储库。 您可以选择以下方法之一。
方法1:同时使用两个证据存储库进行引导
在此方法中,COS证据存储库处于启用状态,而证据 Git 存储库仍保持配置状态。 同时运行两者可使COS证据存储库通过证据 Git 存储库实现自动引导。
- 保持证据柜 Git 配置不变。
- 启用COS证据存储库。
- 使用早于版本的管道定义运行 v10.46.1 CD管道(推荐:v10.45.0 )。
- 运行完成后,请按照先前所述步骤 Git 移除证据存储库配置。
方法二:不使用 Git 证据锁定器的自举
若您希望实现干净的迁移而不依赖于 Git.,请采用此方法。
- 删除证据 Git 存储柜配置。
- 执行一次性的CD管道运行,
force-redeploy参数设置为true。 - 运行完成后,将参数重置
force-redeploy为false或完全移除该参数。
此一次性CD管道执行确保COS证据存储库中填充所有现有库存资产。 只需执行一次初始化操作,您即可。 若您不希望触发实际部署,可跳过部署和验收测试阶段,直接运行持续交付管道而不执行任何部署操作。
您可在移除后选择归档证据 Git 库,因其将用于审计目的。
从一个COS桶迁移到另一个COS桶
从一个COS存储桶迁移到另一个COS存储桶 如果您是COS证据保管箱的现有用户,需要从一个COS存储桶迁移到另一个,请务必确保平稳过渡,不要中断您的工作流程。 以下是COS桶之间迁移的步骤和注意事项。
移民原因:
- 组织架构重组:您可能想停止使用一个COS桶,并开始使用另一个。
- 账户迁移:由于组织变更或合规要求,可能需要将账户从一家公司迁移到另一家公司。
迁移步骤:
配置备份-COS存储桶:如果您要从旧的COS存储桶迁移到新的存储桶,请确保您的管道配置为同时使用新旧存储桶。 这样,您就可以在不影响现有工作流程的情况下顺利迁移。
- 按照上述步骤创建新的COS Bucket。
- 配置 IAM 策略:确保新的 COS 存储桶具有必要的 IAM 策略,以便根据您的流水线要求进行读取器和对象写入器访问。
- 更新环境变量
在 IBM 工具链中,更新环境变量,使其同时包含旧的和新的COS存储桶。 要配置旧存储桶,请在所有COS环境属性中使用 backup-前缀,并使用常规属性来配置新的COS存储桶。
| 名称 | 类型 | 描述 | 必需或可选 | 锁定或解锁 |
|---|---|---|---|---|
backup-cos-api-key |
Secret | 备份 Cloud Object Storage API密钥。 | 必需 | 已锁定 |
backup-cos-access-key-id |
Secret | 来自HMAC凭证的备份 Cloud Object Storage 访问密钥ID。 (请使用 backup-cos-secret-access-key,而不是 backup-cos-api-key ) |
必需 | 已解锁 |
backup-cos-secret-access-key |
Secret | 来自HMAC凭证的备份 Cloud Object Storage 秘密访问密钥。 (请使用 backup-cos-access-key-id,而不是 backup-cos-api-key ) |
必需 | 已解锁 |
backup-cos-bucket-name |
文本 | Cloud Object Storage 实例中用作证据保管箱的备份存储桶的名称。 | 必需 | 已解锁 |
backup-cos-endpoint |
文本 | 从用作证据保管箱的备份 Cloud Object Storage 实例中读取证据的终端。 更多信息,请参阅 端点类型。 | 必需 | 已解锁 |
在 365 天内不要删除旧水桶,因为需要对其进行审计。
管道运行缓慢的故障排除指南
force-redeploy不应设置为 true,除非是重新部署所有条目。- 推广管道 应用于推广正确的 delta 集,以便正确计算 delta。
- 如果看到这样的行,说明 CI 管道没有生成正确的摘要。 返回 CI 管道,检查在创建迷你摘要到完成步骤时是否有任何错误。