暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

紫金桥跨平台实时数据库安全管理总述

紫金桥软件 2021-09-25
512

紫金桥跨平台实时数据库具有完善的安全管理体系。安全管理机制由用户、用户组、被管理对象、安全区构成。安全管理不只是对本系统的客户端有效、对各种外部访问(如CommServer、Web Service、Modbus、OPC)也同样有效,是否启动某个路径的外部访问限制有专门的开关选项。
数据库中的点是核心保护对象,每种点类型都具有安全属性。所有对数据库的访问都要经过点的安全审核。画面中的元素图元、画面、配方也具有安全属性。另外系统提供了丰富的安全管理属性与函数,可实现复杂的安全访问控制。

一、 安全管理概述

1、安全管理涉及的内容:

安全管理涉及用户与用户组、安全设置、点组态(基本页、报警页)、配方组态、窗口属性、动画链接中的“安全限制”、数据源中的变量属性、数据源高级选项中登录账户等内容以及用户管理、权限判断相关函数。

2、安全设置的途径:

1)图元级安全:通过动画链接中的“访问限制”。

2)画面安全:画面属性中的安全设置。

3)点的安全:点的读、写、报警确认的安全属性在点组态中设置。对数据库变量写操作的进一步限制在数据库变量(在数据源中的变量)中设置。

4)配方安全:配方的使用与配方维护,在配方组态界面配置。

5)用户也可以通过脚本实现特殊的安全限制。

上述安全设置只有在“安全设置配置”中启动了安全管理,且启动了VIEW或Web客户端的读写限制才起作用。外部程序访问的限制则需要只要在“安全设置配置”中勾选相应的限制才起作用。外部程序受点的安全属性限制,与图元、画面、配方等设置项无关。

3、安全防护路径示意图

二、用户与用户组以及保护对象

用户:用户有账户名、姓名、级别、超时时间(登录超过一定时间则自动退出)、操作、审核权限、管理员账户、密码永不过期、下次登录需修改密码、账户已禁用等属性。

密码强度:密码强度在安全设置中指定,强度分为低、中、高三级。低级只要求密码不为空即可。中级要求密码不少于6个字符,且由字母、数字、特殊字符(除了字母、数字以外的字符)中的两种组合而成,而高级比中级更加强一步,需由三种组合而成。

密码时限:密码设置为永不过期的表示没有时限,否则为有时限,默认时限为42天,该参数可在安全设置中更改。

下次登录需修改密码:若该属性被设置,则账户登录时会提示修改密码,当用户修改了密码后则不再提示。

账户已禁用:若该属性被设置则账户处于禁用状态,即不能再登录该账户,直到解禁。

用户锁定:在安全设置中指定,密码重试次数超过指定的次数则账户被锁定,只有超过指定间隔才能再次尝试登录。

用户组:是用户的集合,用户组为一组用户的代表。

安全区:是用户组的集合,代表一组用户组。

登录服务器:登录服务器是指用于整个系统用户验证的服务器。若不指定登录服务器(适合于单机版)则每个进程(如DB、VIEW等)使用自身的用户信息。在安全设置中指定登录服务器。指定登录服务器后,系统中每个进程都使用相同的用户与用户组信息。当信息(包括用户和用户组)改变时每个进程会自动进行用户信息同步。在分布式配置中必须指定统一的登录服务器以保证用户信息一致。

审核记录服务器:该服务器保存所有的操作记录,包括所有客户端的操作信息。所有记录内容以系统特有的加密形式记录,系统没提供任何更改记录的手段,从而保证记录的真实性。记录内容只能通过系统提供的专有工具AuditView程序查看。信息不但记录在审核记录服务器上,每个客户端也同时保存了记录,以避免单点故障引发记录丢失。本地保存的信息通过LogView查看。

保护对象:安全管理保护的主要对象是数据,即对数据读写的操作。另外还包括配方和窗口的保护,配方内容的保密和对配方修改的限制以及窗口的访问限制。对象隶属于某个安全区,只有安全区内的用户才能访问该对象。管理员账户则不受此限制。

用户、用户组、保护对象之间关系:图中仅以点作为被保护对象的代表。

图中有三个用户,group1包括user1,user2。group2包括user2,user3。

用户user2属于group1、group2两个用户组。

位号TAG1只属于group1,所以只能被用户user1、user2访问。

位号TAG2即属于group1、又属于group2,所以能被用户user1、user2、user3访问。

位号TAG3即属于group2,所以能被用户user2、user3访问。

三、对象安全设置

1、点的安全区属性

点的安全属性包括读、写访问限制,具有报警功能的点还具有报警确认操作限制。

点的安全设置:点的安全设置包括读、写两个安全区的设置,即点的读、写保护可以分别指定。

报警确认安全设置:可对报警确认进行限制,只有属于该点可写用户组的用户才可进行确认操作。限制分为:1、无限制。2、操作权。3、操作权+审核权。

点的外部访问限制:点的安全区除了对客户端访问限制外,还能限制外部程序的访问,如通过OPC服务,Modbus服务CommServer(TCP协议),API接口,WebService等的访问。是否限制也可以在安全设置中指定,如下图红色框所示。

点的安全参数:

点的安全区属性为参数SecuRead与SecuWrite。分别对应:读安全区与写安全区。

可以在脚本中通过函数

