基于Docker的医院信息化应用研究
2024-12-12顾宇斌
关键词:Docker;医院信息化;私有云;堡垒机
0 引言
根据相关调查资料显示,我国二级以上医院信息系统中HIS系统的使用率高达93.8%,其中有43.0% 的医院同时使用HIS、PACS、CIS和EMR核心信息系统,39.4%的医院建设了医院信息平台[1]。在“十三五”期间,我国医院信息化建设取得了显著的进展和成果。随着医院信息化的不断深入,现阶段医院内网数据存在数据安全隐患、传统远程控制方式运行效率低等问题。基于Docker技术的开源私有云平台方案以及开源堡垒机平台方案,在解决医院信息化问题方面具有明显优势。
1 Docker 技术
1.1 Docker 技术概述
Docker作为一款革命性的开源容器解决方案,采用Go语言打造,代表了操作系统级虚拟化领域的最新进展。其核心优势在于,通过运用Linux内核的特性——包括命名空间(Namespace) 、控制组(Cgroups) 以及AUFS类的联合文件系统(UnionFs) ,Docker能够将单个进程及其依赖项打包成一个轻量级、可移植的容器。这些容器在逻辑上与宿主操作系统及其它容器隔离开来,从而使得应用程序能在不同环境中运行。
Docker的架构采用了客户端-服务器(C/S) 架构模式,其中Docker客户端需要通过命令行工具向Docker 守护进程或Docker服务器发出请求[2]。Docker守护进程或服务器根据请求进行镜像构建、镜像执行等工作[3],完成后再将结果返回给客户端。在Docker上运行Docker 容器与三个组件密切相关,分别是DockerImages、Docker Container和Docker Engine。
1) Docker Images:Docker镜像是用于创建Docker 容器的模板,其中包含了应用程序所需要的所有文件、库、环境变量和其他依赖库。Docker镜像可以从公有或私有仓库中获取,也可以通过编写Dockerfile 自行构建。
2) Docker Container:容器是Docker的执行单元,是动态的概念。容器提供了一个隔离的运行环境,可以在其中运行应用程序。每个容器都有自己的标识符、名称、文件系统、网络和进程空间,并且与其他容器隔离。
3) Docker Engine:Docker引擎是Docker的核心组件,负责管理和运行容器。它包括以下主要部分:Docker守护进程(dockerd) 作为后台服务运行,负责管理容器的创建、运行和停止等任务;REST API提供了与Docker引擎进行交互的接口,允许用户通过API请求来管理容器和镜像;命令行接口(CLI) 通过命令行工具与Docker引擎进行交互,方便用户操作容器和镜像。
1.2 Docker 技术的应用优势
1.2.1 流程精简
借助Docker,部署流程得以大幅简化。开发者只需要将应用程序及其所有相关依赖打包进单一容器中,形成Docker镜像,即可轻松完成部署。这一方法消除了因底层操作系统差异而引发的兼容性问题,大大减少了部署阶段的复杂度和潜在错误,使软件交付变得更加顺畅。
1.2.2 效率提升
Docker容器的便携性特性赋予了部署过程灵活性和速度。容器与宿主系统的隔离确保了它们能在任何环境下无阻碍地运行,从而免去了冗长的环境搭建和配置流程。同时,Docker容器还可以通过Dockerfile配置文件实现自动化创建和灵活部署,提高工作效率。
1.2.3 成本优化
Docker通过高效的资源管理和调度机制,极大地提高了服务器资源的利用率。这意味着在同等硬件条件下,企业能够运行更多的容器实例,有效节省硬件投入。加之Docker的开源属性和活跃的社区支持,可以有效降低企业研发和维护的成本[4]。
图1为某医院基于Docker容器化系统应用的整体架构图。
2 医院信息化建设中的一些问题
2.1 传统内网数据共享方式的安全隐患
在医院内网中,传统的文件共享方式如U盘、共享文件夹等,容易受到病毒、木马等恶意软件的感染。共享文件权限管理困难,存在数据泄露风险,且缺乏完善的审计和日志记录功能。医院内网数据需要遵守相关的法律法规和隐私保护要求,传统内网数据共享方式给医院信息安全考核带来了极大的挑战。
2.2 传统远程控制方式的不足
在没有堡垒机的情况下,医院业务系统运维工程师直接远程访问服务器可能会暴露医院数据资产,增加被黑客攻击的风险;运维操作缺乏记录和审计功能,管理员难以追踪和分析运维活动。同时,直接远程访问服务器可能会无意中暴露医院敏感数据,增加数据泄露的风险;传统的远程控制方式也不支持灵活的权限分配和角色管理,难以适应不同运维人员的需求和职责;在网络安全法律法规日益严格的背景下,缺乏堡垒机的传统远程控制方式可能无法满足医院业务系统的等保合规要求。
3 Docker 技术在医院信息化中的应用
3.1 基于Docker 的开源私有云平台部署
3.1.1 Nextcloud
在互联网使用环境中,一般使用的是公有云,如Apple iCloud、百度云、阿里云、小米云等。实际使用中,个人隐私数据存放在公有云容易引发安全问题[5]。另一方面,公有云还涉及收费和存储问题。基于上述原因,在医院内网中部署基于Docker的开源私有云平台。这样医院对数据拥有完全控制权,从而减少数据资产泄露的风险。相比于公有云服务,部署开源的私有云平台不需要支付持续的服务费用,可以减少长期成本。
Nextcloud是一个开源的私有云存储平台,可以用于医院内部的文件共享和协作。它采用PHP语言实现,支持在多个操作系统平台上运行,并兼容多种数据库,具有高度的灵活性。Nextcloud还提供了针对移动设备和桌面的客户端,包括iOS、Android、PC等,医护人员可以轻松通过PC客户端或者安装手机App在内网中访问云端存储资源。Nextcloud提供了文件版本控制功能,可以追踪文件的更改历史,防止数据丢失,并允许恢复到以前的版本。Nextcloud提供端到端加密功能,确保医院敏感数据(如病区考勤表、病人健康量表等)在传输和存储过程中始终受到保护,防止数据泄露。
3.1.2 Nextcloud 部署命令和截图
1) Docker 环境下运行MySQL 数据库,建立一个Nextcloud数据库,图2为运行MySQL数据库。
2) Docker环境下运行Nextcloud,链接已经建立的Nextcloud数据库,图3为运行Nextcloud平台。
3) 登录Nextcloud前端配置MySQL数据库,验证登录,图4为前端配置MySQL数据库。
4) Nextcloud中建立分配工作人员账号和磁盘配额,图5为分配账号和磁盘配额。
5) 手机安装App登录Nextcloud系统,图6为手机App登录Nextcloud系统。
3.2 基于Docker 的开源堡垒机平台部署
3.2.1 Next Terminal
Next Terminal 是一款开源的堡垒机应用系统[6],可以为医院业务系统运维工程师提供一个便捷、安全的运维平台。它采用Golang和React技术栈构建,资源占用少,可支持通过Docker快速部署。Next Termi⁃nal目前支持的功能有:授权凭证管理、资产管理(支持RDP、SSH、VNC、TELNET协议)、指令管理、批量执行命令、在线会话管理(监控、强制断开)、离线会话管理(查看录屏)、双因素认证、资产标签、资产授权、多用户及用户分组、计划任务、SSH Server、登录策略和系统监控。
Next Terminal用真实身份取代了传统账号,为连接到基础设施的每位系统应用运维工程师提供防钓鱼的零信任访问方案。Next Terminal还具有强大的安全性和审计功能。它自动记录所有的远程访问操作,包括登录日志、SSH会话记录等,并能够回放操作记录,这些功能有助于确保医院网络的安全性和合规性。
3.2.2 Next Terminal 部署命令和截图
1) 下载Next Terminal镜像。
2) 搭建Guacd开源的远程桌面网关。
3) 搭建 Next Terminal开源堡垒机应用系统,图7 为运行Next Terminal开源堡垒机应用系统;Web登录前端系统,添加所有需要进行远程控制的医院内部设备资产,图8为添加医院内部设备资产。
4 结束语
本文介绍了Docker容器技术架构和技术优势,提出通过部署基于Docker的私有云平台和堡垒机平台,有效解决了医院信息化建设中存在的数据安全隐患、远程运维效率低等问题。目前的研究是在有限环境下进行的,运行中可能还会遇到挑战。随着新技术的发展和监管要求的变化,未来还需要进一步加强数据加密技术和隐私保护机制的研究,提高系统的可靠性和容错能力,确保在各种环境下的稳定运行。