
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
由于Safeguard for Privileged Passwords中SignalR技术的升级,DevOps密钥代理(Safeguard Secrets Broker for DevOps)的SignalR客户端版本也需同步升级。用于监控密码变更事件的升级后SignalR技术不向后兼容旧版本,因此1.5.0及以上版本的DevOps密钥代理仅兼容Safeguard for Privileged Passwords 6.8.0及以上版本。DevOps密钥代理1.0.0版本必须搭配Safeguard for Privileged Passwords 6.7.0及以下版本使用。
DevOps对不同人可能有不同含义,明确我们所说的“保障DevOps安全”的具体范畴至关重要。
DevOps是软件开发团队与运维团队之间用于构建、测试和发布软件的自动化形式,旨在实现速度与弹性。通常,人们将DevOps与SaaS解决方案部署到云环境的自动化联系起来,但DevOps也可以简单到源代码仓库钩子触发构建服务器检出并构建.NET库,再推送到NuGet服务器。
One Identity开源项目通过https://github.com/OneIdentity/SafeguardDevOpsService/issues%E5%92%8COne Identity社区提供支持,包括所有脚本、插件、SDK、模块、代码片段或其他解决方案。如需协助,可在GitHub项目页面提交新Issue,或访问One Identity社区提问。通过官方One Identity支持渠道提交的协助请求将被引导至GitHub和社区论坛,以便所有用户受益。
DevOps技术面临以下安全挑战:
上述所有安全问题均涉及资源访问限制,而访问控制需要身份验证。系统必须能识别请求者或确认其可信度才能做出访问控制决策,此过程通过密钥完成——拥有密钥即证明请求者可信(密钥可以是密码、私钥、API密钥等)。
DevOps中,请求者是自动化流程而非人类,导致基于密钥的身份验证更复杂。DevOps场景对速度要求高,自动化流程无法等待传统PAM中的手动审批(发布门控除外)来获取密钥。
最简单的DevOps自动化方式是使用静态嵌入密钥,但安全合规要求密钥需安全存储并定期轮换,且需安全交付给自动化流程(构建系统、编排器、脚本等)。此外,开发人员可能在代码、配置文件或虚拟机中嵌入密钥,导致IT组织担忧影子IT风险。
Safeguard推荐的最佳实践是将安全性较低的DevOps环境与PAM环境完全隔离,实现“零访问”PAM环境。解决方案核心是让Safeguard“推送密钥到DevOps”:
!SafeguardDevOpsService
Safeguard提供A2A(应用到应用)REST API和核心REST API(图中标记为Config),用于配置A2A服务及其他Safeguard服务,还提供用于访问这些API的.NET Standard 2.0开源SDK。
开源组件,可部署为服务或容器,包含可扩展插件以与多种DevOps技术集成。该服务发现配置为推送到不同DevOps技术的A2A密钥。
单页Web应用,用于引导DevOps密钥代理与Safeguard之间的身份验证配置。
为从TPAM迁移的Safeguard客户设计的新PARCache服务。
,可在Linux系统下载部署。
部署Docker镜像
以下命令下载并部署密钥代理Docker镜像:
bash$ docker run -it -p 443:4443 --cap-add NET_ADMIN oneidentity/safeguard-devops
-p 443:4443将内部端口映射到外部443。如需映射至其他外部端口,替换443为目标端口。--cap-add NET_ADMIN参数在外部端口为特权端口(<1024)时必需。设置环境变量
初始化时可通过环境变量控制调试级别和数据库加密。出于安全考虑,建议通过here-document传递环境变量:
bash$ docker run -it -p 443:4443 --cap-add NET_ADMIN --env-file <(cat <<EOF SSBEncPasswd=thisisapasswordformyencrypteddatabase EOF ) oneidentity/safeguard-devops
更新Docker镜像
bash$ docker pull docker.xuanyuan.run/oneidentity/safeguard-devops
警告:部分Docker环境中,容器可能无法正确识别主机IP,导致A2A IP限制与主机不匹配,进而阻止密码监控启动。若
SafeguardDevOpsService.log显示监控启动失败,可通过Safeguard桌面客户端导航至设置中的“应用到应用”注册配置,编辑与密钥代理匹配的SafeguardDevOpsServer-xxx和SafeguardDevOpsServiceVaultCredentials-xxx注册,在“凭证检索”选项卡中修改限制以匹配密钥代理主机IP。此问题将在未来版本中修复。
Windows或Docker环境中,可通过环境变量控制密钥代理初始化。Windows通过appsettings.json(重命名_appsettings.json)设置,Docker通过命令行传递。可用环境变量如下:
Information,Docker默认Debug;可选值:Information、Debug、Error、Warning、Fatal、Verbose。appsettings.json修改。https://<服务IP或DNS>。!SafeguardDevOpsService
!SafeguardDevOpsService
!SafeguardDevOpsService
!SafeguardDevOpsService
证书准备:密钥代理需要两类证书(均需私钥):
安装客户端证书:
GET /service/devops/Safeguard/CSR,指定证书类型A2AClient(可选证书大小和主题名)生成CSR。POST /service/devops/Safeguard/ClientCertificate上传证书:json{ "Base64CertificateData": "<证书Base64数据>", "Passphrase": "<PFX密码>" // 仅上传带私钥的PFX时需要,否则省略 }
POST /service/devops/Safeguard/Configuration,请求体为空{}(也可在此调用中包含上述证书JSON体一并上传)。此操作将存储证书和私钥至密钥代理数据库,在SPP中创建带适当权限的DevOpsService用户,创建两个带IP限制的A2A注册,完成密钥拉取准备。配置监听端口和日志级别:
ProgramFiles\SafeguardDevOpsService目录下有示例配置文件_appsettings.json,重命名为appsettings.json后编辑:
"HttpPort": "<端口>":设置监听端口。"LogLevel": "<级别>":设置日志级别(默认Information,可选:Information、Error、Fatal、Verbose、Warning、Debug)。POST /service/devops/Plugins/File上传插件ZIP,密钥代理将自动检测、加载并注册插件。GET /service/devops/Plugins验证插件是否已部署注册。PUT /service/devops/Plugins/{name},请求体仅包含Configuration字段。例如,配置HashiCorp Vault插件:json{ "Configuration": { "address": "<hashicorp-url>", "mountPoint": "secret" } }
GET /service/devops/Safeguard/AvailableAccounts获取SPP中所有可请求的账户列表。POST /service/devops/Safeguard/A2ARegistration/RetrievableAccounts,请求体为步骤1结果中需添加的账户(可编辑移除不需要的账户)。POST /service/devops/Plugins/{name}/Accounts,请求体为步骤2结果中需映射到该插件的账户(可编辑)。对每个需拉取密码的插件重复此操作。GET /service/devops/Safeguard/AvailableAccounts获取所有可用账户。POST /service/devops/Plugins/{name}/VaultAccount,请求体为对应第三方密钥库的资产账户信息(从步骤1结果复制)。对每个插件重复此操作。调用POST /service/devops/Monitor启动监控:
json{ "Enabled": true }
"Enabled": false可停止监控。您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务