由于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开源项目通过One Identity GitHub issues和One 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镜像:
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
bash$ docker pull 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可停止监控。来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429