DB2入门(4)——DB2的账户设置

来源:互联网 发布:苹果电脑炒股软件 编辑:程序博客网 时间:2024/06/06 18:07

概述

  • DB2的身份认证(authentication)

就目前接触过的数据库来说,大多是在数据库中添加用户,比方Oracle的tiger账户,MySQL的user表,SQL Server我记得也是数据库添加账户的,那Postgresql是在pg_hba.conf中设置访问权限,在数据库中Create user的,但是DB2有很大的不同哦。
然后就是哪个用户可以访问哪些表,grant这些操作在DB2中又是如何定义的呢?

身份认证是用户在尝试访问DB2实例或数据库时遇到的第一道安全闸门。身份认证就是使用安全机制验证所提供用户ID和口令的过程。用户和密码身份认证由DB2外部的设施管理,比如操作系统、域控制器或者Kerberos安全系统。这和其他数据库管理系统是不同的,如Oracle、Infomix、Sybase和SQL Server,后者既可以在数据库本身定义和验证用户账户,也可以在操作系统中完成(安装podtgresql是创建的postgres用户既是操作系统账户也是数据库账户)。外部安全性服务对希望访问DB2服务器的用户进行身份认证,DB2外部的安全性软件负责处理身份认证。当成功校验了用户ID和口令后,内部DB2进程将接管控制,并确保用户有权执行所请求的操作。

DB2是没有用户的,所有的用户都是操作系统用户,这是由于历史原因造成的。

一旦用户ID和口令作为实例附件或数据库 连接请求的一部分明确的提供给DB2,DB2就会尝试使用该外部安全设施验证用户ID和口令。
实际的认证位置由DB2实例参数AUTHENTICATION的值决定。有不同的身份认证方案:

  • 权限(authorization)
    权限涉及将DB2角色赋予用户和/或组。每一种角色具有一定级别的权限,对特定数据库和和/或其中的对象执行某些命令。DB2中包括以下7种不同角色或权限:

    • SYSADM
    • SYSCTRL
    • SYSMAINT
    • SYSMON
    • DBADM
    • SECADM
    • LOAD
  • 特权(privilege)

    就是我们之前的grant这些了,select、update、execute的权限相关了。

对象特权

认证(Authentication)

什么时候进行身份认证

DB2身份认证 控制数据库安全性策略的以下方面:

  • 谁有权访问实例或数据库
  • 在哪里以及如何校验用户的 密码

DB2身份认证类型

  1. 客户机、服务器
  2. 身份认证类型

DB2能够根据用户是视图连接数据库、还是执行实例连接和实例级操作,指定不同的身份认证机制。在默认情况下,实例对于所有实例级和连接级请求使用一种身份认证类型,这由数据库管理配置参数AUTHENTICATION来指定。DB2 V9.1中引入了数据库管理程序配置参数SRVCON_AUTH。这个参数专门处理对数据库的连接。例如,如果在DBM CFG中进行以下设置:

DB2 GET DBM CFG
Server Connection Authencation (SRVCON_AUTH) = KERBEROS
Database manager authentication (AUTHENTICATION) = SERVER_ENCRYPT
那么在连接实例时会使用SERVER_ENCRYPT。但是在连接数据库时会使用KERBEROS身份认证。如果服务器是没有正确的初始化KERBEROS,但是提供了有效的用户ID/口令,那么运行这个用户连接实例,但是不允许他连接数据库。

身份认证是在服务器和客户机处同时设置的。

权限(Authorization)

DB2中共包括两类权限:实例级和数据库级权限。
- 实例级权限
- SYSADM 系统管理员
- SYSCTRL 系统控制
- SYSMAINT 系统维护
- SYSMON 系统监视
这些权限只能分配给组
- 数据库级权限
- DBADM
- SECADM
- LOAD

用户可以通过以下命令来判断自己拥有哪些权限和数据库级特权

db2 get authorizations     ---9.7
[db2inst1@db22 adm]$  db2 "SELECT substr(AUTHORITY,1,30) as AUTHORITY, D_USER, D_GROUP, D_PUBLIC, ROLE_USER, ROLE_GROUP, ROLE_PUBLIC, D_ROLE  FROM TABLE (SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID ('DB2INST1', 'U') ) AS T ORDER BY AUTHORITY"  

结果如图:

AUTHORITY D_USER D_GROUP D_PUBLIC ROLE_USER ROLE_GROUP ROLE_PUBLIC D_ROLE ACCESSCTRL Y N N N N N * BINDADD N N Y N N N * CONNECT N N Y N N N * CREATETAB N N Y N N N * CREATE_EXTERNAL_ROUTINE N N N N N N * CREATE_NOT_FENCED_ROUTINE N N N N N N * CREATE_SECURE_OBJECT N N N N N N * DATAACCESS Y N N N N N * DBADM Y N N N N N * EXPLAIN N N N N N N * IMPLICIT_SCHEMA N N Y N N N * LOAD N N N N N N * QUIESCE_CONNECT N N N N N N * SECADM Y N N N N N * SQLADM N N N N N N * SYSADM * Y * * * * * SYSCTRL * N * * * * * SYSMAINT * N * * * * * SYSMON * N * * * * * WLMADM N N N N N N *

可以看到db2inst1用户所在的组是有SYSADM权限的

特权(privilege)

0 0
原创粉丝点击