基于OpenZiti零信任系统的搭建 📅 发布时间:2026/7/4 9:02:34 👁️ 浏览次数: 张绪舜一、什么是零信任系统零信任是一种软件定义网络安全模式是一套指导安全架构设计的原则。它通过身份、设备、网络、应用和数据等多个维度的持续校验构建起一道动态的纵深防线。远程办公、混合云构架、互联应用的广泛使用导致传统的网络边界越来越模糊持续性威胁和内部信息泄露频发也导致管理员疲于应付同时数据保护法规趋严要求医疗机构具备更精细的安全访问控制能力。因此建立一套零信任安全访问体系对提高医院信息和数据安全有很大促进作用。二、什么是OpenZitiOpenZiti 是一个免费的开源项目专注于将零信任网络原则直接融入到任何应用程序中。该项目提供了实现零信任覆盖网络所需的全部组件以及将零信任集成到您现有解决方案中的所有必要工具。对医疗机构来说最重要的是需要将零信任融入到各种应用场合如急诊急救系统、掌上医院、移动办公等应用目的是医院不再对外开放任何业务应用端口。下图是基于OpenZiti的零信任构架整个业务流程是内网的应用服务端通过安全隧道经过OpenZiti的网络控制器认证后和边界路由器建立安全通道。客户端经过OpenZiti的网络控制器认证后告知边界路由器充许和此客户端建立连接客户端通过安全隧道或者是OpenZiti的SDK和边界路由器建立连接。网络按制器通过安全策略控制服务的连通满足策略要求则客户端和应用服务端建立连接。如医院常用应用场景掌上医院需进行挂号或缴费业务传统模式是在防火墙上开通相应端口移动终端应用通过此端口进行访问。现在掌上医院通过OpenZiti的SDK安全模块经过安全认证实现和边界路由器建立安全通道从而实现和医院内网的通信。三、基于docker容器的OpenZiti布署1、镜像下载docker pull openziti/quickstart:latest2、创建一个卷docker volume create zxsPersistentZitiFiles3、创建容器网络docker network create zxsFirstZitiNetwork4、运行控制器docker run \--name ziti-controller \-e ZITI_CTRL_ADVERTISED_ADDRESSziti-edge-controller \--network zxsFirstZitiNetwork \--network-alias ziti-controller \--network-alias ziti-edge-controller \-p 1280:1280 \-v zxsPersistentZitiFiles:/persistent \openziti/quickstart \/var/openziti/scripts/run-controller.sh边界路由器创建完毕后会生成一个admin的密码需要记住Do you want to keep the generated admin password 7zqqDZyWLyACYd6cIeIMG4dspl8-_DjU? (Y/n),下面登录ZAC时需要此密码。5、创建边界路由器策略docker run \--network zxsFirstZitiNetwork \--network-alias ziti-controller-init-container \-v zxsPersistentZitiFiles:/persistent \openziti/quickstart \/var/openziti/scripts/run-with-ziti-cli.sh /var/openziti/scripts/access-control.sh6、创建边界路由器docker run \--name ziti-edge-router-1 \-e ZITI_ROUTER_NAMEziti-edge-router-1 \-e ZITI_ROUTER_ADVERTISED_ADDRESSziti-edge-router-1 \-e ZITI_ROUTER_ROLESpublic \--network zxsFirstZitiNetwork \--network-alias ziti-edge-router-1 \-p 3022:3022 \-v zxsPersistentZitiFiles:/persistent \openziti/quickstart \/var/openziti/scripts/run-router.sh edge7、创建第二个边界路由器docker run \--name ziti-edge-router-2 \-e ZITI_ROUTER_NAMEziti-edge-router-2 \-e ZITI_ROUTER_ADVERTISED_ADDRESSziti-edge-router-2 \-e ZITI_ROUTER_PORT4022 \-e ZITI_ROUTER_ROLESpublic \--network zxsFirstZitiNetwork \--network-alias ziti-edge-router-2 \-p 4022:4022 \-v zxsPersistentZitiFiles:/persistent \openziti/quickstart \/var/openziti/scripts/run-router.sh edge网络控制边界和边界路由器最好是安装在不同网络位置比如网络控制器安装在trust区边界路由器安装在DMZ区。本人因测试是安装在CentOs stream 9同一台虚拟机上。四、安全认证和策略的创建下面是我基于RDP创建的相关认证和策略# 1. 创建服务配置 - 主机配置(host.v1) - 指定后端真实地址ziti edge create config rdp.hostv1 host.v1 \{protocol:tcp, address:192.168.10.2, port:3389, forwardProtocol: true,forwardPort: true,allowedProtocols: [tcp, udp]}# 2. 创建服务配置 - 拦截配置(intercept.v1) - 定义客户端访问的地址ziti edge create config rdp.clientv1 intercept.v1 \{protocols:[tcp], addresses:[rdp.internal], portRanges:[{low:3389,high:3389}]}# 3. 创建服务关联两个配置ziti edge create service rdp-service \--configs rdp.hostv1,rdp.clientv1 \--role-attributes rdp-services# 4. 创建身份 - 服务端托管服务ziti edge create identity device rdp-app-server \#定义服务端的身份认证-a rdp-servers \-o rdp_app-server.jwt #证书# 5. 创建身份 - 客户端访问服务ziti edge create identity user rdp_home \ #定义客户端的身份认证-a rdp-clients \-o rdp-device.jwt #证书# 6. 创建服务策略 - Bind策略谁可以提供服务ziti edge create service-policy rdp.bind Bind \--service-roles rdp-service \ #第三步创建的服务名--identity-roles #rdp-servers #服务端身份属性# 7. 创建服务策略 - Dial策略谁可以访问服务ziti edge create service-policy rdp.dial Dial \--service-roles rdp-service \ #第三步创建的服务名--identity-roles #rdp-clients #客户端身份属性# 8. 创建边路由器策略 - 允许身份使用边路由器ziti edge create edge-router-policy rdp-app-router-policy \--edge-router-roles #all \--identity-roles #rdp-servers,#rdp-clients #服务端身份属性#客户端身份属性# 9. 创建服务边路由器策略 - 允许服务通过边路由器ziti edge create service-edge-router-policy rdp-app-service-router-policy \--edge-router-roles #all \--service-roles rdp-service #第三步创建的服务名# 10. 验证策略是否生效ziti edge policy-advisor services rdp-service #第三步创建的服务名五、服务端安装因为我们测试的是RDP服务测试的是我办公室和我家里电脑的RDP连接1、在防火墙是对网络控制器端口1280、3022、4022进行NAT转换和安全策略设置2、办公室电脑安装Ziti.Desktop.Edge.Client-2.2.2.exe客户端同时在HOSTS文件中加入 192.x.x.91 ziti-edge-controller ziti-edge-router-1 ziti-edge-router-2 进行域名解析导入服务端身份 app-server.jwt证书3、同样在家庭电脑中安装Ziti.Desktop.Edge.Client-2.2.2.exe客户端同时在HOSTS文件中加入 61.x.x.29 ziti-edge-controller ziti-edge-router-1 ziti-edge-router-2 进行域名解析导入客户端身份 rdp-device.jwt证书这样家中电脑与办公室电脑就可以进行远程桌面访问了六、linux服务端相关ziti-edge-tunnel安装和设置。1、# 安装ziti-edge-tunnelcurl -sSf https://get.openziti.io/install.bash | /bin/bash -s ziti-edge-tunnel如果你是基于这种方式安装的第2步到第4步均可省略了因为我这一步没有成功所以采取了下列方式。2、#下载二进制文件wget https://github.com/openziti/ziti-tunnel-sdk-c/releases/latest/download/ziti-edge-tunnel-linux-amd64chmod x ziti-edge-tunnel-linux-amd64 改变权限sudo mv ziti-edge-tunnel-linux-amd64 /usr/local/bin/ziti-edge-tunnel #移动位置3、# 创建身份和日志目录sudo mkdir -p /etc/openziti/identitiessudo mkdir -p /var/log/openzitisudo mkdir -p /etc/openziti/config4、# 设置权限sudo chmod 755 /etc/openziti/identities5、创建服务sudo vim /etc/systemd/system/ziti-edge-tunnel.service将下列服务相关内容考入到此文件中[Unit]DescriptionOpenZiti Edge TunnelAfternetwork.targetWantsnetwork.target[Service]TypesimpleUserrootGrouprootExecStart/usr/local/bin/ziti-edge-tunnel run --identity-dir /etc/openziti/identities --log-file /var/log/openziti/ziti.logExecReload/bin/kill -HUP $MAINPIDKillModemixedKillSignalSIGINTRestarton-failureRestartSec5LimitNOFILE65535[Install]WantedBymulti-user.target#启动服务# 重新加载 systemdsudo systemctl daemon-reload# 启动 Ziti 隧道sudo systemctl start ziti-edge-tunnel# 设置开机自启sudo systemctl enable ziti-edge-tunnel# 查看状态sudo systemctl status ziti-edge-tunnel# 查看日志sudo journalctl -u ziti-edge-tunnel -f6、# 注册身份ziti-edge-tunnel enroll --jwt my-app-server.jwt --identity /opt/openziti/etc/identities/my-app-server.json这样基于linux的ziti-edge-tunnel端就安装好了七、ZAC安装ZAC影像文件下载dockerpull openziti/zac:latestZAC启动启动ZAC之前需要将证书文件从控制器目录拷到下面命令指定的目录运行ZACdocker run --name zac \-p 1408:1408 \-p 8443:8443 \--network zxsFirstZitiNetwork \-e ZAC_CONTROLLER_URLShttps://ziti-edge-controller:1280 \-v zxsPersistentZitiFiles:/persistent \-e ZAC_SERVER_KEY/persistent/pki/ziti-edge-controller-intermediate/keys/ziti-edge-controller-server.key \-e ZAC_SERVER_CERT_CHAIN/persistent/pki/ziti-edge-controller-intermediate/certs/ziti-edge-controller-server.chain.pem \openziti/zac登录ZAC输入运行控制器时生成的密码登录4、进入首页界面我们在ZAC图形化界面中可以进行证书的生成服务、安全策略的制定当然这些内容也可以通过上面的命令在网络控制器中生成。以上就是基于OpenZiti的零信任的搭建和应用的举例基于OpenZiti SDK应用的开发本人将下一步研究后分享给大家。
基于大数据的房屋租赁市场数据分析 目录数据收集与清洗特征工程构建分析模型搭建可视化呈现市场趋势预测项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作数据收集与清洗 从公开数据源(如政府开放数据、房产平台API࿰… 2026/5/17 9:26:39
【航天存储】推荐!行业靠谱品牌排名,高低性能任你选? 朋友,在航空航天、国防和高端工业这些高大上的领域里,存储设备那可是至关重要的存在。就好比人的大脑,得能稳稳地存东西,还得在各种极端环境下正常工作。今天我就来给大家聊聊航天存储这个话题,再给大家推荐一些靠谱的… 2026/7/3 5:26:12
2026年,你的客户不再百度了——他们直接问ChatGPT 一个正在发生的变化上个月,一位做连锁烘焙店的朋友跟我吐槽:他花了3万块做百度推广,效果却越来越差。点击量没怎么降,但到店转化率掉了将近一半。他一开始以为是落地页的问题,后来才发现真正的原因——他的目标客户根本… 2026/5/17 9:26:38
X平台账号运营全攻略:从注册到商业变现 1. X平台账号运营基础认知 在当今社交媒体生态中,X平台(原Twitter)作为全球性的信息传播渠道,其账号运营已成为个人品牌建设和商业推广的重要阵地。不同于其他社交平台,X平台的风控机制更为敏感,这就使得账… 2026/7/4 22:38:41
专科生高效学习指南:精选AI工具与避坑策略 1. 项目概述作为一名在AI工具领域深耕多年的从业者,我经常收到专科院校学生的咨询:如何在有限的学习时间内,高效利用AI工具提升学习效率?经过长期实践和系统测试,我整理出这份针对专科生的AI工具避坑指南,重… 2026/7/4 22:38:41
2026年AI科研工具全景解析与实战指南 1. 前沿AI科研工具全景概览2026年的AI研究领域正经历着前所未有的技术迭代浪潮。作为一名长期跟踪AI工具演进的从业者,我亲历了从早期TensorFlow独霸天下到如今工具生态百花齐放的转变过程。当前最显著的变化是:专用型工具正在取代通用框架,自… 2026/7/4 22:36:38
AI开发工具实战:从代码生成到架构设计 1. 从代码补全到架构设计:AI如何重塑开发流程十年前我第一次接触代码自动补全功能时,那种惊喜感至今记忆犹新。当时绝不会想到,有朝一日AI能帮我生成完整函数、调试复杂逻辑,甚至参与系统架构设计。如今在GitHub Copilot的帮助下&… 2026/7/4 22:34:37
基于TPAFE0808与PIC18F47Q10的多通道信号采集系统设计 1. 项目背景与核心需求在工业自动化和嵌入式控制领域,多通道信号采集与系统监测一直是关键的技术挑战。传统方案往往需要多个分立元件组合实现,不仅增加了系统复杂度,还带来了信号干扰和功耗问题。TPAFE0808作为一款8通道模拟前端芯片&#x… 2026/7/4 22:34:37
嵌入式系统电压管理方案:KMR221与PIC18LF46K40实战 1. 项目背景与核心需求在嵌入式系统开发中,精确的电压管理一直是个让人头疼的问题。我最近接手的一个工业传感器项目就遇到了这个难题——需要在严苛环境下维持稳定的3.3V工作电压,同时还要兼顾低功耗特性。经过多次方案迭代,最终选用了KMR22… 2026/7/4 22:34:37
STM32F745VG与MC6470 IMU的高性能姿态控制系统设计 1. MC6470与STM32F745VG的黄金组合解析在工业自动化和机器人控制领域,传感器与微控制器的协同工作能力直接决定了系统的响应速度和定位精度。MC6470作为一款6自由度惯性测量单元(6DOF IMU),与STM32F745VG这款基于ARM Cortex-M7内核的高性能微控制器组合&… 2026/7/4 0:00:28
Playwright自动化测试实战:从零搭建现代Web测试框架 1. 项目概述:为什么是 Playwright?如果你正在为现代 Web 应用的自动化测试头疼,尤其是面对那些充斥着动态加载、复杂交互的单页应用(SPA),那么 Playwright 的出现,很可能就是你的解药。我接触过… 2026/7/4 0:00:28
终极指南:如何将JSXBIN二进制文件转换为可读JSX源代码 终极指南:如何将JSXBIN二进制文件转换为可读JSX源代码 【免费下载链接】jsxbin-to-jsx-converter JSXBin to JSX Converter written in C# 项目地址: https://gitcode.com/gh_mirrors/js/jsxbin-to-jsx-converter 你是否曾经面对过Adobe产品的JSXBIN文件感到… 2026/7/4 0:02:28