热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

DB210新特性:RCAC基于行和列级别的权限控制

在客户环境中,有可能存在着一些表记载的信息需要被不同角色的用户来访问。应用需要控制表中的一些敏感信息只能被特定的用户访问。此前用户一般只能通过创建多个视图和开发应用增加逻辑等来做到这一点。

在客户环境中,有可能存在着一些表记载的信息需要被不同角色的用户来访问。应用需要控制表中的一些敏感信息只能被特定的用户访问。此前用户一般只能通过创建多个视图和开发应用增加逻辑等来做到这一点。

RCAC 通过对表里面行和列的访问权限控制,可以简单的实现这种安全性需求。安全访问得到控制,开发应用变的简单。

DB2 Galileo,也就是 DB2 的 V10 版本是 IBM 在 2012 年推出的新产品。原先的 DB2 pureScale 可以说是 DB2 中的一个独立分支,版本号为 9.8,现在也集成到了 DB2 Galileo 中。DB2 Galileo 不仅集成了 DB2 pureScale,在很多方面也都有大的改进,并且开发了许多新的功能。例如在原先杰出的压缩技术基础上引入了页内进一步压缩机制,获得更好的压缩效率;多温度控制功能,帮助客户解决如何优化利用不同的存储设备,获得更好的性能效果,与 DB2 的工作负载管理结合,最优系统资源利用;新的索引查询技术,无需建立冗余的索引,使用现有综合索引获得更快的查询速度;新的客户端导入数据的技术可以帮助客户能够并行更高效率导入数据,数据几乎实时可见等等。本文中将关注 DB2 中关于细粒度的权限控制 RCAC(Row and Column Access Control)特性。顾名思义,这个特性能够让用户的权限控制细化到行和列的级别。

RCAC 的应用场景

细粒度的权限控制并不是一个新兴的需求,这在长久的应用中一直会被提到。例如在客户环境中,有可能存在着一些表记载的信息需要被不同角色的用户来访问。应用需要控制表中的一些敏感信息只能被特定的用户访问。这些敏感信息,可能是一些列的内容不应被特定用户访问到,也有可能是表中的一些条目(行)不应被展示。为了做到这一点,用户一般需要通过创建视图或者开发应用增加逻辑等来做到这一点。即便如此,因为仅仅在应用层做了限制,并没有规避用户能够访问表中敏感数据的风险。RCAC 通过对表里面行和列的访问权限控制,可以简单的实现这种安全性需求。不仅安全访问得到控制,而且开发应用也变的简单。

RCAC 的技术介绍

RCAC 是对表中行和列的访问控制。对于行的控制,RCAC 使用的是创建 Permission(许可)的技术,能够控制用户对于表的访问只能查询到自己应该看到的信息,其他条目信息不应该被该用户察觉。假如一张表有 100 个条目,某个特定的角色只应访问 10 个条目,那么对于这个用户来说,他能看得的仅仅是一张具有 10 个条目的完整的表。他的任何查询,只会访问到这十个条目。对于列的控制,RCAC 的展示技术和行不太一样。RCAC 使用的是 Data Mask(面具)技术,也就是在敏感信息的列上可以创建面具,对于这些敏感的列,应该获得该信息的用户仍然可以正常查看,但是不应访问到此信息的只能看到数据返回的是一张面具,而不是真实的值。所以无论任何用户,都可以看到表的真实结构,不会给应用开发带来麻烦,使用同样的查询语句,最后的结果会因人而异。下面通过一个例子来看如何应用 DB2 10RCAC 技术。在这个例子中,使用了 DB2 的 sample 数据库。如果用户拿到 DB2 10 的安装介质,就可以来尝试下面的实现步骤。

RCAC 技术实现案例

安装 DB2 10 环境和 sample 数据库

首先在操作系统上安装 DB2 10 副本,然后为实例用户创建实例,本文中使用的实例用户是 db2inst1。查看 DB2 版本为 V10。然后创建 sample 示例数据库。

清单 1. 查看 DB2 版本

				
 db2inst1@idb1122a:~> db2level 
 DB21085I  Instance "db2inst1" uses "64" bits and DB2 code release "SQL10010"
 with level identifier "0201010E". 
 Informational tokens are "DB2 v10.1.0.0", "s111206", "LINUXAMD64101", and Fix 
 Pack "0". 
 Product is installed at "/opt//db2/V10.1". 

清单 2. 创建 sample 示例数据库

				
 db2inst1@idb1122a:~> db2inst1@idb1122a:~> db2sampl -dbpath /db2/sample -name sample 

  Creating database "sample" on path "/db2/sample"... 
  Connecting to database "sample"... 
  Creating tables and data in schema "DB2INST1"... 
  Creating tables with XML columns and XML data in schema "DB2INST1"... 

  'db2samp' processing complete. 

定义相关用户和角色

DB2 权限控制是针对访问者的控制,也就是最终用户。DB2 的用户认证是由操作系统或者第三方用户认证软件来完成的。所以本案例中需要在操作系统创建连接数据库的用户。本案例在操作系统创建了两个用户 pernal 和 sanders 用以展示。

清单 3. 创建角色

				
 db2inst1@idb1122a:~> db2 create role manager 
 DB20000I  The SQL command completed successfully. 

清单 4. 关联用户和角色

				
 db2inst1@idb1122a:~> db2 grant manager to sanders with admin option 
 DB20000I  The SQL command completed successfully. 

到此可以看到 , 案例的连接用户有两个。Sanders 是一个 manager,而 pernal 就是一个普通职员。本文设计的情景中,这两个用户多会去访问 staff 这张表。Sanders 可以看到 staff 里面自己和属于自己员工的信息。而 pernal 只能看到自己的信息。在 staff 这张表中有一列 SALARY,记载的是每个人的薪水信息,这个信息是机密的,只有员工自己能看到。所以无论是 Sanders 还是 pernal,他们都只能看到自己的 salary 信息,而不能看到其他人的,即使 Sanders 是 manager,他也不能看到自己员工的财务信息。

推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • MyBatis错题分析解析及注意事项
    本文对MyBatis的错题进行了分析和解析,同时介绍了使用MyBatis时需要注意的一些事项,如resultMap的使用、SqlSession和SqlSessionFactory的获取方式、动态SQL中的else元素和when元素的使用、resource属性和url属性的配置方式、typeAliases的使用方法等。同时还指出了在属性名与查询字段名不一致时需要使用resultMap进行结果映射,而不能使用resultType。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • Linux磁盘的分区、格式化的观察和操作步骤
    本文介绍了如何观察Linux磁盘的分区状态,使用lsblk命令列出系统上的所有磁盘列表,并解释了列表中各个字段的含义。同时,还介绍了使用parted命令列出磁盘的分区表类型和分区信息的方法。在进行磁盘分区操作时,根据分区表类型选择使用fdisk或gdisk命令,并提供了具体的分区步骤。通过本文,读者可以了解到Linux磁盘分区和格式化的基本知识和操作步骤。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
author-avatar
我就是老笨2013
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有