IsUserPermission(UserName,Tag.SecuWrite)先用CheckUser验证用户)或IsSetPermission(Operater,Verifier,VarName)来判断指定的用户是否拥有操作权限。

在脚本中可以主动调用SetDataWithVerifyDlg安全审核框来限制对变量赋值。

2、VIEW与Web客户端访问限制

启用VIEW与Web客户端的访问限制,不但要启用安全管理,还需要在安全设置中启用VIEW访问限制或WEB访问限制。默认不对自身客户端限制。如下图所示:

VIEW与Web客户端访问限制可分别指定。并可指定只限制写、还是读写都限制。默认只对Web客户端的写进行限制。

3、数据库变量安全设置

数据库变量位于数据源下,如下图所示。对数据库变量可以指定启用操作审核。指定了审核的变量在操作时需要操作员与审核员双重认证。

数据源中的账户:数据源账户用于指定与数据库通信的默认账户。在未登录时使用该账户,登录后则切换到所登录的账户。

4、配方安全区属性

与点的安全区属性类似,配方分为使用配方与维护(增、删、改)配方两方面的保护,使用与维护配方可单独指定安全区,并可在操作权限中指定是否需要审核者确认。配方只有在人为操作时受限,在自动执行脚本中不受限制。

5、画面安全区

画面安全区用于限制对窗口的访问,只允许安全区内的用户打开。

窗口访问限制:无论哪种方式打开都受限。

6、图元安全区

在动画连接的“访问限制”可以指定图元所属安全区。可指定对非安全区的限制是隐藏还是禁止操作。

四、安全管理相关属性函数

系统提供了很多安全管理相关的函数、属性和窗口。用于用户登录、注销,动态增、删、改用户与用户组。

属性

1

UserName

当前用户名

2

UserLevel

当前用户级别

3

UserGroup

当前登录账户所属用户组

相关系统窗口

(系统窗口位于安装目录下子目录SysWin下)

4

sysoperateack

变量操作审核窗口

5

sysrecipeack

配方操作审核窗口

6

sysalmack

报警确认审核窗口

函数

7

Int Login(String Name, String Pass)

用户登录

8

Void Logout()

注销当前用户

9

Void LoginDlg()

调用用户登录对话框

10

Bool CheckUser(String Name, String Pass)

验证用户,用于判断输入的用户名与密码是否正确

11

Bool SetDataWithVerifyDlg(String VarName, void Value)

下置数据带有操作审核

12

String GetAuditDataSource()

得到安全审核数据源名

13

Bool GetAuditDsDescAndTable(String &ConnectDesc, String &TableName)

得到安全审核数据连接描述和表名

14

Bool AddUser(String Name, String TrueName, String Pass, Int Level, Bool OperRight, Bool VerifyRight, Int TimeoutLimit)

增加新用户

15

Bool RemoveUser(String Name)

删除用户

16

String GetUserTrueName(String Name)

得到用户真实姓名

17

Int GetUserLevel(String Name)

得到用户级别

18

Bool IsUserOperate(String Name)

用户是否拥有操作者权限

19

Bool IsUserVerify(String Name)

用户是否拥有审核者权限

20

Int GetUserTimeoutLimit(String Name)

得到用户操作时限

21

Bool SetUserLevel(String Name, Int Level)

设置用户级别

22

Bool SetUserOperate(String Name, Int Flag)

设置操作者权限

23

Bool SetUserVerify(String Name, Int Flag)

设置审核者权限

24

Bool SetUserTimeoutLimit(String Name, Int Limit)

设置用户操作时限

25

String Array GetUserBelongGroups(String Name)

得到用户隶属的用户组

26

String Array GetUserNames()

得到用户名称列表

27

Bool AddGroup(String Name, String Comment, String Array Users)

增加用户组

28

Bool RemoveGroup(String Name)

删除用户组

29

String GetGroupComment(String Name)

得到用户组说明

30

Bool SetGroupComment(String Name, String Comment)

设置用户组说明

31

Bool AddUserToGroup(String Name, String User)

用户组增加用户

32

Bool RemoveUserFromGroup(String Name, String User)

用户组移除用户

33

String Array GetGroupNames()

得到组名称列表

34

Bool ChangeUserPass(String Name, String Pass)

改变用户口令

35

String Array GetGroupUsers(String Name)

得到组中用户列表

36

Bool IsUserPermission(String User, Int Secu)

用户是否属于SECU所规定的用户组

37

Bool IsUserAdmin(String Name)

是否为管理员账户

38

Bool SetUserDisable(String Name, Bool Disable)

禁止账户

39

Bool IsUserDisable(String Name)

账户是否被禁止

40

Bool IsUserPassTimeout(String Name)

账户密码是否过期

41

Bool SetUserChangePassFirst(String Name, Bool Change)

设置账户登录需改密码

42

Bool IsUserChangePassFirst(String Name)

账户登录是否需要修改密码

43

Bool SetUserPassNoLimit(String Name, Bool NoLimit)

账户密码永不过期

44

Bool IsUserPassNoLimit(String Name)

账户密码是否永不过期

45

Int CalcPassLevel(String Pass)

计算给定字符串的密码强度

46

Bool IsSetPermission(String Operator, String Checker, String VarName)

是否允许指定用户操作,用户包括操作者与审核者

文章转载自紫金桥软件,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论