设为首页 收藏本站
查看: 1124|回复: 0

[经验分享] DB2 数据库安全总述

[复制链接]

尚未签到

发表于 2016-11-18 08:47:29 | 显示全部楼层 |阅读模式
  DB2 中有三种主要机制允许 DBA 实现数据库安全性计划:认证、授权和特权
  DB2 内的五种不同权限级别是 SYSADM、SYSCTRL、SYSMAINT、DBADM 和 LOAD。
  登录到安装有 DB2 的机器。发出下列命令:
  db2 attach to db2inst1
  这里,认证是隐式执行的。使用的是登录到机器时所使用的用户标识,并且假定操作系统已经验证了该用户标识。
  db2 connect to sample user tst1 using mypass
  db2 connect to sample user tst1 using mypass new chgpass confirm chgpass
  改变密码
  类型 描述
  SERVER 在服务器上进行认证。
  SERVER_ENCRYPT 在服务器上进行认证。在将密码发送给服务器之前,先在客户机机器上对密码进行加密。
  CLIENT 在客户机机器上进行认证(参阅处理不可信的客户机以了解例外情况)。
  *KERBEROS 认证由 Kerberos 安全性软件执行。
  *KRB_SERVER_ENCRYPT 如果客户机设置为 KERBEROS,则认证由 Kerberos 安全性软件执行。否则,就使用 SERVER_ENCRYPT。
  *这些设置只对 Windows 2000 操作系统有效。
  要查看配置文件中的认证参数:
  db2 get dbm cfg
  要将认证参数修改为 server_encrypt:
  C:\PROGRA~1\SQLLIB\BIN>db2 update dbm cfg using authentication server_encrypt
  C:\PROGRA~1\SQLLIB\BIN>db2stop
  C:\PROGRA~1\SQLLIB\BIN>db2start
  要将网关认证类型设置成 SERVER,您必须在网关机器上发出下列命令:
  db2 catalog database myhostdb at node nd1 authentication dcs
  db2 terminate
  注:认证从不在网关本身上执行。在 DB2 V8 中,必须总是在客户机或主机数据库服务器上执行认证。
  DB2 权限控制数据库安全性计划的以下几方面:
  授予用户的权限级别
  允许用户运行的命令
  允许用户读和/或修改的数据
  允许用户创建、修改和/或删除的数据库对象
  权限由特权组和较高级别的数据库管理器(实例级别)维护和实用操作组成。在 DB2 所提供的五种权限中,SYSADM、SYSCTRL 和 SYSMAINT 是实例级权限。 这意味着权限(作用的)范围包括实例级命令和对实例内的所有数据库所执行的命令。这些权限只能指派给某个组;可以通过 DBM CFG 文件来进行指派。
  DBADM 和 LOAD 权限是为了某个特定的数据库而指定给某个用户或组的。可以用 GRANT 命令来显式地完成这一工作。
  通过发出以下命令,用户可以确定他们具有哪些权限及数据库级别的特权:
  db2 get authorizations
  由于 SYSADM 用户是唯一允许更新 DBM CFG 的用户,因此他们也是唯一允许向其它组授予任何 SYS* 权限的用户。下面的示例演示了如何向组 grp1 授予 SYSADM 权限:
  db2 update dbm cfg using SYSADM_GROUP grp1
  记住,只有将实例停止然后重新启动,上面的更改才会生效。此外,还要记住的是,如果您此时不是以 grp1 的成员身份登录的话,那么您可能就没有重新启动实例的权限!您将不得不先注销然后再用正确的组中的标识重新登录,或者将您的当前标识添加到 grp1 中。
  具有 SYSCTRL 权限的用户可以在实例内执行所有管理和维护命令。然而,与 SYSADM 用户不同的是,除非向他们授予了访问数据库内任何数据所需的特权,否则他们就不能访问这些数据。SYSCTRL 用户可以对实例内的任何数据库执行的命令示例有:
  db2start/db2stop
  db2 create/drop database
  db2 create/drop tablespace
  db2 backup/restore/rollforward database
  db2 runstats (可以对任何表执行该命令)
  db2 update db cfg for database dbname
  具有 SYSADM 权限的用户可以使用下列命令将 SYSCTRL 指派给某个组:
  db2 update dbm cfg using SYSCTRL_GROUP group name
  具有 SYSMAINT 权限的用户可以发出的命令是具有 SYSCTRL 权限的用户所允许发出的命令的子集。SYSCTRL 用户只能执行与维护有关的任务,如:
  db2start/db2stop
  db2 backup/restore/rollforward database
  db2 runstats (可以对任何表执行该命令)
  db2 update db cfg for database dbname
  注意:具有 SYSMAINT 权限的用户不能够创建或删除数据库或表空间。除非向他们授予了访问数据库内任何数据所需的特权,否则他们也不能访问这些数据。
  如果具有 SYSADM 权限,那么您可以使用下列命令来将 SYSMAINT 权限指派给某个组:
  db2 update dbm cfg using SYSMAINT_GROUP group name
  DBADM 权限是一种数据库级权限而不是实例级权限。总的来说,DBADM 用户几乎能够完全控制数据库。但 DBADM 用户不能执行类似下面的维护或管理任务:
  drop database
  drop/create tablespace
  backup/restore database
  update db cfg for database db name
  然而,他们却可以执行下列任务:
  db2 create/drop table
  db2 grant/revoke (任何特权)
  db2 runstats (任何表)
  DBADM 用户还被自动授予数据库对象及其内容的全部特权。由于 DBADM 权限是一种数据库级权限,因此可以将它指派给用户和组。下列命令演示了授予 DBADM 权限的几种不同方法。
  db2 create database test
  这条命令将对名为 test 的数据库的隐式 DBADM 权限授予发出该命令的用户。
  db2 connect to sample
  db2 grant dbadm on database to user tst1
  只有 SYSADM 用户才能发出这条命令;它将对样本数据库的 DBADM 权限授予用户 tst1。注:在授予 DBADM 权限之前,进行授予权限操作的用户必须已经连接到了样本数据库上。
  db2 grant dbadm on database to group grp1
  这条命令将 DBADM 权限授予组 grp1 中的所有人。同样,只有 SYSADM 用户才能发出这条命令。
  LOAD 权限也被当作数据库级别的权限,因此可以将它授予用户和组。正如同它的名字所暗示的那样,LOAD 权限允许用户对表发出 LOAD 命令。在填充具有大量数据的表时,通常使用 LOAD 这种执行更快的命令来替代插入或导入命令。根据您希望执行的 LOAD 类型的不同,仅仅具有 LOAD 权限可能还是不够的。还可能需要对该表具有特定特权。
  具有 LOAD 权限的用户可以运行下列命令:
  db2 quiesce tablespaces for table
  db2 list tablespaces
  db2 runstats (任何表)
  db2 load insert (必须对表具有插入特权)
  db2 load restart/terminate after load insert (必须对表具有插入特权)
  db2 load replace (必须对表具有插入和删除特权)
  db2 load restart/terminate after load replace (必须对表具有插入和删除特权)
  只有具有 SYSADM 或 DBADM 权限的用户才允许给用户或组授予或取消 LOAD 权限。下列示例演示了 LOAD 权限是如何允许我们的用户将数据 LOAD 到名为 sales 的表中的。假定已经发出了命令 db2 connect to sample。
  db2 grant load on database to user tst1
  db2 grant insert on table sales to user tst1
  有了 LOAD 权限和插入特权,tst1 就可以对 sales 表发出 LOAD INSERT、LOAD RESTART 或在 LOAD INSERT 之后发出 TERMINATE。
  db2 grant load on database to group grp1
  db2 grant delete on table sales to group grp1
  db2 grant insert on table sales to group grp1   有了 LOAD 权限以及删除和插入特权,grp1 中的任何成员都可以对 sales 表发出 LOAD REPLACE、LOAD RESTART 或者在 LOAD REPLACE 之后发出 TERMINATE。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-301907-1-1.html 上篇帖子: 在C中嵌入SQL语句访问DB2数据库(转载) 下篇帖子: DB2存储过程的异常处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表