下一篇:案例: 建立只能使用SQL的用户

IRIS通过认证(Authentication)与授权(Authorization)两项机制控制外部用户对系统及应用、数据资源的可访问性。因此。如需要进行权限控制,则需要通过配置认证和授权进行。

IRIS中的认证

认证可以验证任何试图连接到InterSystems IRIS®的用户的身份。一旦通过认证,用户就与IRIS建立了通信,从而可以使用其数据和工具。有许多不同的方法可以验证用户的身份;每种方法都称为验证机制。IRIS 通常被配置为只使用其中一种方式。
支持的认证方式
* 实例认证:通过用户名/密码对登录平台,即密码认证
* LDAP:通过第三方LDAP服务器(如Windows Active Directory )完成认证
* 操作系统认证:建立操作系统用户-平台用户映射,使用操作系统用户登录平台
* Kerberos:使用Kerberos协议进行认证
* 代理认证:使用自定义的代码实现认证过程

系统服务与认证

在安装时,IRIS会启动一系列系统级的服务用与控制与外部用户或系统的交互,这些服务都绑定了默认的认证机制

图中红框标出的即为系统安装后会自动启用并需经认证才可使用的系统服务,认证手段可配置。
例如,如果变更%Service_Console的身份验证方法,取消密码方法,用户就不能通过输入用户名密码登入Terminal。
通过Portal的菜单 系统管理 > 安全 > 服务 可访问该设置。

账户控制参数

通过系统管理 > 安全 > 系统安全 > 系统范围的安全参数中的选项可对于用户名/密码认证手段的行为进行更多的约束。

  • 非活动限制 - 指定用户账户不活跃的最大天数,它被定义为成功登录之间的时间。当达到此限制时,该帐户将被禁用。值为0(0)表示对登录之间的天数没有限制。[对于最低安全级别的安装,默认为0,对于正常和锁定的安装,默认为90]。
  • 无效登录限制 (0-64) - 指定连续不成功的登录尝试的最大次数。在达到此限制后,要么禁用账户,要么对每次尝试进行递增的时间延迟;行动取决于如果达到登录限制字段则禁用账户的值。值为0(零)表示对无效登录的次数没有限制。[默认为5]
  • 如果达到登录限制,则禁用账户 - 如果选中,则指定达到无效登录次数(在前一字段中指定)将导致用户账户被禁用。
  • 密码有效期天数(0-99999) - 指定密码过期的频率以及用户更改密码的频率(天数)。当初始设置时,指定密码过期的天数。0(0)表示密码永远不会过期。不会影响已设置了下次登录时更改密码字段的用户。[默认为0]

需要特别注意的是,密码有效性、过期和禁用账户等设置会影响IRIS实例的所有账户,包括IRIS超级管理员账户。如触发了控制策略,则在更新这些帐户的信息之前,可能无法进行各种操作,这可能导致意外的结果。如超级管理员账户被锁定,则需要通过紧急模式启动实例再进行修改。

对于系统可用的认证手段的配置和其他可用的安全配置,请参见Security Administration Guide

IRIS中的授权

授权模型

InterSystems公司的授权模式采用基于角色的访问控制。

  • Users – 用户
  • Roles – 角色
  • Privileges – 权限
  • Resources – 资源 | Permissions – 许可

在这种模式下,用户拥有与分配给各自用户身份的角色相关的权限。

  • 一个角色是一个命名的特权集合
  • 一个用户可以拥有一个以上的角色
  • 权限分配给角色,角色分配给用户

其中,Roles就是权限的集合,而权限提供对资源的特定类型的访问的许可。

  • 可控资源: 数据库,服务,应用(包括Web应用 )和其他
  • 可选用的许可: Read, Write or Use,其中执行代码需要数据库的读权限

资源的定义

资源是一项相对抽象的概念,用来指代IRIS中的数据库,服务,应用等可被访问的对象。例如,对于数据库,在建立时默认采用%DB_%DEFAULT指代,也可自定义资源(数据库资源必须以%DB_开头):

对于Web应用,默认不需要通过资源控制,即所有可登录用户都可访问(但该用户进程不一定能访问到数据,还需参照是否具有对数据库的访问权限)。如通过分配资源进行控制,则登录用户还需具有资源才能访问这个Web应用:

因此,一项权限实际上是指对某个资源的一些特定操作的集合。
例如,对于数据库UserDB具有读写操作许可的权限A,对于Web应用/csp/sys具有使用操作许可的权限B。如果我们将这两项权限都赋给角色RoleA,那么这个角色就同时拥有A权限和B权限,从而能够访问数据库UserDB和访问Web应用/csp/sys。

SQL授权

除了对数据库进行授权外,IRIS作为一个数据平台,需要对外提供数据访问。因此,IRIS也提供了SQL授权对用户可执行的SQL进行细粒度的权限控制。
SQL的授权可以分配给角色或用户。但通常在企业环境中,用户数量会很多,仍然需要对SQL用户进行分组,根据分组规划角色,通过角色进行授权的控制,才能有效降低维护授权所需的工作量。
SQL的授权针对SQL类型,可分为库、表级授权。
对于Create table、drop view、truncate table这一类的DDL,使用库级授权,即用户可在特定的库中执行建表、删除视图等经过授权的操作。如下:

