清除过滤器
文章
Qiao Peng · 四月 14, 2022
8. 应用安全
InterSystems数据平台上可能运行着多种应用,例如Web网页应用、SOAP服务、REST API、HL7 接口、SQL服务等等。这些应用种类繁多,面临的安全风险也是巨大的,例如代码注入攻击和HTTP的跨站请求伪造攻击等。
这其中代码注入攻击和针对Web应用的攻击尤其需要重视。
8.1 代码注入攻击
代码注入攻击通常和我们编写的程序相关,需要在程序编写时注意避免。
8.1.1 SQL注入攻击
SQL注入攻击是典型的代码注入攻击,通过从外部注入恶意SQL语句获得数据权限并获得敏感数据。关系型访问方式都是通过客户端SQL语句传入执行的,因此它是数据库重点需要防范的。
InterSystems数据平台并不支持以分号分割的多条SQL语句作为一个SQL命令执行,因此它本身免疫了主要的SQL注入攻击手段。
InterSystems数据平台支持动态SQL,即允许SQL命令作为方法的字符串参数传入,这会给SQL注入攻击留有隐患。在编程时,应避免开放服务用于接受完整的SQL语句作为参数,而是通过SQL动态传参来构建运行时SQL。
InterSystems数据平台支持行级安全,这有助于避免在SQL注入攻击时,将所有数据返回给攻击请求。
8.1.2 $ZF
InterSystems数据平台提供了系统函数$ZF,用以调用外部命令。其中$ZF(-1)和$ZF(-2)用以调用服务器操作系统的命令。这可能会成为代码攻击的隐患。
在使用$ZF开发服务时,应避免把完整的操作系统命令作为字符串参数传入来执行,而应仅传入必要的数据,由服务器端方法来组成需要执行的操作系统命令,避免注入攻击。
8.2 Web应用安全管理
InterSystems数据平台提供多种Web应用,都是基于HTTP/HTTPS协议的,例如InterSystems数据平台的管理门户网页、用户自定义的网页、开放的SOAP服务、RESTful API。
既然走HTTP/HTTPS,所以首先应该部署专用Web服务器,并配置HTTPS来提供这些Web服务,在传输通道上保障安全。
除了传输通道,要得到更安全的生产环境,还有其它的安全设置需要检查和配置。
8.2.1 CSP/ZEN用户自定义网页应用
每个InterSystems数据平台等命名空间默认都有一个Web应用,可以通过它提供用户自定义网页应用。也可以创建一个新的Web应用提供用户自定义的网页应用。
第一个要检查的项目,是要看看这些默认创建的Web应用是否需要。如果不需要,应该禁用 – 取消选中“Enable Application”。
第二个要检查的项目,是这个Web应用使用的身份认证方式。在生产环境上,不应该使用“未验证”方式,所以应该取消选中该选项。
第三个要设置合适的“必要的资源”,它是对网页应用的资源权限要求。必须具有该资源的使用权限的用户,才能访问该网页应用。
第四个要决定是否开启防CSRF攻击,建议开启“Prevent Login CSRF attack”。
8.2.2管理门户
InterSystems数据平台的管理门户就是CSP/ZEN开发的网页应用,它具有大部分系统管理和监控能力,例如安全配置、高可用配置等。
除了8.2.1提到的对网页应用的安全配置项目之外,InterSystems数据平台预置了一系列系统角色和系统资源,用于让不同用户对管理门户的不同功能页面具有不同的权限。例如操作员角色(%Operator)不具有创建、修改用户的权限。
这些用户权限检查是通过配置给管理页面的系统资源来判断的,只有对这些页面系统资源有权限的用户才能访问该管理页面。
为了提供更细颗粒度的管理,除了配置给管理门户页面上的系统资源,用户可以将自定义资源加到管理门户页面上。这样,用户需要同时具有系统定义的页面资源权限和用户自定义资源权限才能访问和使用管理页面。
如何查看系统预置的管理页面资源和配置自定义资源?在每个管理门户页面菜单项上,都有链接,点击它就可以查看该管理页面分配的系统资源和自定义资源。如果要添加自定义资源,点击“分配”,就可以在弹出的页面中进行配置。
通过配置自定义资源,可以实现任意颗粒度的管理门户权限控制。
如果您在管理互操作产品,想了解系统提供的预定义安全资源,可以参考文档
8.2.3 SOAP服务
除了SQL服务,SOAP服务是InterSystems数据平台经常要开放的服务类型之一。如果您的生产环境上开放了SOAP服务,应该检查它的安全配置。
开启SOAP服务
InterSystems数据平台的SOAP服务也是通过Web应用开放的。默认情况下,Web应用是没有开放“入站Web服务”的,也就是说默认Web应用是不能提供SOAP服务的。如果需要开放SOAP服务,需要选中对应Web应用的“入站Web服务”。
注意:如何仅是查看WSDL,并不需要开启此选项。
开启SOAP服务测试页功能
InterSystems数据平台还提供SOAP服务测试页功能,该功能可以使用Web页面来测试SOAP服务,而不需要通过SOAPUI等工具。
为了安全,默认SOAP服务测试页功能是未开启的。如果需要开启,需要通过系统安全设置项开启:
SET ^SYS("Security","CSP","AllowPrefix",<SOAP应用路径>,"%SOAP.")=1
注意:
1. <SOAP应用路径>最后需要加"/",例如 "/csp/user/"
2. 该设置项不影响SOAP服务,仅影响测试页
SOAP认证与权限
在生产环境上,不应该发布无需认证的SOAP服务。因此也需要取消选中“未验证”方式。
同时通过“必要的资源”设置,可以为SOAP服务指定需要的权限。
SOAP安全协议
另外,SOAP本身有很多安全协议,例如WS-Security, WS-Policy, WS-SecureConversation, WS-ReliableMessaging... 它们提供SOAP消息头及消息体加密、数字签名等机制保障SOAP服务安全。
InterSystems数据平台支持这些SOAP安全协议,可以通过这些协议加强SOAP服务的安全。
8.2.4 RESTful API
RESTful API越来越多的用于轻量化的服务提供。与SOAP服务类似,InterSystems数据平台的RESTful API也是通过Web应用提供的。
因此上面介绍的Web服务的安全检查项也适用于RESTful API应用。
另外,如果部署了InterSystems API管理器,它本身也提供了安全相关的功能,例如用户认证、权限控制等。因此也要检查InterSystems API管理器的安全设置。
8.3 安全建议
不要拼接SQL语句,而是通过传参数构建运行时的SQL
避免使用动态SQL
启用行级安全
将$ZF调用封装在方法中,避免将操作系统命令通过字符串传入
部署独立的Web服务器,并启用HTTPS
禁用"未验证"的身份验证方式
选择"密码"或"Kerberos"
开启防跨站请求伪造(CSRF) 攻击
增加必要的资源权限要求
对"应用程序角色"配置合适的角色
为SOAP服务建立独立的Web应用,不使用命名空间默认的Web应用发布SOAP服务
不应该发布不需要用户认证的SOAP服务和RESTful API!
使用合适的认证策略,例如密码或用户名令牌
使用合适的SOAP安全协议,例如消息加密、数字签名
在部署了InterSystems API管理器时,通过它进一步约束安全选项
9. 安全审计
InterSystems数据平台提供审计能力,提供防篡改的审计数据库,用于记录审计事件。审计数据可以查看、搜索和导出。
通过管理门户 > 系统 > 安全管理 > 审计 可以开启和配置审计。
InterSystems数据平台预置了一系列系统审计事件,例如用户登录事件、登录失败事件等。并非所有的预置系统审计都默认开启,用户可以在系统审计事件配置页面进行配置,决定审计哪些系统事件。
除了系统预置的审计事件,InterSystems数据平台运行用户自定义审计事件,例如谁修改了特定的类。通过管理门户 > 系统 > 安全管理 > 用户定义的审计事件 可以创建自定义审计。
9.1 安全建议
开启审计
对重要的用户级事件建立自定义审计事件
定期分析审计的用户行为模型,识别发现异常请求
10. 备份与恢复
数据平台的备份与恢复是保障数据安全的另一项机制。定期的备份保障在意外发生时数据可以最大限度的恢复。例如是误删除了数据和代码,InterSystems数据平台的镜像高可用也无法恢复这些误删除的内容,因为误删除也会在备机上重做。这时,备份是唯一可以恢复误删除数据的希望。
所以应该有备份恢复的自动化策略,定期地执行备份,并将备份保存在与生产环境隔离的地点妥善保存。
InterSystems数据平台支持多种备份工具和备份策略。
备份工具:
冷备份 – 卸载数据库,拷贝数据库文件,加载数据库。冷备份需要计划宕机时间
联机热备份 – InterSystems数据平台提供的在线备份,无需计划宕机时间。数据规模很大时,备份时间较长
外部备份(快照备份) – 在线备份,无需计划宕机时间。通常速度很快,但需要外部备份工具
InterSystems数据平台使用内建的联机热备份工具时,支持这些备份策略:
全备份 – 备份全部数据
增量备份 – 备份上次备份之后修改的所有数据
补充备份 - 备份上次全备份之后修改的所有数据
可以使用这些备份方式,组合成一个自动的备份计划,例如:周日执行全备份、周一周二执行增量备份、周三执行补充备份、周四周五周六执行增量备份。
这些备份文件和备份之后的所有日志文件(Journal文件)和数据平台配置文件,以及项目相关的静态文件一起,例如网页文件,才是完整的生产环境备份集。完整的备份集才能保证恢复到指定的时间节点上。
有了备份并不是万无一失,需要验证备份是否可用。应该建立备份集恢复测试的环境,定期对备份集进行恢复测试,以确保备份集是可用的。
10.1 安全建议
建立自动的备份任务
备份应保存在独立的存储和隔离的物理位置
定期检查备份集的可用性
11. 正确安装InterSystems数据平台
在InterSystems数据平台安装时,会提示选择安全级别。因此在安装时,就应该选择正确的安全级别,避免后期大量的安全配置检查和调整。
InterSystems数据平台安装时会提供3个安全级别选择:Minimal、Normal和Locked Down。
Minimal:是针对于本机开发环境安装的安全级别、也是最低的安全级别,通常是被用于开发者在自己的笔记本电脑上安装InterSystems数据平台的开发实例。它几乎没有安全限制,例如允许无认证登录、匿名用户拥有%All的权限。因此绝不应该在生产环境上以此级别安装。如果您已经以Minimal安全级别安装了生产环境,那应该立刻修改安全配置。
Normal:是针对通常用途的安全级别,收紧了安全策略,可以作为大多数生产环境的初始安全配置。建议生产环境安装时,以此级别进行安装,并在安装之后按需调整安全配置。
Locked Down:是针对高安全需求的生产环境的安全级别。它禁用了多数服务、收紧了服务策略,因此安装后就已经提供了一个较为安全的实例。
Minimal
Normal
Locked Down
安全设置
密码模式
3.32ANP
3.32ANP
8.32ANP
不活动禁用天数*
0
90天
90天
启用_SYSTEM用户
是
是
否
分配给用户UnknownUser的角色
%All
无
无
服务策略
Use 权限为公共权限
是
是
否
需要认证
否
是
是
服务
%Service_Bindings
启用
启用
禁用
%Service_CacheDirect
启用
禁用
禁用
%Service_CallIn
启用
禁用
禁用
%Service_ComPort
禁用
禁用
禁用
%Service_Console*
启用
启用
启用
%Service_ECP
禁用
禁用
禁用
%Service_Monitor
禁用
禁用
禁用
%Service_Telnet*
禁用
禁用
禁用
%Service_Terminal†
启用
启用
启用
%Service_WebGateway
启用
启用
启用
12. InterSystems 数据平台的安全建议工具
InterSystems数据平台提供安全检查和建议工具。通过管理门户 >系统 > 安全管理 > 安全顾问 即可使用该工具。
安全建议工具会提示安全建议,点击“详细信息”链接,会自动跳到对应安全配置页面。在生产环境上线前,建议使用该工具进行检查。
13. InterSystems 数据平台三级等保检查清单
针对三级等保合规,检查清单如下:
1. 配置基于TLS的数据加密通道**
所有对InterSystems 数据平台的连接方式都配置使用加密通道
2. 部署独立的Web服务器
配置Web服务器应用HTTPS,并禁用不安全的 HTTP 方法
3. 服务配置
关闭不必要的服务
对必要开启的服务,选择安全的认证方式
禁用“未验证”方式
进一步限定允许接入的IP地址
4. 加强认证
系统级禁用 “无认证”
选用更安全的认证方式
5. 收紧授权**
数据库应该设置自己独立的资源,而非使用%DB_%DEFAULT
谨慎使用公共权限
创建自己需要保护的新资源**
6. 用户与角色
仅管理员有%All角色
要求用户账号更安全的密码模式
设置密码错误数次后停用账号
7. 数据安全
对敏感数据进行全数据库加密
合理的数据读写权限
必要时,添加行级和列级安全**
8. 应用安全
不要拼接SQL语句,而是通过传参数构建运行时的SQL**
避免使用动态SQL**
启用行级安全**
将$ZF调用封装在方法中,避免将操作系统命令通过字符串传入**
禁用不必要的Web应用 **
对Web应用,禁用"未验证"的身份验证方式
对Web应用,开启防跨站请求伪造(CSRF) 攻击
对Web应用,对"应用程序角色"配置合适的角色,不应随意赋予%All **
为SOAP服务建立独立的Web应用,不使用命名空间默认的Web应用发布SOAP服务 **
不应该发布不需要用户认证的SOAP服务和REST API!
使用合适的SOAP安全策略,例如消息加密、数字签名
9. 审计
开启审计
对重要的用户级事件建立自定义审计事件 **
定期分析审计的用户行为模型,识别发现异常请求 **
10. 备份与恢复
建立自动的备份任务
备份应保存在独立的存储和隔离的物理位置
定期检查备份集的可用性
注:**项目不是三级等保的必查项,但建议进行检查和配置。
公告
jieliang liu · 四月 18, 2022
各位开发者们好,
InterSystems IRIS 数据平台的最大特点之一是它允许您创建自己的自定义,您可以使用InterSystems IRIS 中支持的所有其他模型,例如对象和关系结构,而无需创建任何自定义结构。
⏯ InterSystems Globals与灵活的数据建模 Globals
请各位开发者关注我们的Bilibili 频道InterSystems Bilibili 主页!
公告
Claire Zheng · 一月 28, 2022
亲爱的社区开发者们,大家好!
欢迎积极参与新一轮InterSystems开发者竞赛!
这次我们聚集Python!
🏆 InterSystems Python竞赛🏆
竞赛时间: 2022年2月7日 - 27日
奖金总额: $10000 - 更多获奖机会!
奖品
1. 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出:
🥇 第一名 - $4,000
🥈 第二名 - $2,000
🥉 第三名 - $1,000
🌟 第四名-第十五名 - $100
2. 社区提名奖(Community Nomination)- 获得总投票数最多的应用:
🥇 第一名 - $1,000
🥈 第二名 - $750
🥉 第三名 - $500
如果同时多位参赛者获得同样的票数,均被视为优胜者,将平分奖
谁可以参加?
任何开发者社区的成员均可参加,InterSystems内部员工除外(InterSystems contractor员工可以参加)。还没有账号?现在来建一个!
👥 开发者可以组团 创建一个协作应用程序,组团限定人数为2-5人。
请注意,要在您的README文件中标注您的团队成员——社区用户profile
参赛时间安排
🛠 2月7日 - 20日: 应用开发、提交阶段。
✅ 2月21日 - 27日: 投票阶段。
注意:在整个参赛期间(开发与投票期间),开发者可持续编辑、提升其应用
主题
最新 发布 的 InterSystems IRIS 2021.2版本提供了 Embedded Python 功能,而且将 PEX 扩展到 Python. 我们邀请您在一个新的编程竞赛中使用嵌入式Python ! 也欢迎使用Python原生API或Python PEX的应用程序。
提交一个开源的应用程序,通过InterSystems IRIS或InterSystems IRIS for Health(医疗版)使用嵌入式Python或原生Python API或Python PEX。
一般要求
有效应用程序:100%全新的Open Exchange Apps或已有的应用程序(但有显著提升)。所有参赛者/团队提交的应用程序只有经过我们团队的审核之后才会被批准参赛。
该应用可以在 IRIS Community Edition or IRIS for Health Community Edition or IRIS Advanced Analytics Community Edition上运行。
该应用需开源并在GitHub上发布。
该应用的README文件应为英文,包含安装步骤,并包含视频demo或/和应用程序如何运行的描述。
资源助力
1. 通过InterSystems IRIS开发Python应用:
Learning Path Writing Python Application with InterSystems
Embedded Python Documentation
Native API for Python Documentation
PEX Documentation
2. ObjectScript Package Manager (ZPM)初学者:
How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS
Package First Development Approach with InterSystems IRIS and ZPM
3. 如何将您的APP提交给大赛:
How to publish an application on Open Exchange
How to submit an application for the contest
4. 项目示例
interoperability-python
pex-demo
python-examples
WebSocket
AOC2021
Python Faker
5. 视频
Introduction to Embedded Python
Embedded Python: Bring the Python Ecosystem to Your ObjectScript App
Embedded Python for ObjectScript Developers: Working with Python and ObjectScript Side-By-Side
Embedded Python with Interoperability
InterSystems IRIS Native Python API in AWS Lambda
参赛评比
投票规则即将发布,敬请期待!
So!
期待您的精彩提交– 加入我们的编程马拉松,赢取大奖!
❗️ Please check out the Official Contest Terms here.❗️
文章
Qiao Peng · 四月 11, 2022
数据平台不仅要安全,还要合规,三级等保是我们要符合的主要安全规范。InterSystems的数据平台和集成平台产品都和三级等保有关。如果没有正确配置它们的安全选项,就会影响到整个系统的安全,影响到合规性。
在生产环境上,如何配置安全的InterSystems的数据平台,并达到三级等保的要求?
这个系列文章,针对InterSystems 数据平台的安全架构,围绕对三级等保的合规性展开,介绍如何配置出一个安全、合规的数据平台。
注:本文提到的InterSystems的数据平台,包括Caché数据库、Ensemble集成平台、HealthConnect医疗版集成平台和InterSystems IRIS数据平台。
三级等保的要求
三级等保要求
对数据平台的要求
身份鉴别
确保用户身份是真实、准确的
访问控制
控制:谁、以什么方式、从什么设备可以访问什么数据和功能?
入侵防范
防范静态数据、传输中的数据、日志和备份中的数据被入侵
恶意代码防范
防止恶意代码被植入和执行,例如SQL注入
可信验证
数据完整性
保证数据完整性和一致性的能力
数据备份恢复
对数据的备份与恢复能力和策略
InterSystems数据平台安全架构
InterSystems数据平台提供了一个完善的安全架构,用以保护从接入到数据保存的各个层面的数据安全:
InterSystems数据平台提供丰富的安全相关特性,用以保障系统安全性和合规性:
我们按数据的流向逐一展开,看看应该如何加强InterSystems数据平台的安全。
1. InterSystems数据平台连接通道安全
客户端可以使用多种技术连接到InterSystems数据平台,包括ODBC/JDBC、Java、.net、TCP、Telnet、HTTP、SOAP、REST等。除了客户端的连接,InterSystems数据平台之间也有很多连接通道,例如高可用镜像成员之间、数据平台和Web网关之间… 这些连接通道都应该考虑使用SSL/TLS进行通讯加密,从而保护数据的安全和一致性。
1.1配置InterSystems数据平台的超级服务器接入通道加密
除了通过HTTP、SOAP、REST之外的客户端,其它的客户端都连接到InterSystems数据平台的超级服务器。InterSystems数据平台在系统范围内使用SSL/TLS协议为超级服务器端口通道加密。
配置步骤如下:
在管理门户中,通过路径 系统 > 安全管理 > SSL/TLS 配置,建立名为%SuperServer的SSL/TLS配置项。参考文档
在管理门户中,通过路径 系统 > 安全管理 > SSL/TLS 配置,在超级服务器SSL/TLS支持 选项上选中“要求”。它的三个选项分别为:
禁用(默认选项)- 拒绝使用TLS的客户端连接
启用 - 允许使用TLS的客户端连接,但不必要
要求 – 仅接受使用TLS的客户端连接
如果Telnet也要通过TLS加密传输,将上面配置的基础上,再建立一个名为%TELNET/SSL的SSL/TLS配置项,然后将上图的Telnet server SSL/TLS support 设置为“要求”。具体配置
1.2 配置客户端使用SSL/TLS连接到InterSystems数据平台的超级服务器
不同的客户端技术配置SSL/TLS的方式不同,具体的配置详见:
Java
.net
ODBC/Studio/Windows Terminal
Windows配置
这里以ODBC为例,看看Windows客户端上ODBC设置的步骤:
1. 在Windows客户端上下载IRIS服务器上的CA证书文件,并保存在指定目录。例如:c:\InterSystems\certificates\certificateSQLaaS.pem
2. 在Windows客户端上编辑并保存C:\Program Files (x86)\Common Files\InterSystems\IRIS\SSLDefs.ini,其中[IRISServer]是你起的SSL/TLS配置名,后面的Address和Port是 InterSystems数据平台的服务器地址和超级服务器端口号。[TLSConfig]是SSL/TLS的配置项,注意其中的CAfile是第一步得到的CA证书文件路径。
[IRISServer]
Address=172.168.3.10
Port=1972
SSLConfig=TLSConfig
[TLSConfig]
TLSMinVersion=16
TLSMaxVersion=32
CipherList=ALL:!aNULL:!eNULL:!EXP:!SSLv2
Ciphersuites=TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
KeyType=2
VerifyPeer=1
Password=
CAfile=c:\InterSystems\certificates\certificateSQLaaS.pem
3. 配置Windows的ODBC DSN,选中“Password with SSL/TLS", 并在“SSL/TLS Server Name”中填写SSLDefs.ini中特定的配置名,例如:IRISServer
之后ODBC客户端就可以使用这个DSN通过TLS加密传输连接到InterSystems数据平台了。
1.3 安全建议
虽然不是三级等保必须的,建议配置和开启InterSystems数据平台的超级服务器SSL/TLS连接。
2. Web服务器
InterSystems 数据平台在安装时,可以选择安装一个私有的Apache,用于访问管理门户和基于HTTP的开发、测试,例如网页应用、SOAP和RESTful API。
这个私有Apache并不是全功能的,因此不应作为生产环境的Web服务器,尤其是生产环境有基于HTTP的服务、应用或接口时。这时,应该部署独立的Web服务器和InterSystems Web网关,连接到InterSystems的数据平台。并且应该配置HTTPS,而非使用无加密的HTTP。
InterSystems的数据平台支持Apache、IIS和Nginx等Web服务器。
2.1 独立Web服务器的配置
如何配置独立的Web服务器和InterSystems Web网关,如何配置Web服务器的HTTPS?请参考这篇非常棒的社区系列文章:
WebGateway系列
2.2 安全建议
生产环境上,部署独立的Web服务器,而非使用InterSystems 数据平台的私有Web服务器。
Web服务器应使用HTTPS,而非HTTP,提供Web服务。
3. 服务与接口
InterSystems数据平台提供一系列服务和接口,用于各种外部系统和技术的接入,例如常见的ODBC/JDBC的SQL客户端、开发者使用的Studio、管理员常用的Telnet。另外,InterSystems数据平台组件和实例之间的连接也是通过服务实现的,例如Web网关和InterSystems数据平台之间的连接、配置为镜像高可用的多台InterSystems数据平台之间的连接。
3.1 InterSystems数据平台的服务
下表列出了InterSystems数据平台的服务和它们服务的对象:
服务名称
描述
%Service_Bindings
控制 SQL 或对象访问方式,包括Studio、XDBC客户端、Java、C++、ActiveX
%Service_CacheDirect
控制 Caché 直连访问方式
%Service_CallIn
控制使用CallIn的C/C++应用的访问
%Service_ComPort
控制从Windows系统COM端口的访问
%Service_Console
控制Windows本地服务器上 CTERM (TRM:pid) 和 Windows 控制台访问
%Service_Terminal
控制UNIX, Linux, Mac本地服务器上的控制台访问
%Service_DataCheck
控制实例间数据一致性检查DataCheck时,作为数据源的访问
%Service_DocDB
控制文档数据库的访问
%Service_ECP
控制是否ECP
%Service_Login
控制通过 SYSTEM.Security.Login的登录访问
%Service_Mirror
控制镜像成员访问
%Service_Monitor
控制 SNMP 和远程监视命令
%Service_Shadow
控制此系统是否可以是shadow来源
%Service_Sharding
控制是否可以作为分片服务器访问
%Service_Telnet
控制来自于Windows 服务器的本地或远程Telnet 会话访问
%Service_CSP
%Service_WebGateway
%Service_CSP(Caché/Ensemble)或%Service_WebGateway(IRIS)控制通过Web网关的访问,也就是web应用
%Service_Weblink
控制旧有的WebLink应用访问
3.2 InterSystems数据平台服务的安全选项
这些向外开放的服务和接口有多种机制保护安全:
是否启用
是否是公用服务(意味着所有用户都有权限)
身份认证的方式
接入客户端的IP限制
其它特殊限制
在管理门户>系统>安全管理>服务,可以对每一项服务进行单独的安全配置:
3.3 安全建议
关闭不必要的服务。
对开启的服务,应选择安全的认证方式,不应使用“未验证”方式。
进一步限定允许接入的客户端IP地址。
4. 用户认证
用户认证是保障数据安全的核心之一。
4.1 InterSystems数据平台的用户认证机制
InterSystems数据平台支持多种用户认证机制,包括:
Kerberos
基于操作系统的认证
IRIS用户名/密码
LDAP
代理认证 – 用户自定义认证
无认证 – 无需用户认证,进来的用户自动为UnknownUser
二阶段认证
它同时可以开启和使用多种用户认证,允许用户使用不同的认证方式接入数据平台。在启用多种用户认证机制时,InterSystems数据平台会以一定优先顺序来应用用户认证机制:
Kerberos > 基于操作系统的认证 > IRIS用户名/密码 >无认证
LDAP > 代理认证 >无认证
4.2 用户认证方式的设置
这些用户认证方式,可以在系统层面开启或禁用,也可以在服务/接口层面进行选择。对于InterSystems数据平台提供的Web应用,例如网页应用、SOAP服务和RESTful API,还可以在Web应用层面进行用户认证方式的配置。
系统层面的配置,在管理门户>系统>安全管理>Authentication/Web Session Options ;
服务层面的配置,见3.2;
应用层面的配置,将在后面的应用安全章节详细介绍。
4.3 安全建议
系统级禁用 “无认证”,和其它不需要使用的认证方式
系统级,采用更安全的认证方式
5. 用户授权
InterSystems数据平台提供一套基于角色的权限控制机制,它可以保障细颗粒度的数据与服务安全。
5.1基于角色的权限控制机制
在这套机制下,被保护的数据与服务被称之为资产。资产可以是任何具体事物,例如数据库、服务、平台应用、管理工具,甚至可以是抽象的事物,例如工作身份、“对患者联系方式的权限”。
权限控制机制是:
InterSystems数据平台定义资源,对应一个或多个资产;系统已经定义了一系列系统资源,同时用户可以自定义资源。
对资源的许可,例如读、写、使用,就是权限;
将权限分配给InterSystems数据平台定义的角色和/或用户;
用户就具有了相应的资产权限。
5.2资源的权限配置
通过管理门户>系统>安全管理>资源,管理可以创建新资源、配置已有资源的权限。
以%开头的资源是系统已经创建好的资源,例如:
%Admin_* 是工作身份资源
%DB_* 是数据库资源
%Service_* 是服务资源
%Ens_* 是互操作相关的资源
其中,对资源的权限可以被设置为“公有权限”,即所有用户都有相应的权限。
5.3 安全建议
用户自定义的数据库应该设置自己独立的资源,而非使用%DB_%DEFAULT
谨慎使用公共权限
创建自己需要保护的新资源
文章
Qiao Peng · 四月 11, 2022
6. 用户与角色
InterSystems 数据平台对用户和角色提供全面的管理和安全配置功能。加强数据平台的安全,需要加强对于用户和角色的管理。
6.1 用户管理
系统提供了一系列预置的用户账户,这些账户管理对应特殊的系统功能:
用户
说明
UnknownUser
匿名用户,通过“未验证”方式登录到系统的用户
_SYSTEM
SQL系统管理员
SuperUser
超级用户
Administrator
安装系统的用户
Admin
系统管理员
CSPSystem
Web网关管理员
IAM
IAM用户
_PUBLIC
内部使用
_Ensemble
内部使用
6.1.1 系统级用户安全配置
InterSystems数据平台有一些系统级别的用户安全配置,例如密码模式、密码有效天数、无效登录限制(多少次登录失败后要禁用用户账户)、非活动限制(多少天未登录后禁用用户账户)等。这些系统级配置通过管理门户>系统>安全管理>系统范围的安全参数:
三级等保对于用户的密码强度是有要求的。弱密码只需要0.19毫秒就能被破解,而8位强密码破解需要上百年。密码强度可以通过上面配置页面的密码模式或密码验证routine来配置:
密码模式只能配置简单的密码强度约束逻辑,例如3.32ANP意思是允许3位到32位长度到密码,密码可以由字符、数字和符号组成。
密码验证routine可以配置任意复杂的密码强度约束逻辑,它通过用户自定义的密码检查逻辑进行判断。例如要求“密码必须是包括数字、大写字母和半角符号的8位以上的字符串”,可以在%SYS命名空间下编写一个routine,里面提供密码验证逻辑的方法。方法名由自己决定,它有两个固定的参数Username和Password,您只要实现密码约束逻辑:如果符合约束,返回$$$OK,否则返回相应的错误提示即可。
这里给出一个routine示例,这个%SYS下的routine名为IRISPWD,里面的CHECK方法用于判断密码合规性,它利用正则表达式判断密码是否符合“必须是包括数字、大写字母和半角符号的8位以上的字符串”的约束,违反约束时给出提示错误。
#include %occInclude
CHECK(Username,Password) PUBLIC {
s tValid=(Password?8.E)&&(Password?.E1.U.E)&&(Password?.E1.N.E)&&(Password?.E1.P.E)
q:(tValid=0) $$$ERROR($$$GeneralError,"密码需要是包括数字、大写字母和半角符号的8位以上的字符串")
q $$$OK
}
然后将方法调用的名称更新到“系统范围的安全参数”中的密码验证routine中。方法调用名称是方法名^Routine名,本示例为CHECK^IRISPWD。
设置好后即可生效,但要注意它不会对旧有密码进行验证。当设置或修改用户密码后保存时,它会进行检查,对违反约束的密码设置,会报如下错误提示:
6.1.2用户管理
通过管理门户>系统>安全管理>用户,可以创建、管理用户。在这里可以执行每个用户的初始密码设置、账户启用/禁用条件,用户的角色设置、SQL权限等管理。
另外,也可以查看用户的概要信息,它会显示用户的权限列表、登录历史等信息:
注意:
CSPSystem用户是CSP网关登录到InterSystms IRIS/Cache'的用户。如果需要修改它的密码,需要先在IRIS/Cache'用户管理页面修改CSPSystem的密码,然后再登录到CSP网关上修改CSP网关连接IRIS服务器的账户信息,保持二者密码一致。1. 登陆到私有Apache的CSP网关或独立安装的Web服务器的CSP网关,访问http://<IP+端口>/csp/bin/Systems/Module.cxw
2. 修改CSP网关连接IRIS服务器的账户信息:
2.1 Configuration>Default Parameters>Security>User Name 和Password2.2 Configuration>Server Access>Connection Security>User Name 和Password
6.2 角色管理
InterSystems数据平台预置了一些%开头的系统角色,例如%Developer开发者角色、%Manager系统管理员角色、%Operator系统操作员角色。
其中%All是一个特殊角色,它是超级用户角色,属于这个角色下的用户都是超级用户。因此属于这个角色的用户数量不宜过多,当然也不建议少于2个,以避免密码遗失造成无法管理系统而只能进入紧急模式。
6.3 安全建议
1.仅管理员有%All角色,尤其要确保UnknownUser没有%All角色
2.删除不需要的系统角色和系统用户
3.要求用户账号更安全的密码模式
4.设置密码错误数次后停用账号
7. 数据安全
InterSystems数据平台提供了丰富的数据安全特性,包括数据与数据库加密、数据访问控制机制。这里相当多的特性都是三级等保要求的。
7.1 数据加密
InterSystems数据平台内建多种加密算法,包括AES CBC (128, 192, 256位)、HMAC、MD5、SHA-1、SHA-512、PKCS、PBKDF2、Base64等。同时,它可以直接调用外部的Python、Java和.net算法库,实现包括国密SM算法在内的算法扩展。
它支持对全数据库加密,或仅对数据元素加密。
7.1.1 全数据库加密
全数据加密时,InterSystems数据平台使用AES加密算法,自动负责数据库数据的加解密。加密的数据库在加载时,需要向系统提供密钥。通常密钥保存在可移除的设备上,例如U盘,仅在加密数据库加载时使用,加载后就可以移除并保存在安全的地方。
InterSystems数据平台的数据库和命名空间架构让用户可以将需要加密保护的数据,例如患者基本信息数据和支付数据单独保存在一个较小的数据库中。
在全数据库加密的情况下,可以对日志、审计日志都进行加密,从而避免任何的数据泄密渠道。这样,即便数据库文件、日志文件和审计日志被盗走,没有密钥文件都无法解密数据。
创建一个新密钥文件及新的加密数据库的过程非常简单,在管理门户即可完成:
产生密钥文件。只有管理员才有权限产生密钥文件。
输入密钥文件产生路径、管理员账户、密钥文件管理密码、AES加密位数,保存时会产生用于加密的密钥文件。
注意,产生的密钥文件的管理是需要权限的 – 只有密钥管理员才可以激活该密钥文件并使用它进行数据库加密。在密钥文件产生后,尽快加入多个可以管理该密钥的管理员,并为他们设置不同的密钥密码,以避免一个密钥管理员账户失效。
密钥文件产生后,你就可以将其拷贝到安全的位置,并将原始产生的文件删除。如果你有多个密钥,应记住密钥ID (如下图的0535458F-A895-4915-BADF-2C257602880D)和密钥文件、密码的关系。
激活密钥文件
在InterSystems数据平台实例上激活密钥,才能使用它进行数据库加解密。只有密钥管理员,使用密钥文件的密码才能激活密钥。
每个实例可以激活多个密钥,因为你可能有使用不同密钥加密后的数据库文件。可以设置某个密钥为默认密钥,新产生的加密数据库会使用默认密钥加密;同时可以设置某个密钥文件为默认的Journal日志密钥,新的Journal日志会使用默认Journal密钥加密。
这里还可以设置密钥使用的方式:“交互”或“无人参与”。 “无人参与”需要将密钥文件保存在一个InterSystems数据平台启动时可以访问到的固定路径上,因此不推荐使用。“交互”方式下,InterSystems数据平台会在启动和加载加密数据库时向管理员询问密钥位置,因此更加安全。
创建加密的数据库:
在数据库创建过程中,选择加密数据库。这样InterSystems数据平台会使用当前默认的密钥进行加密。
现在你就有了一个加密的数据库了,里面的任何数据都是被加密的。即便数据库文件被copy走,只要没有密钥文件,这个数据库就无法被加载或解密其中的数据。
在今后的InterSystems数据库平台的启动过程中,都将要求输入加密密钥文件的完整路径、密钥管理员账户和密钥文件密码:
如果要对之前未加密的数据库加密、或者将加密数据库重新部署为不加密的数据库、或者为加密数据库更换加密密钥,这些操作需要通过^EncryptionKey 管理工具完成,而不能在管理门户中完成。参见文档
7.1.2 数据元素加密
除了全数据库加密,用户也可以选择通过代码控制仅对特定数据元素加密,因此它可以控制非常细颗粒度的加密策略。
InterSystems数据平台提供系统类%SYSTEM.Encryption,里面有密钥创建和管理、加密解密的方法。用户开发的程序可以使用这些方法进行密钥管理和加解密工作。
如何使用的文档在这里。
7.2 数据访问控制
InterSystems数据平台提供多个层面的数据访问控制机制。包括:
数据库层面的访问权限控制,即数据库读、写权限控制
SQL层面的访问权限控制,包括
SQL操作的权限,例如创建表和视图的权限
对表、视图级别的访问权限
对存储过程的执行权限
行级安全 – 例如每个医生只能看自己的出诊记录
列级安全 – 例如医生角色可以看到患者表中除了患者支付卡号列之外的其它数据
这些数据访问控制机制可以自由组合,满足严格的数据访问控制。
7.3 安全建议
对敏感数据进行全数据库加密,并保存好密钥文件和密钥文件密码
合理的数据读写权限
必要时,添加行级和列级安全
公告
Claire Zheng · 四月 11, 2022
Hi开发者们,
我们非常高兴地向大家宣布此次 InterSystems Globals开发者竞赛的获奖者!
第19届编程大赛的优胜者名单如下:
专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出:
🥇 第一名,奖金 $4,000 获奖项目 global-mindmap 开发者 @Yuri.Gomes
🥈 第二名,奖金 $2,000 获奖项目 globals-tool 开发者 @Dmitry.Maslennikov
🥉 第三名,奖金 $1,000 获奖项目 iris-globals-graphDB 开发者 @Muhammad.Waseem
更多获奖者:
🏅 奖金$100 ,获奖项目 python-globals-serializer-example 开发者 @José.Pereira
🏅 奖金$100 ,获奖项目 global-archiver 开发者 @Lorenzo.Scalese
🏅 奖金$100 ,获奖项目 blockchain - [ IRIS python ] 开发者 @davimassaru.teixeiramuta
🏅 奖金$100 ,获奖项目 Globals: Embedded Python vs. ObjectScript 开发者 @Robert.Cemper1003
🏅 奖金$100 ,获奖项目 zpm-generate-ui 开发者 @MikhailenkoSergey
🏅 奖金$100 ,获奖项目 GlobalToJSON-XL-Academic 开发者 @Robert.Cemper1003
🏅 奖金$100 ,获奖项目 Cubes 开发者 @Sean.Connelly
🏅 奖金$100 ,获奖项目 GlobalToJSON-Efficient 开发者 @Robert.Cemper1003
🏅 奖金$100 ,获奖项目 iris-globals-contest 开发者 @Oliver.Wilms
🏅 奖金$100 ,获奖项目 GlobalToJSON-Compact 开发者 @Robert.Cemper1003
🏅 奖金$100 ,获奖项目 global-name-search 开发者 @Jailton.Viçôzo
🏅 奖金$100 ,获奖项目 React-UI-Global 开发者 @Evgeniy.Potapov
社区提名奖(Community Nomination)- 获得总投票数最多的应用:
🥇 第一名,奖金 $1,000 ,获奖项目 globals-tool 开发者 @Dmitry.Maslennikov
🥈 第二名,奖金 $750 ,获奖项目 python-globals-serializer-example 开发者 @José.Pereira
🥉 第三名,奖金 $500 ,获奖项目 iris-globals-graphDB 开发者 @Muhammad.Waseem
恭喜所有优胜者!
感谢大家对本次比赛的关注和付出,是你们的付出让这次大赛熠熠生辉!ღ( ´・ᴗ・` )比心🙌
接下来呢?
如果没有获奖,也不要灰心气馁!要知道,失败是成功之母,坚持下去就能成功 (^-^)V
准备好,期待五月的大赛吧! 😎
公告
Michael Lei · 四月 29, 2022
年度InterSystems IRIS开发者大赛来了,我们特别兴奋能够邀请大家参加我们今年的年度大奖赛,利用InterSystems IRIS数据平台创建开源解决方案!
🏆 InterSystems2022年度编程大奖赛 🏆
时间: 2021年5月9日 - 6月5日(美东时间)
总奖金超过$22,000美金,比去年提高37%!!!
主题
InterSystems 编程大奖赛是我们的年度编程大赛,旨在寻找使用InterSystems IRIS的最佳应用。 我们欢迎任何主题的申请!
提交任何使用InterSystems IRIS作为后端(API或数据库)的应用程序,以及任何类型的InterSystems IRIS API或数据模型。
我们欢迎您改进您去年在InterSystems竞赛系列中展示的应用程序,并提交给大奖赛。也欢迎您提交一个100%的新应用。
要求:
参赛作品申请:新加入Open Exchange的应用程序或现有的应用程序,但要有明显的改进。我们的团队将审核所有参赛申请后决定是否批准参赛.
该应用应在IRIS社区版或IRIS for Health社区版或IRIS高级分析社区版上运行.
该应用程序应是开源的,并在GitHub上发布
应用程序的README文件应该是英文的,包含安装步骤,并包含视频演示或/和应用程序如何工作的描述。
每位开发者最多可提交三个应用。
奖项设置(2022年总奖金比去年增长37.5%!!!):
1. 专家提名奖(Experts Nomination)- 获奖者由我们特别挑选的专家团选出:
🥇 第一名- $7,000
🥈 第二名- $5,000
🥉 第三名- $3,000
🌟 第四到二十名- $100
2. 社区提名奖(Community Nomination)- 获得总投票数最多的应用:
🥇 第一名- $3,000
🥈 第二名- $2,000
🥉 第三名- $1,000
✨ 所有获奖者都将授予Global Masters奖章!
如果同时多位参赛者获得同样的票数,均被视为优胜者,将平分奖金。
重要参赛时间安排
🛠 5月9日-29日(美东时间): 应用程序开发和注册阶段(在此期间,您可以持续编辑自己的项目)
✅ 5月30日(美东时间): 开启投票阶段(在此期间,您可以持续编辑自己的项目)
✅ 6月5日(美东时间): 投票截止
谁能参加?
除了InterSystems员工以外的所有社区成员. 快来加入吧!
开发者可以组队参加,每队2-5人。
不要忘记在您的应用程序的README中标明你的团队成员--开发者社区用户资料。
您可以使用的资源
✓ 如何使用 InterSystems IRIS (初学者):
Build a Server-Side Application with InterSystems IRIS
Learning Path for beginners
✓ 初学者如何使用 ObjectScript Package Manager (ZPM):
How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS
Package First Development Approach with InterSystems IRIS and ZPM
代码示例:
objectscript-docker-template
rest-api-contest-template
native-api-contest-template
integratedml-demo-template
PythonGateway-template
iris-fhir-template
iris-fullstack-template
iris-interoperability-template
iris-analytics-template
如何把您的APP提交给大赛:
如何在 InterSystems Open Exchange 上发布应用程序
如何把参赛APP提交给大赛
需要帮助吗?
欢迎在本帖下留言或联系您熟悉的InterSystems员工。
万分期待你的精彩项目!祝大家好运 👍
参加本次比赛,即表示您同意这里规定的比赛条款。请在进行比赛前仔细阅读这些条款。
文章
Michael Lei · 五月 17, 2022
在这篇文章中,我们将使用docker和 参数配置文件模版 这一新特性来运行IRIS集群且轻松配置好。
在 UNIX® 和 Linux 上,您可以使用声明式参数配置合并文件来修改默认的 iris.cpf。合并文件是一个部分 CPF,在实例启动时为任何数量的参数设置所需的值。CPF 合并操作对每个实例只起一次作用。
我们的集群架构非常简单,它将由一个主节点(Node1)和两个数据节点(检查所有可用角色)组成。不幸的是,docker-compose不能部署到几个服务器上(尽管它可以部署到远程主机上),所以这对本地开发分片的数据模型、测试等很有用。如果是生产的InterSystems IRIS集群部署,你应该使用ICM云管理器或IKO K8S调度器。
Docker-compose.yml
我们从docker-compose 配置开始:
docker-compose.yml
version: '3.7'
services:
iris1:
image: containers.intersystems.com/intersystems/iris:2020.3.0.221.0
init: true
command: --key /ISC/iris.key
hostname: iris1
environment:
- ISC_DATA_DIRECTORY=/ISC/iris.sys.d/sys1
- ISC_CPF_MERGE_FILE=/ISC/CPF2merge-master-instance.conf
volumes:
- ./:/ISC:delegated
ports:
- 9011:1972
- 9012:52773
iris2:
image: containers.intersystems.com/intersystems/iris:2020.3.0.221.0
command: --key /ISC/iris.key --before 'sleep 60'
init: true
hostname: iris2
environment:
- ISC_DATA_DIRECTORY=/ISC/iris.sys.d/sys2
- ISC_CPF_MERGE_FILE=/ISC/CPF2merge-data-instance.conf
volumes:
- ./:/ISC:delegated
depends_on:
- iris1
ports:
- 9021:1972
- 9022:52773
iris3:
image: containers.intersystems.com/intersystems/iris:2020.3.0.221.0
command: --key /ISC/iris.key --before 'sleep 60'
init: true
hostname: iris3
environment:
- ISC_DATA_DIRECTORY=/ISC/iris.sys.d/sys3
- ISC_CPF_MERGE_FILE=/ISC/CPF2merge-data-instance.conf
volumes:
- ./:/ISC:delegated
depends_on:
- iris1
ports:
- 9031:1972
- 9032:52773
正如你所看到的,我们正在运行一个默认的intersystems/iris:2020.3.0.221.0镜像,提供License Key(必须支持Sharding),使用持久化的%SYS特性持久化数据,并提供ISC_CPF_MERGE_FILE,指向我们的合并文件(主节点和数据节点的文件不同)。此外,数据节点的启动晚了一分钟来让主节点先启动,这是个非常保守的估计,在一个正常的硬件上,启动时间最多几秒钟。
集群配置在CPF合并文件中,让我们来看看
Cluster configuration happens at CPF merge files, let's check them out
CPF2merge-data-instance.conf
[Startup]
PasswordHash=FBFE8593AEFA510C27FD184738D6E865A441DE98,u4ocm4qh
ShardRole=node1
[config]
MaxServerConn=64
MaxServers=64
globals=0,0,400,0,0,0
errlog=1000
routines=32
gmheap=256000
locksiz=1179648
发生了什么情况?
在[Startup] 部分,我们通过为我们的集群分配主节点角色来启用分片。在[config]中,我们将服务器扩大一些,允许更多的缓存和连接。就这么简单!
CPF2merge-data-instance.conf
[Startup]
ShardClusterURL=IRIS://iris1:1972/IRISCLUSTER
ShardRole=DATA
针对数据节点, 我们需要提供主节点和节点角色的URL.
试一下
试试这个repository 或者运行这段代码:
git clone https://github.com/intersystems-ru/iris-container-recipes.git
cd iris-container-recipes
cd cluster
// copy iris.key in cluster folder
docker-compose up -d
启动InterSystems IRIS集群后你可以从 浏览器 访问. 用户名/密码 is: _SYSTEM/SYS.
结论
合并CPF文件 是一个很好用而简单的工具来配置InterSystems IRIS的实例。
感谢@Luca.Ravazzolo提供的代码并回答了我所有的问题。
文章
Lucy Ma · 五月 18, 2022
什么是选择性构建?
选择性构建是InterSystems IRIS (2020.1及以后)商业智能的一个功能。选择性构建允许仅构建模型中的指定元素,并且保持模型可以正常使用。
选择性构建有哪些特性?
在了解选择性构建的细节之前,一个简单的汇总在介绍关于在构建一个标准模型的不同阶段是重要的。这里列出了标准模型构建的过程阶段:
1)删除模型中已存在的数据
2)增添模型需要的全量数据
3)构建所有的索引
现在我们已经熟悉一个标准模型构建的过程,我们可以理解选择性构建的优势。在标准构建过程中,模型必须被停用,因为第一步是需要删除掉所有的已存在数据,接着再增添全量数据。这种情况不会发生在选择性构建中。选择性构建仅仅选择指定的模型元素停用,然后更新相应的数据到这些元素中。这意味着已经存在的数据并不会被删除。既然已经存在数据不会被删除,模型则不需要被停用。那些被选择构建的元素会被停用,表示如果用户想要查询这些停用的元素,他们会看到报错信息。
选择性构建的使用场景?
选择性构建是一种很好的方式用于更新数据模型,而不需要将整个模型停用来延长构建时间。基于模型的大小,一个模型有可能需要几个小时甚至几天来做全量的构建。如此长的构建时间仅仅为了增加一条新的维度减弱了频繁更改模型的灵活性。
如何使用?
从UI界面
在架构中,任何更改的元素都会被自动追踪。当你试图从UI界面构建模型,弹出的对话框会提供一个选项叫做选择性构建。这个选项是默认的,无论任何模型中的元素被更改需要重新构建。当然,如果你更想构建全部模型,也可以在这个界面选择。
构建模型接口
在构建模型的接口中有一个新的参数。这个参数在文档中被描述为:“pFactList是一个特殊属性的列表,存在于模型的事实表类中。如果pFactList被设定,构建过程会仅仅更新在这个事实列表中的行。这个列表可以用逗号分割或者用 $LB的格式。这个特殊的事实表更新时会被单独标记不可用于被搜索,以及与其相关的维度也不可用,否则的话则会收到报错提示。”
我会建议使用UI界面来部署模型的更改,接口方式用于部署关于系统层面的变更。
学习更多关于选择性构建,请参考文档。
文章
Johnny Wang · 十二月 19, 2021
我经常发现自己与现存客户和潜在客户就他们在访问数据方面的挫败感进行对话。他们最常见的话题是围绕对“速度的需求”展开的——可以理解,这是非常正确的。
随着数据继续以指数速度增长,企业——无论是专注于医疗健康、金融服务、零售、物联网还是制造——不仅需要快速接收数据,还需要在同一实例中对其进行分析,以便能够执行程序化、标准化的行动进而做出关键的业务决策。
那好消息是什么呢?为并发数据提取和查询提供几乎瞬时的性能已成为现实,这也是我们多年来一直在 InterSystems 提供和改进的东西。Gartner 将此功能称为“增强交易”,同时 Forrester 等其他公司将其称为“事务分析“等等。但是不管它被叫做什么,被夸赞到什么程度,实践是真正的检验,空谈不如实证。所以多年来我们一直在不断地衡量并努力提高我们软件在每个版本中的性能。事实上,在我们最新版本的 InterSystems IRIS 中,我们一些业务最复杂的客户的应用程序性能在过去两年中提高了 3 倍(甚至更多)。InterSystems IRIS 现在经过基准测试,可以在数十纳秒内提取数据、在内存中创建记录并将其编入索引,以便在硬盘上进行查询。从某种角度上来说,这一切的发生和结束不过是弹指一挥间。
图为:针对大客户应用程序的 InterSystems IRIS 数据平台的持续性能改进
但我们的许多客户和合作伙伴经常询问我们 InterSystems IRIS 的性能与他们正在使用或考虑的其他产品相比如何。 所以我们设计了一个性能测试,我们试图尽可能公平地衡量它。
对于那些经常访问我们的 GitHub 或 Open Exchange 页面的朋友,您可能已经看过了。 速度测试将 InterSystems IRIS 与来自许多不同云和数据管理供应商的流行数据库进行比较。 它包括在同一个数据库实例中同时处理提取和查询工作负载以模拟多工作负载用例,而这些实例应该具备以下特征:
a.) 不特定支持任何产品;
b.) 您可以轻松地在云或自己的电脑上运行;
c.) 可以扩展到您自己的数据和查询。
而我们也将这个测试作为可定制的开源代码发布。值得注意的是,速度测试旨在测试数据库的特定点——它们可以同时提取和查询多少数据,以及这如何影响性能。
举个例子,想想一家医院。 它需要具有并发分析的高数据提取率才能以高效率来执行管理,同时支持数千名用户同时查询他们个人信息、就诊信息等实时数据。 在某些情况下,所使用的数据库必须具有可扩展性、可靠性和同时为事务和分析查询提供高性能,所以它才可以承受施加在其上的压力,这一点至关重要。
我们设计了速度测试来模拟这种压力并记录数据库如何响应。
我们如何使用速度测试?
在这次的测试中,我们将 InterSystems IRIS 与其他数据平台进行了比较,这些平台均在 AWS 云中运行,并且运行时间均为 1,200 秒(20 分钟)。 选择 AWS 基础设施配置是为了确保比对双方的各个方面都有一一对应的比较。 根据客户的要求,我们目前正在将 InterSystems IRIS 与其他四种流行数据库进行比较:SAP HANA Express 2.0、AWS Aurora (MySQL) 5.6.10a、AWS RDS SQL Server 2017 和 Sybase ASE 16.0 SP03 PL08,公共云版 , 高级版。
在所有情况下,InterSystems IRIS 在提取和并发查询方面都优于其他产品,速度从 59.9% 到 67 倍不等。
为了保证我们在完全透明的背景下进行操作测试,我们在 GitHub 上发布了开源速度测试基准测试套件,并与 Enterprise Strategy Group (ESG) 的验证服务部门签订了合同,这是一家 IT 分析师、研究、验证和战略公司,为全球 IT 社区提供市场情报和可操作的洞察力,以审查和验证测试和结果。
速度测试发现了什么?
ESG 证实该测试做到了对各种产品比较的公平性,并且 InterSystems IRIS 显着优于其他领先的传统和内存数据平台,更快地提取更多数据(约 1 亿条记录),同时以更快的速度查询更多数据(超过 20,000 条记录/秒),实现了微秒查询响应时间。 您可以在我们与 ESG 举办的网络研讨会上详细了解结果和速度测试的确切工作原理。 网络研讨会结束后,您甚至会收到完整的 ESG 报告。
必须强调的是,我们未来还会做更多类型的测试,而这次我们使用的标准为所有产品创建了尽可能公平的测试。 但是,我们知道每种情况都不同,因此我们鼓励您前往我们的 GitHub 页面并在 AWS 中亲自测试该套件或在本地机器上使用 Docker,并根据您自己的具体需求,对测试或配置进行更改,以实现更紧密地匹配您的想法。
查看更多最新文章
在此处注册观看于 2020 年 8 月 5 日举办的 ESG 网络研讨会
查看原文
关于作者:Amir Samary
Amir Samary 已在数据库、互操作性和 InterSystems 技术方面工作了 20 多年。 Amir 致力于为使用 InterSystems 技术为阿根廷、巴西、智利、哥伦比亚、乌拉圭和美国的各个行业构建解决方案的合作伙伴、客户和开发人员提供支持。 这使 Amir 能够理解和试验不同技术、文化和基础设施现实中的模式和架构。 Amir Samary 目前担任解决方案架构经理,他领导 InterSystems 的一组解决方案开发人员。 他主修计算机科学,辅修数学。
文章
Claire Zheng · 六月 12, 2023
大家好!
这是一篇关于如何将视频嵌入您的帖子的简短文章。
其实很简单。您只需要按照以下步骤操作。
1. 打开您希望嵌入的B站视频,在视频右下角找到分享按钮;
2. 选择“嵌入代码”并复制代码
3.在社区帖子中切换到Source视图,并将您在步骤2中复制的代码粘贴在您希望嵌入视频的地方(如嵌在<p>后);
4.再次点击“Source”,回到编辑页面,您会看到如下“IFRAME”框;
5.双击红色的“IFRAME”,并如图所示填写视频尺寸(请务必按下图数值填写),点击“确定”,即可完成视频嵌入。
希望这个帖子能帮助到您:)
在评论部分留下您对这个主题的想法,或者告诉我们您还希望了解哪些社区玩儿法。
文章
Weiwei Gu · 六月 28, 2023
1. 区块链
当我写这篇文章时,比特币的价格还不到其成功顶峰时期的五分之一。因此,当我开始向某人讲述我的区块链经历时,我听到的第一句话是毫不掩饰的怀疑:“现在谁需要这个区块链东西?”
没错,区块链炒作已经减弱。然而,它所基于的技术将继续存在并将继续在特定领域使用。互联网通常提供大量描述这些技术的一般用法的材料
(例如在Medium和福布斯上)。
众所周知,区块链是一个分布式注册表,即分布在多个节点之间的数据库,每个节点都存储注册表的完整副本。区块链的主要特征是记录(交易)形成块,块形成块链。区块链仅支持追加操作。这意味着几乎不可能对已经保存在区块链中的交易进行更改。
网上有无数的区块链教程(如果您从未听说过区块链,可以从这个简单的视频开始)。
当区块链蓬勃发展时,人们多次呼吁在任何地方使用该技术。然而,可能需要区块链的项目/任务有某些明显的特征。
首先,必须有很多玩家/用户编写大量数据,这些数据必须一致且可信。
那么,就不应该存在每个人都信任的第三方。
必须有一个公共数据验证的机制。如果满足所有这些标准,考虑使用区块链可能是个好主意。
任何行业都可以找到这样的任务。 www.101blockchains.com项目汇总了有关潜在和现有区块链项目的信息,以及在各个行业中使用区块链技术的细微差别。
例如,区块链可用于医疗保健领域的以下任务:
用于安全地远程管理患者记录;
通过整个供应链中不可更改的交易来打击假药;
通过排除欺诈和篡改数据的可能性来提高临床试验的监控和有效性。
企业部门通常使用一种特殊类型的区块链,称为私有许可区块链。此类网络具有一组特殊的节点来验证交易。
然而,在开发第一个 InterSystems IRIS 区块链适配器时,我们选择了以太坊,这是一种属于无许可区块链类别的区块链 - 一个没有单一控制中心的开放平台。该决定是基于该区块链引擎的受欢迎程度以及具有大量工具和库的足够成熟的基础设施。请注意,您还可以使用以太坊工具创建私有区块链。
2. 适配器
让我们实际上回到适配器。
InterSystems IRIS 中的适配器(就像 Ensemble 中一样)是 InterSystems IRIS 类的类或包,允许您与外部系统交互。 InterSystems IRIS 适配器分为入站(当外部系统是交互发起者时,用于从外部系统接收数据)和出站(当 InterSystems IRIS 是交互发起者时,用于与外部系统一起工作)。
IRIS 以太坊适配器是出站适配器,与大多数其他 InterSystems IRIS 适配器略有不同。该适配器还包括一个小型 NodeJS 模块。其架构如图 1 所示。
图1。适配器的 NodeJS 模块使用现有的 NodeJS 库来与以太坊配合使用。
该适配器允许您执行以下操作:
将智能合约部署到以太坊(我们计划撰写另一篇文章,涵盖智能合约、开发工具和示例)。
调用智能合约方法:改变区块链状态的方法和不改变区块链状态的方法
保存交易(将资金从一个钱包转移到另一个钱包)
调用额外的方法来获取区块链的状态
记录所有请求(由 NodeJS 模块完成,方便调试)
该适配器附带 OpenExchange 上的源代码。
3. 一个简单的例子
该适配器附带一个“Hello world”示例。
要开始使用以太坊(并运行此示例),您将需要以下内容:
选择您要使用的网络。 Ropsten 等测试网络通常用于开发目的
在此网络中创建一个钱包并向其存款
安装本地以太坊客户端(例如 Geth)或获取与云提供商(例如 Infura)合作的密钥
配置业务操作时需要设置以下内容(图2):
NodeJS模块工作的服务器和端口(默认使用3000端口)
提供商设置(在本例中访问 Infura)
访问凭据(指定您的钱包号码作为用户名,指定您的私钥作为密码。InterSystems IRIS 将访问凭据存储在一个单独的数据库中,您必须为其启用加密)
图 2.
为了使用智能合约,您需要在文件系统中创建(为您将使用的每个智能合约)一个文件夹,并在其中放置两个文件:*abi.txt*字节码.txt
这些文件应包含智能合约的 ABI 及其字节码。智能合约的 ABI 是 JSON 格式的接口的正式描述。 ABI 和字节码是在编译智能合约时创建的。
仅部署合约时需要字节码。
您可以使用 InterSystems IRIS 互操作性测试服务来测试业务运营。
图 3 说明了如何使用测试服务部署智能合约。调用此业务操作的结果是包含交易哈希的消息。
图 3.
您可以使用 ropsten.etherscan.io (https://etherscan.io/) 浏览器找到此交易并获取已部署的智能合约的地址。
要使用适配器调用智能合约的方法,您需要在生产配置中填写以下字段:ContractFolder 和 ContractAddress。
智能合约的执行代码非常简单:
-----0-----
将智能合约的地址和 ABI 传递给适配器的 GetContract 方法,以创建一个智能合约对象,然后将其用于调用方法。在这种情况下,必须在智能合约中定义返回字符串的 hello() 方法。
在这个例子中,hello()方法不会改变区块链状态,因此可以同步调用。然而,改变区块链状态的方法的执行时间可能相当长(因为必须等待交易被验证)。
要调用此类方法,请使用 InterSystems IRIS 提供的延迟响应机制。适配器必须提交延迟响应令牌,当交易获得批准时,NodeJS 模块会将其执行结果传递给 InterSystems IRIS。为此,您需要配置一个 Web 应用程序并向生产添加额外的业务服务来处理收到的响应。
以下是调用改变区块链状态的方法的代码:
-----1-----
在这种情况下,在调用智能合约的 setName() 方法之前,您需要指定许多参数,包括延迟响应令牌。
在下一篇文章中,我们将详细介绍智能合约,并提供使用 InterSystems IRIS 以太坊适配器解决实际问题的示例。
公告
Claire Zheng · 七月 10, 2023
Hi 开发者们,
是时候宣布InterSystems 2023 年度编程大奖赛的获奖者了!
感谢提交20 份应用申请出色参与者们 🔥
专家提名奖
🥇第一名,7,000 美元,获奖者@Henrique Dias, @Henry Pereira, @José Roberto Pereira ,获奖应用 iris-fhir-generative-ai
🥈第二名,5,000 美元,获奖者@Ikram Shah, @Sowmiya Nagarajan,获奖应用 IRIS FHIR Transcribe Summarize Export
🥉第三名,3,000 美元,获奖者 @Muhammad Waseem 获奖应用irisChatGPT
🏅第四名,2,000 美元,获奖者@Dmitry Maslennikov,获奖应用ZProfile
🏅第五名 ,1,000 美元,获奖者@Ikram Shah, @Sowmiya Nagarajan ,获奖应用 FHIR - AI and OpenAPI Chain
🌟 200 美元,获奖者:@Robert Cemper, 获奖应用oex-mapping
🌟 200 美元,获奖者:@Rob Ellis, 获奖应用RDUH Interface Analyst HL7v2 Browser Extension
🌟 200 美元,获奖者:@davi massaru teixeira muta, 获奖应用fhir-chatGPT
🌟 200 美元,获奖者:@davi massaru teixeira muta, 获奖应用interoperability_GPT
🌟 200 美元,获奖者:@Oleksandr Zaitsev ,获奖应用password-app-iris-db
🌟 200 美元,获奖者:@Daniel Aguilar 获奖应用irisapitester
⭐️ 100 美元,获奖者:@Shanshan Yu,获奖应用IntegratedMLandDashboardSample
⭐️ 100 美元,获奖者:@Zhang Fatong 获奖应用 IntegratedML-IRIS-PlatformEntryPrediction
⭐️ 100 美元,获奖者:@Sean Connelly 获奖应用DevBox
⭐️ 100 美元,获奖者:@John Murray 获奖应用 oex-vscode-snippets-template
⭐️ 100 美元,获奖者:@Sergey Mikhailenko,获奖应用appmsw-warm-home
⭐️ 100 美元,获奖者:@yurimarx Marx, 获奖应用 FHIR Editor
⭐️ 100 美元,获奖者:@Oliver Wilms,获奖应用iris-user-manager
⭐️ 100 美元,获奖者:@Oleh Dontsov 获奖应用 Recycler
⭐️ 100 美元,获奖者:@Oleh Dontsov 获奖应用 IRIS Data Migration Manager
社区提名奖
🥇第一名,3,000 美元,获奖者@Henrique Dias, @Henry Pereira, @José Roberto Pereira ,获奖应用 iris-fhir-generative-ai
🥈第二名,2,000 美元,获奖者@Shanshan Yu,获奖应用IntegratedMLandDashboardSample
🥉第三名,1,000 美元,获奖者@Zhang Fatong,获奖应用 IntegratedML-IRIS-PlatformEntryPrediction
我们向所有参赛者和获奖者表示最诚挚的祝贺!
下次一起来参赛吧!;) 热烈祝贺 @Shanshan Yu@Zhang Fatong二位中国选手!期待以后看到更多的优秀作品!
文章
Claire Zheng · 四月 21, 2021
近日,InterSystems极客俱乐部举办了线上直播“InterSystems Caché系统运维培训”,这是系列视频之一。InterSystems中国资深售前顾问吕正之讲解了“InterSystems Caché架构、备份与恢复”。
文章
Claire Zheng · 四月 3, 2023
亲爱的社区开发者们:
感谢第四届 InterSystems 技术征文大赛(InterSystems IRIS 教程)的优秀参与者们,我们有很棒的新文章供您阅读和欣赏!
🌟 24 篇精彩文章🌟
是时候宣布此次竞赛优胜者啦!
让我们认识一下获奖者和他们的文章:
⭐️ 专家奖——由 InterSystems 专家选出的获奖者:
🥇 第一名: InterSystems Embedded Python in glance 作者: @Muhammad Waseem
🥈 第二名: InterSystems Embedded Python with Pandas - 第 1 部分,作者:@Rizmaan Marikar
🥉第三名: SQLAlchemy - 将 Python 和 SQL 与 IRIS 数据库结合使用的最简单方法 作者:@Heloisa Paiva
⭐️开发者社区奖—— 由社区成员选出的获奖者,获得最多赞的文章:
🏆 设置 VS Code 以使用 InterSystems 技术 作者:@Maria Gladkova
此外!
⭐️我们想根据贡献的数量奖励更多的作者:
@Robert Cemper:4 篇文章!
@Heloisa Paiva: 3 篇文章!
@Iryna Mykhailova: 3 篇文章!
这些作者将获得适用于 iPad 的 Magic Keyboard Folio 或 Bose Soundlink Micro 蓝牙扬声器!
让我们祝贺所有参加 英文社区 #4第四届技术征文大赛的英雄们:
@Robert Cemper
@Heloisa Paiva
@Muhammad Waseem
@王喆
@Iryna Mykhailova
@Maria Gladkova
@Yone Moreno
@Akio Hashimoto
@Julian Matthews
@Daniel Aguilar
@water huang
@Oliver Wilms
@Rizmaan Marikar
@姚 鑫
@Zhong Li
@Jude Mukkadayil
@Roger Merchberger
谢谢你们!您为我们的开发社区做出了卓越的贡献!
我们将联系参赛者以寄送礼品。 再次感谢所有中国选手的热情参与!@姚 鑫@王喆@water huang