HashiCorp Vault
从现有 Vault KV 密钥获取凭据。
将凭据与代码分开存储。跨仓库、清单和作业重用命名密钥,并选择适合基础设施的密钥来源。
将 SSH 密钥、登录名与密码对,以及字符串密钥保存在 Semaphore 加密的 Key Store 中。它们可用于 Git 访问、主机连接和 Ansible Vault 密码。
需要其他来源?可以从服务器环境变量或文件读取凭据、将密钥库中的密钥同步到 Key Store,或在变量组中将密钥值与共享配置结合使用。
在内置 Key Store 中保存命名密钥或登录名与密码凭据,无需将值添加到自动化代码中即可重用。
使用地址和身份验证设置连接外部密钥库。如果 Semaphore 仅需读取密钥,请选择只读访问权限。
选择要导入的远程路径、设置命名前缀,并选择自动同步间隔,让导入的 Key Store 条目与来源保持一致。
通过作业的仓库、清单和 Ansible Vault 引用使用所需凭据。模板为下次运行保留完整配置。
将 API 令牌和密码保存在组的 Secrets 选项卡中,再将变量组关联到需要这些值的任务模板。
Key Store 保存操作实际需要的凭据类型,包括受管主机的 SSH 密钥和登录信息、私有 Git 仓库访问、sudo 密码,以及 Ansible Vault 密码。模板指向相应条目,工程师配置和查看名称,值则无需出现在仓库或任务表单中。当配置访问密钥加密时,本地值会在数据库中加密,因此加密配置和恢复途径属于备份流程的一部分,而不是可忽略的设置。
环境和文件来源可让 Key Store 条目在任务需要时从 Semaphore 服务器读取值,而不是在数据库中保存副本。如果另一进程已将更新后的凭据写入主机,应采用这一路径:轮换来源后,下一个任务即可获取新值,无需任何人编辑模板。即使任务由远程运行器执行,这些来源仍由 Semaphore 服务器解析,因此文件无需存在于运行器上。文件来源遵循配置的密钥目录和文档规定的 JSON 格式;SSH 或登录条目使用这种封装格式,而不是原始密钥文件。
变量组将共享配置与密钥值结合起来。密钥输入应引用已保存凭据,而不是在每个作业中重复。使用相应工具要求的变量名,将变量组传给 Ansible、Terraform、OpenTofu 或脚本。
通过 Pro 引用 HashiCorp Vault 或 OpenBao 中的密钥。Enterprise 添加 AWS Secrets Manager、CyberArk 和 Devolutions Server 等受支持的集成。将密钥保留在其归属系统中,并使用文档所述的提供程序配置,让自动化能够获取它。
妥善存储某个值,并不能控制代码如何使用它。Playbook 或脚本可能通过调试任务、命令参数或 API 响应将密钥写入输出,并不保证所有此类值都会从任务日志中移除。请使用工具自身的保护功能,例如 Ansible 的 no_log,同时审查失败和成功输出,并将日志与导出记录的访问权限视为对其所含全部内容的访问。
任务 JWT 为单次执行提供已签名身份。接收服务可以验证签发者、受众和声明,无需向每个作业共享长期令牌。请在双方配置信任关系;对于仍需传统凭据的系统,SSH 密钥、密码和密钥库引用依然可用。
使用命名 Key Store 凭据访问私有仓库、受管主机或提供 Ansible Vault 密码。自动化代码和非敏感配置保留在 Git 中,模板引用所需凭据。与将值嵌入脚本相比,引用更便于重用和轮换,但仍需保护可执行源码的编辑权限,因为代码会使用提供给它的访问能力执行。
不是。Ansible Vault 用于保护加密的 Ansible 内容;任务模板可以使用 Semaphore Key Store 中的 Vault 密码将其解密。HashiCorp Vault 是 Pro 提供的独立外部 Key Store 密钥存储选项。本页录制的预检查演示的是 Ansible Vault 密码方式,而不是连接 HashiCorp Vault。用于实际运维之前,请使用可丢弃的凭据单独评估该外部存储。
本地 Key Store 值使用已配置的访问密钥加密机制存入数据库。请正确配置并保护加密设置,将恢复要求纳入备份流程。静态加密只是整体设计的一部分,经过授权的执行仍需使用凭据。应保护服务器、运行时、管理访问和日志,而不是将加密的数据库值视为任何代码或工程师都无法访问的内容。
文档所述环境和文件来源由 Semaphore 服务器在任务需要密钥时解析,远程运行器执行时也是如此。文件来源必须符合允许的密钥目录配置和文档规定的值格式。后续任务可以获取已轮换的来源值,无需重写模板。不要假定只需将原始密钥文件放在运行器上,就实现了这种服务器端来源机制。
可以。Pro 支持 HashiCorp Vault 和 OpenBao 作为外部密钥来源,Enterprise 添加其他受支持的密钥管理器集成。配置提供程序,通过 Key Store 引用凭据,不要将值提交到 Git。按照提供程序指南设置认证与密钥路径,再使用预期凭据测试作业。
模板引用命名凭据,而不是为每个作业嵌入独立密码或密钥。更新凭据或其配置的来源,再检查引用它的仓库和清单。轮换后测试代表性任务,以便在下次定时生产运行之前发现认证失败。
不要依赖普遍适用的敏感信息掩码保证。Playbook 或脚本可能将敏感变量、命令参数或 API 响应打印到输出中。请有意识地设计日志,使用相应工具的密钥处理选项,并同时检查有代表性的失败和成功输出。根据内容限制日志和导出记录的访问权限。安全存储某个值,并不能控制执行代码打印的全部内容。
可以。在 Key Store 中为凭据命名,并在仓库、清单或模板需要该类型凭据时选择它。作业引用已配置的条目,不必在 Git 中各自保存副本。目标系统需要不同身份时,请使用独立凭据。查看任务模板。