对于Select、update等DML,则使用表级授权,使用户能够通过DML访问特定的表中的数据。如下:

除通过Portal操作之外,对于SQL的授权,还可使用IRIS SQL中的额GRANT语句,例如:

GRANT * ON Schema Test TO TestRole

这个SQL即可以将当前操作数据库下Schema Test中的所有表的所有权限都赋给TestRole这个角色。 关于GRANT语句的用法,可参见GRANT指令
关于GRANT语句的用法,可参见

以上即为IRIS中进行权限控制所需掌握的概念和内容,在后续文章中,我们会结合实例向大家介绍其使用。

下一篇:案例: 建立只能使用SQL的用户

推荐阅读

Security Administration Guide - https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI...https://docs.intersystems.com/irisforhealthlatest/csp/docbook/DocBook.UI...

IRIS中的权限管理相关推荐

  1. java linux 权限管理_权限管理java实现(源于Linux中的权限管理算法)

    这个帖子由来已久吧,我也是到处搜到的,然后仔细学习,果然博大精深,然后加强点弄点自己的东西 我已声明 部分转载!! 向大家介绍一种很不错,也是Linux中的权限管理算法. 定义a^b为:a的b次方 假 ...

  2. 前后端分离中的权限管理思路

    在传统的前后端不分的开发中,权限管理主要通过过滤器或者拦截器来进行(权限管理框架本身也是通过过滤器来实现功能),如果用户不具备某一个角色或者某一个权限,则无法访问某一个页面. 但是在前后端分离中,页面 ...

  3. 7.SpringSecurity中的权限管理

    SpringSecurity中的权限管理   SpringSecurity是一个权限管理框架,核心是认证和授权,前面已经系统的给大家介绍过了认证的实现和源码分析,本文重点来介绍下权限管理这块的原理. ...

  4. linux中的权限管理,Linux中的用户和权限管理

    Linux是多用户,多任务操作系统:多用户是指多个用户可以同时使用系统资源,而多任务指同时运行多个进程. 用户是能够获取系统资源的权限的集合,Linux通过用户实现资源分隔. 用户组是具有相同特征用户 ...

  5. 超级账本Fabric中的权限管理和策略

    权限管理是区块链网络十分重要的功能,负责控制某个身份在某个场景下是否允许采取某个操作(如读写某个资源). 超级账本 Fabric 项目通过策略(Policy)来灵活指定各场景下的操作权限. 策略应用场 ...

  6. Linux系统中的权限管理

    一.权限查看与读取 1.权限管理 ls -l file ##文件 ls -ld dir ##目录权限查看 matadata 文件原数据 2.权限的读取 文件/目录权限信息 二.普通权限的类型及作用 1 ...

  7. Linux 系统中的权限管理

    ### 一.权限查看及读取  ### # 1.权限查看 #         ls -l     file        ##查看文件权限 ls -ld    dir        ##查看目录权限 # ...

  8. 六.Linux系统中的权限管理

    1.权限查看及读取 权限查看 ls -l file #查看文件权限 ls -ld dir #查看目录权限 权限的读取 文件的属性被叫做文件的元数据(meta data) 一种元数据用1个byte来记录 ...

  9. 五、Linux系统中的权限管理

    权限的查看和读取 1.权限查看 ls -l file        ##查看文件权限 ls -ld dir        ##查看目录权限 2.权限的读取 文件的属性被叫做文件的元数据(meta da ...

最新文章

  1. 怎么才能最短时、高效、踏实地学习 Python(附链接)
  2. 什么是(功能)反应式编程?
  3. 青龙羊毛——顺丰科勒(搬运)
  4. 成功解决RuntimeWarning: invalid value encountered in double_scalars
  5. 【Vegas2008】7月19日-凉粉的做法
  6. Python在SQL Server管理中的重要性
  7. ibatis.net 学习笔记
  8. Redis支持的数据类型及其使用场景
  9. 通过USB设置手机连接电脑上网
  10. 18 获取给定的序列的所有排列, 组合
  11. 5年后端WEB开发者的开机必备软件(md版本)
  12. 训练fater rcnn时出现path not exist问题
  13. macos esc按键失效,无法退出vim
  14. matlab怎么复数相位,怎么求复数相位
  15. 搭建Redis服务器: 设置变量school,值为tarena 查看变量school的值
  16. 几何向量:空间三角形外心和法向量
  17. C/C++编译器并行优化技术:并行优化针对多核处理器和多线程环境进行优化,以提高程序的并行度
  18. 解决 Matlab 命令行窗口,画图中图例中文乱码的情况
  19. JavaScript精编干货
  20. Java垃圾回收器(一)新生代垃圾收集器

热门文章

  1. CPU卡程序设计实例(六)ETU配置
  2. 脑电伪迹长什么样呢?看这篇就够了
  3. spring事务的传播
  4. win7电脑无线网卡服务器,Win7系统下怎么查看无线网卡是否支持5G?
  5. Python工作日常操作
  6. 桥牌笔记:忍让几墩?
  7. 使用TCP协议写的关于ftp_tcp上传文件下载文件显示文件的小项目(一对一)
  8. 使用PPG信号计算脉率和血氧
  9. 游戏代码-LOL卡萨丁斩杀伤害计算器
  10. 使用CompletableFuture并发处理任务并将结果汇总