资讯动态

OpenZiti 0.17 版本全解析:Posture Check 增强、运维代理、TCP Half-Close 与 CLI 能力升级

发布时间:2026/10/5 1:42:17 来源:尧图企业网站定制
零信任网络后端认证鉴权【免费下载链接】zitiThe parent project for OpenZiti. Here you will find the executables for a fully zero-trust, programmable network OpenZiti项目地址https://gitcode.com/gh_mirrors/zi/ziti点击查看免费下载OpenZiti 是构建零信任可编程网络zero-trust, programmable network的父项目本仓库包含其控制器controller与路由器router等可执行组件。CHANGELOG.0.17.md 记录了 0.17.00.17.5 五个小版本的技术演进核心脉络围绕**姿态检查Posture Check**的强化多签名者指纹、X.Y.Z semver 版本区间匹配、CLI 运维能力的扩展--timeout/--verbose标志、基于 Unix Socket 的运行时代理 agent、TCP half-close代理语义改进以及身份注册enroll密钥算法的可配置化。读完本文你将掌握 0.17 系列中姿态检查的精确配置语法、CLI 排障技巧、运维代理的日常用法以及这些能力在当前仓库源码中的落地位置。版本总览0.17 系列的核心改进0.17 系列从 0.17.0 到 0.17.5 共发布 5 个版本主题集中在以下几类版本类型主要内容0.17.0功能TCP half-close 支持ziti edge enroll新增--keyAlg标志0.17.2功能Posture Check CLI 命令、Posture Check 强制实施enforcement、VoIP/SCTP 配置类型0.17.3修复修复姿态检查未考虑会话类型session type的问题0.17.4破坏性变更进程姿态检查改用signerFingerprints数组OS 姿态检查要求 semver 版本新增WindowsServerOS 类型0.17.5功能构建迁移至 GitHub ActionsEdge 实体 ID 由下划线改为句点CLI 新增--timeout/--verbose运维 agent 默认启用并改用 Unix Socket其中 0.17.2 与 0.17.4 引入了姿态检查的配置 API、CLI 命令与强制实施是本系列最具技术分量的部分。身份注册可选的私钥算法0.17.00.17.0 对ziti edge enroll子命令引入了一个破坏性 CLI 变更新增--keyAlgRSA|EC标志用于控制生成身份identity私钥时使用的算法ziti edge enroll --keyAlgRSA /path/to/my.jwt ziti edge enroll --keyAlgEC /path/to/my.jwt默认值为RSA。若需使用未来 Ziti 的浏览器Browser支持应选用 RSA。在该版本之前私钥生成算法被强制固定为EC本版本将选择权交给用户。该标志在当前仓库源码中落地于 ziti/enroll/enroll_identity.goenrollSubCmd.Flags().VarP(action.KeyAlg, keyAlg, a, Crypto algorithm to use when generating private key)。类似的注册流程也适用于 Edge Router见 ziti/enroll/enroll_edge_router.go其默认值在代码中通过action.keyAlg.Set(RSA)设置。运维 Agent默认启用并迁移至 Unix Socket0.17.50.17.5 将 CLI agent 的通信方式从网络套接字迁移至Unix domain socket并默认启用。controller 与 router 在运行期都可以通过ziti agent命令进行内省introspection。详见仓库 doc/ops-agent.md。基本用法Unix socket 在文件系统中体现为实际文件因此ziti agent命令必须以与 controller/router 相同的用户身份执行root 同样可用。socket 文件一般存放在临时目录命名为gops-agent.pid.sock$ l /tmp/gops-agent.* /tmp/gops-agent.29050.sock /tmp/gops-agent.3759.sockagent 命令通过以下几种方式定位目标进程只有一个 agent 进程时无需指定任何目标$ ziti agent goversion go1.18多个进程且名称不同时用进程名指定$ ziti agent goversion error: too many gops-agent process found, including [ziti-controller (pid 29050), ziti-router (pid 29425)] $ ziti agent goversion ziti-controller go1.18用 PID 指定$ ziti agent goversion 29425 go1.18若配置了网络 socket可直接指定网络地址$ ziti agent goversion tcp:my-host:10001 go1.18配置与禁用默认监听地址为/tmp/gops-agent.pid.sock可通过启动参数改为自定义 Unix socket 或网络 socketziti controller --cli-agent-addr unix:/tmp/my-special-agent-file.sock ziti controller --cli-agent-addr tcp:127.0.0.1:10001出于安全考虑应优先使用 Unix socket只有启动该应用的机器用户或 root 才能访问。agent 默认启用可通过--cliagent false关闭。可用运维操作命令说明ziti agent stack获取进程全部 goroutine 的堆栈通常输出较大可重定向到文件ziti agent stack stack.dumpziti agent gc强制执行垃圾回收ziti agent memstats查看内存统计alloc、heap、gc 等明细ziti agent goversion获取构建可执行文件所用的 Go 版本ziti agent pprof-heap抓取堆快照二进制 pprof 数据可配合go tool pprof -web heap.pprof查看ziti agent pprof-cpu进行 30 秒 CPU profiling二进制数据需重定向到文件ziti agent stats查看 goroutine 数、OS 线程、GOMAXPROCS、CPU 数等 Go 运行时统计ziti agent trace进行 5 秒运行期跟踪可用go tool trace查看ziti agent setgc percentage设置 GC 目标百分比CLI 内部 REST 客户端可配置超时与 verbose 排障输出0.17.50.17.5 针对ziti edge controller的全部子命令新增两个通用标志--timeoutn控制与 Controller 通信时内部 REST 客户端的超时时间单位为秒ziti edge controller list services --timeout30 ziti edge controller list identities --timeout10未指定时默认值为5在 0.17.5 之前该超时被硬编码为2秒。当查询数据量较大时例如返回大量实体可通过该标志适当调高超时避免请求失败。--verbose使内部 REST 客户端输出调试信息包括 HTTP 头、状态码、原始 JSON 响应数据等对故障排查非常有价值ziti edge controller list services --verbose在源码层面超时与 verbose 是作为通用选项注入到各 edge 命令中的。例如 ziti/cmd/api/options.go 中通过cmd.Flags().BoolVarP(options.Verbose, verbose, , false, ...)注册了 verbose 标志列表类命令则把 timeout/verbose 一路透传到ListEntitiesOfType见 ziti/cmd/edge/list.go乃至底层的util.EdgeControllerList。Posture Check 强制实施与 CLI 命令0.17.20.17.2 是姿态检查走向可用的关键版本它同时带来了CLI 命令与服务端强制实施逻辑。新增 CLI 命令以下命令被加入zitiCLIziti edge list posture-checks flags ziti edge delete posture-check idOrName flags ziti edge update posture-check type flags ziti edge create posture-check type reqValues flags每个命令的详细用法可通过-h查看。以 OS 姿态检查为例0.17.4 的语法ziti edge create posture-check os $postureCheckOsName -o windows:10.0.19041 -a pc1其中-o指定 OS 版本约束-a指定该检查关联的 attribute用于后续在 service policy 中按 attribute 引用。强制实施机制本版本加入了**接受姿态响应posture response**的服务端逻辑并能够通知客户端要连接某服务需要提交哪些姿态查询。姿态数据可通过如下 API 提交与查看POST /posture-response—— 提交姿态响应数据GET /identities/id/posture-data—— 查看指定身份的姿态数据重要兼容性提示一旦配置了姿态检查当时所有现有 Ziti App任何使用 Ziti SDK 的端点软件都会因尚未提交姿态响应数据而无法通过检查、无法连接服务。SDK 端提交姿态数据的能力在后续版本中才提供升级前请评估现有端点的影响面。新增配置类型intercept.v1 与 host.v10.17.2 还引入了两种用于隧道化服务的配置类型intercept.v1适用于需要以下能力的服务定义——拦截 CIDR 和/或多个地址拦截多个端口和/或端口范围使用身份拨号identity dial在托管端隧道路由器hosting tunneler上要求源 IP 伪装source IP spoofing。host.v1用于配置托管服务支持按身份绑定bind-by-identity并支持对使用intercept.v1拦截多地址的服务进行协议/地址/端口透传。这两种配置类型在当前仓库的测试与模型中均有落地例如 controller/model/fabric_only_service_test.go 中以host.v1配合address、port、protocol字段构造配置验证了托管服务绑定场景。OS 姿态检查X.Y.Z semver 与 Range 语法0.17.40.17.4 将 OS 姿态检查OS posture checks升级为支持x.y.z semver 格式的版本比较并提供灵活的Range版本区间语法。破坏性变更Ziti SDK 与 Ziti App 中的 OS 姿态检查实现必须在姿态响应的version字段中传递符合 x.y.z semver 规范的版本。不满足要求会导致姿态检查失败。对于缺少完整 x.y.z 三段数值的操作系统缺失值应使用0补齐例如10应写为10.0.0。单版本匹配直接提供不带任何操作符的版本号即可匹配单个版本例如1.0.0。条件操作符一个 condition 由「操作符 版本」组成支持的操作符如下表达式含义1.0.0小于1.0.01.0.0小于等于1.0.01.0.0大于1.0.01.0.0大于等于1.0.01.0.0、1.0.0、1.0.0等于1.0.0!1.0.0、!1.0.0不等于1.0.0排除该版本操作符与版本之间的空格会被宽松地容忍例如 1.0.0与1.0.0等价。Range 组合AND 与 OR一个 Range 可由多个条件以空格分隔组合而成逻辑 AND空格连接1.0.0 2.0.0匹配两者之间的版本即1.1.1、1.8.7可以匹配而1.0.0、2.0.0不匹配1.0.0 3.0.0 !2.0.3匹配1.0.0与3.0.0之间除2.0.3外的所有版本。逻辑 OR||连接2.0.0 || 3.0.0匹配1.x.x与3.x.x不匹配2.x.x。AND 与 OR 混用1.0.0 2.0.0 || 3.0.0 !4.2.1可匹配1.2.3、1.9.9、3.1.1不可匹配4.2.1、2.1.1。语法规则要点AND 优先级高于 OR且不支持括号。Ziti Edge API 仍然接受版本数组数组元素之间按 OR 语义处理。进程姿态检查多签名者指纹0.17.40.17.4 对进程姿态检查Process posture checks引入破坏性变更进程姿态响应中现在接受signerFingerprints数组取代原先的单个singerFingerprint字段。该变更使旧版 C-SDK 0.17.15与 Go-SDK 0.14.8无法正确响应进程姿态检查。修复了「带数字签名的二进制文件签名顺序非叶子优先leaf-leading时进程检查错误失败」的问题。该字段在当前仓库数据模型中已明确落地见 controller/db/posture_check_process_multi.goPostureCheckProcessMulti的存储字段包含FieldPostureCheckProcessMultiSignerFingerprints signerFingerprints对应ProcessMulti结构体上的SignerFingerprints []string数组写入与读取时均通过SetStringList/GetStringList以字符串列表形式持久化并在比较前通过cleanProcessMultiValues将哈希与指纹统一归一化为小写无分隔十六进制形式。新增 WindowsServer OS 类型与相关修复0.17.40.17.4 在原有Windows桌面版之外新增WindowsServer类型用于区分服务器版与桌面版 Windows 的 OS 检查。该类型在当前仓库 CLI 中可直接作为合法取值使用ziti/cmd/edge/create_posture_check.go 中进程检查的 OS 参数合法值集合为linux|macOS|windows|WindowsServerziti/cmd/edge/create_posture_check.go 中定义常量OsWindowsServer WindowsServer并在create_posture_check.go的 OS 规范化逻辑第 324 行附近中被返回ziti/cmd/edge/update_posture_check.go 的更新命令同样校验该取值。其余值得关注的变化0.17.5构建流水线与实体 ID构建系统从 travis.org 迁移至GitHub Actions。Edge 实体生成的 ID 不再使用下划线改用句点以避免在 CSR 中作为 common nameCN使用时引发问题。0.17.5非管理员可查询服务终结器修复 [edge#424]已认证的非管理员客户端也可以查询服务终结器service terminators为诊断类场景提供便利。0.17.5Windows 进程检查大小写不敏感修复 [sdk-golang#112]Windows 平台的进程检查改为大小写不敏感避免路径大小写差异导致的误判。0.17.3会话类型参与姿态检查修复了姿态检查未将**会话类型session type**纳入考虑的问题使不同会话类型下的姿态评估结果正确。0.17.4其余姿态与消息能力[edge#392]透传 AppData 消息头Pass AppData message headers。[edge#394]现有会话在失去全部姿态检查后姿态检查评估为 false从而切断不满足条件会话的服务访问。[edge#396]修复进程检查可能错误通过的问题。[edge#403]支持每个进程包含多个可执行文件签名者的签名。升级前评估清单综合 0.17 系列的破坏性变更升级或启用相关功能前应核对以下事项姿态检查强制实施0.17.2配置姿态检查后未实现姿态响应提交的旧 Ziti App 将无法连接服务需先升级端点软件。进程姿态响应字段0.17.4C-SDK ≤ 0.17.15、Go-SDK ≤ 0.14.8 无法响应新的signerFingerprints数组需升级 SDK。OS 姿态响应版本0.17.4SDK/App 必须在姿态响应中提供 x.y.z semver 格式版本缺失位补 0。enroll 私钥算法0.17.0默认算法由 EC 变为 RSA脚本化注册需显式确认--keyAlg取值。CLI 超时默认值0.17.5内部 REST 客户端超时由固定 2s 改为默认 5s大查询可显式加--timeout提升。延伸阅读运维 Agent 完整文档ziti agent全部命令与配置细节。进程多签名者姿态检查数据模型signerFingerprints字段的持久化实现。姿态检查 CLI 创建命令OS/进程姿态检查的参数定义与校验逻辑。enroll 命令实现--keyAlg标志的注册与默认值设置。赞分享零信任网络后端认证鉴权【免费下载链接】zitiThe parent project for OpenZiti. Here you will find the executables for a fully zero-trust, programmable network OpenZiti项目地址https://gitcode.com/gh_mirrors/zi/ziti点击查看免费下载相关推荐RabbitMQ 3.8.20 维护版本解析核心增强、CLI 修复与运维升级指南RabbitMQ 3.8.20 维护版本解析核心增强、CLI 修复与运维升级指南 导读 RabbitMQ 3.8.20 是 3.8 系列的一个维护版本mai后端消息队列消息路由OpenZiti 0.27 系列版本解读CLI 重构、认证策略管理、事件流式传输与运维能力升级OpenZiti 0.27 系列版本解读CLI 重构、认证策略管理、事件流式传输与运维能力升级 本文以 OpenZiti 项目 CHANGELOG.0.27.零信任网络后端认证鉴权ACE-Step UI与云服务对比为什么本地运行更有优势ACE Step UI与云服务对比为什么本地运行更有优势 ACE Step UI是一款开源的AI音乐生成工具作为Suno的替代方案它提供了专业的用户界面人工智能AI 应用音频媒体生成本地部署前端后端上一篇解决 Swagger UI Docker 部署端口冲突5 类场景的实战解法下一篇cgft-llm实战如何快速搭建自己的RAG知识库系统创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