DB2的认证和授权

DB2 的安全性由两方面组成:认证和授权

1、认证

认证就是系统验证用户身份的过程。说的简单点,就是验证用户名和密码,因为DB2用户同时也是操作系统用户,所以,首先必须得到操作系统的认可。在默认情况下,DB2使用的就是基于操作系统的用户认证。当然,你也可以指定其它认证方式。DBM
CFG 的AUTHENTICATION参数决定在哪里进行用户认证。

AUTHENTICATION可以设定为以下值:


SERVER (default)            认证在服务器端执行
CLIENT 认证在客户端执行
SERVER_ENCRYPT 和SERVER 参数相似,而且用户的id 和密码都经过加密
KERBEROS 认证使用Kerberos 安全机制
SQL_AUTHENTICATION_DATAENC 在服务器端进行认证,数据库连接时必须使用数据加密
SQL_AUTHENTICATION_DATAENC_CMP 与上面类似,但当条件不允许的情况下,可以不对数据进行加密
GSSPLUGIN 使用外部的基于GSS API 插件的安全工具进行认证

查看当前设置:

db2 get dbm cfg | grep AUTHENTICATION 

2、授权
授权是 DB2 获取有关已认证的 DB2
用户的信息的过程,此信息指示该用户可执行的数据库操作,以及可访问的数据对象。

很多人都感觉DB2的权限非常难理解,其实非常简单,大家之所以感觉难理解,主要原因是IBM把它介绍复杂了,然后,各种书籍、资料把DB2
的官方资料翻译出来呈现在大家面前,有的翻译的可能并不是很好,所以大家就感觉难理解了。其实,大家完全可以把DB2想象一个仓库,仓库中有好多房间,房间中有好多东西。仓库管理员有所有房间的钥匙,你想进入某个房间时,你必须有该房间的钥匙。如果你没有钥匙,你可以像管理员申请。那么DB2
有哪些房间呢(也就是DB2的组成部分)? DB2由
实例、数据库、表空间、模式、表、视图等组成。每个组成部分都定义了相应的权限,如:你想访问某个表,那么你首先得连接数据库,所以,你必须具有该数据库的CONNECT权限,同时你还必须有该表的SELECT
权限。这就相当于,你想进入一个房间,你必须有该房间的钥匙。下面我们来了解一下DB2的不同组成部分定义了哪些权限

实例级别权限:

SYSADM  系统管理权限
SYSCTRL 系统控制权限
SYSMAINT系统维护权限
SYSMON 系统监视权限

数据库级别权限:


ACCESSCTRL  允许拥有者授予和撤销所有对象特权和数据库权限以及 ACCESSCTRL、DATAACCESS、DBADM 和 SECADM 权限。
BINDADD 允许拥有者在数据库中创建新包
CONNECT 允许拥有者连接到数据库
CREATETAB 允许拥有者在数据库中创建新表
CREATE_EXTERNAL_ROUTINE 允许拥有者创建过程以供数据库的应用程序和其他用户使用
CREATE_NOT_FENCED_ROUTINE 允许拥有者创建未受防护的用户定义的函数(UDF)或过程
DATAACCESS 允许拥有者访问存储在数据库表中的数据。
DBADM 允许拥有者充当数据库管理员
EXPLAIN 允许拥有者说明查询方案,而不要求他们拥有访问这些查询方案所引用的表中数据的特权
IMPLICIT_SCHEMA 允许任何用户隐式地创建模式
LOAD 允许拥有者将数据装入到表中。
QUIESCE_CONNECT 允许拥有者在数据库处于停顿状态时访问该数据库。
SECADM 允许拥有者充当数据库的安全管理员。
SQLADM 允许拥有者监视和调整 SQL 语句。
WLMADM 允许拥有者充当工作负载管理员

查看方式:

GRANT  CREATETAB ON DATABASE  TO USER <user_name>
REVOKE CREATETAB ON DATABASE FROM USER <user_name>

表空间特权:

USE 允许用户在该表空间中创建表

使用方法:
GRANT USE OF TABLESPACE <tablespace_name> TO USER <user_name>
REVOKE USE OF TABLESPACE <tablespace_name> FROM USER <user_name>

模式特权


CREATEIN  允许用户在模式中创建对象
ALTERIN 允许用户在模式中改变对象
DROPIN 允许用户在模式中删除对象

使用方法:
GRANT CREATEIN,DROPIN,ALTERIN ON SCHEMA <schema_name> TO USER <user_name>
REVOKE CREATEIN,DROPIN,ALTERIN ON SCHEMA <schema_name> FROM USER <user_name>

表和视图特权


SELECT       允许用户检索表或视图中的行、对表创建视图以及运行 EXPORT 实用程序。
INSERT 允许用户将行插入表或视图以及运行 IMPORT 实用程序。
UPDATE 允许用户更改表或视图中的条目,或表或视图中的一个或多个特定列的条目。用户只能对特定的列拥有此特权。
DELETE 允许用户从表或视图中删除行。
ALTER 允许用户修改表,例如,为表添加列或唯一约束。具有 ALTER 特权用户还可以 COMMENT ON 一个表,或者表的一列。
INDEX 允许用户对表创建一个索引。索引创建者自动具有索引的 CONTROL 特权。
REFERENCES 允许用户创建和删除一个外键,并指定该表为关系中的父表。用户可能只对特定的列拥有此特权。
CONTROL 给用户提供对表或视图的所有特权,包括删除它以及授予和撤销各个表特权的功能。

使用方法:
GRANT SELECT ON TABLE <table_name> TO USER <user_name>
REVOKE SELECT ON TABLE <table_name> FROM USER <user_name>

索引特权


CONTROL    允许用户删除和修改索引
GRANT CONTROL ON INDEX <indext_name> TO USER <user_name>
REVOKE CONTROL ON INDEX <indext_name> FROM USER <user_name>
函数、过程、方法特权
EXECUTE 允许用户执行函数、过程、方法

使用方法:
GRANT EXECUTE ON FUNCTION <function_name> TO USER <user_name>
GRANT EXECUTE ON PROCEDURE <procedure_name> TO USER <user_name>
GRANT EXECUTE ON METHOD <method_name> TO USER <user_name>

程序包特权


EXECUTE  允许用户执行或运行程序包
BIND 允许用户重新绑定或绑定该程序包以及添加具有相同程序包名和创建者的新程序包版本
CONTROL 给用户提供重新绑定、删除或执行程序包的功能,以及将那些特权授予其他用户的功能

使用方法:
GRANT EXECUTE ON PACKAGE <package_name> TO USER <user_name>
REVOKE EXECUTE ON PACKAGE <package_name> FROM USER <user_name>

用户、用户组、PUBLIC组

DB2 的用户是操作系统用户,当然,DB2用户组也是操作系统用户组。由上面的介绍大家就可以知道赋予用户权限是非常繁琐的,为了方便权限管理,我们可以把权限赋给用户组,这样,任何属于该组的用户都可以获得相应的权限。值得注意的是DB2还定义了一个PUBLIC组,任何人或组都属于PUBLIC组,当一个数据库建立时,下面的特权都会自动的授予PUBLIC 组:CONNECT,CREATETAB,IMPLICIT SCHEMA,BINDADD,这就是当我们新建一个操作系统用户,没有赋给它任何权限,而它却可以连接数据库的原因

赋予用户实例级别权限


细心的朋友可能已经发现了,我们在介绍实例级别权限的时候没有说明如何赋予用户实例级别权限,那是因为我们不能通过GRANT和REVOKE语句赋予和撤销权限,而且实例级别权限也不能赋予单个用户,只能赋予用户组。那么到底该怎么赋予用户组实例级别权限呢?在DBM CFG中定义以下4个参数,我们只要修改这几个参数就可以赋予用户组相应的实例级权限。

db2 get dbm cfg | grep GROUP
SYSADM_GROUP
SYSCTRL_GROUP
SYSMAINT_GROUP
SYSMON_GROUP

修改方法:

//将sde所在组赋予SYSMON权限

UPDATE DBM CFG USING SYSMON_GROUP sde所在的用户组名称

转载参考:http://iamwave.iteye.com/blog/649736

时间: 2024-08-02 23:40:26

DB2的认证和授权的相关文章

BOS项目 第7天(shiro权限框架进行认证和授权)

BOS项目笔记 第7天 今天内容安排: 1.权限概述(认证.授权) 2.常见的权限控制的方式(URL拦截权限控制.方法注解权限控制) 3.权限数据模型(权限表.角色表.用户表.角色权限关系表.用户角色关系表) 4.shiro框架入门 5.将shiro应用到bos项目中进行认证和授权 1. 权限概述 系统提供了很多功能,并不是所有的用户登录系统都可以操作这些功能.我们需要对用户的访问进行控制. 认证:系统提供的用于识别用户身份的功能(通常是登录功能)-----让系统知道你是谁?? 授权:系统提供的

Apache Httpd服务器之认证与授权

有大概1个月的时间没有继续写关于技术的文章了,在这一个月的时间除了过年休息了2天外,其它时间我都在开发自己的个人网站,这是一个能帮助PHPer及从事运维的兄弟便捷搭建LAMP配置环境的功能性网站,稍后会详细介绍下,从今天开始,我会继续撰写关于Httpd服务器的一些配置文章.此篇文章,我们主要探讨下关于Httpd服务器的认证及授权. 所谓认证,在我的理解就是用户通过一个凭证进入服务器的过程,而授权是用户是否有权限获取服务器中的某个资源.认证负责的是整体,授权负责的是局部. Httpd提供浏览器认证

Web Api 2 认证与授权 2

HTTP Message Handler 在 Web Api 2 认证与授权 中讲解了几种实现机制,本篇就详细讲解 Message Handler 的实现方式 关于 Message Handler 在 request 到 response 过程所处于的位置,可以参考这里 HTTP Message Handlers Authentication Message Handler 先看一段实现的代码,然后再做讲解,完整代码可以在 Github 上参考,WebApi2.Authentication 1

MVC 登录认证与授权

最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    最近在做自学MVC,遇到的问题很多,索性一点点总结下. 正题: 做过三层架构的童鞋都知道,如果要验证/授权一个用户登录,我们一般采取如下方法: 1.用户输入用户名.密码进行登录 2.账户/密码正确,保存用户信息至Cookies或者Session,跳转至主页面 3.在主页面Page_Load的时候,判断Cookies或者Session的值,如果Coo

入门教程:.NET开源OpenID Connect 和OAuth解决方案IdentityServer v3 MVC认证与授权(四)

本教程将搭建一个最小能够运行的IdentityServer.为简单起见,我们将identityserver和客户端放在同一Web应用程序-这可能不会是一个很现实的情况下,但可以让你不太复杂的开始. 完整的源代码可以在这里找到. Part 1 - MVC MVC认证与授权 在第一部分中我们将创建一个简单的MVC应用程序并添加认证通过identityserver它.然后,我们将有一个更仔细的看claims,claims的变化和授权. 创建一个 web application 在Visual Stud

OAuth2.0认证和授权原理

什么是OAuth授权? 一.什么是OAuth协议 OAuth(开放授权)是一个开放标准. 允许第三方网站在用户授权的前提下访问在用户在服务商那里存储的各种信息. 而这种授权无需将用户提供用户名和密码提供给该第三方网站. OAuth允许用户提供一个令牌给第三方网站,一个令牌对应一个特定的第三方网站,同时该令牌只能在特定的时间内访问特定的资源. 二.OAuth的原理和授权流程 OAuth的认证和授权的过程中涉及的三方包括: 服务商:用户使用服务的提供方,一般用来存消息.储照片.视频.联系人.文件等(

Python+Django+SAE系列教程17-----authauth (认证与授权)系统1

通过session,我们可以在多次浏览器请求中保持数据,接下来的部分就是用session来处理用户登录了. 当然,不能仅凭用户的一面之词,我们就相信,所以我们需要认证. 当然了,Django 也提供了工具来处理这样的常见任务(就像其他常见任务一样). Django 用户认证系统处理用户帐号,组,权限以及基于cookie的用户会话.这个系统一般被称为 auth/auth (认证与授权)系统. 这个系统的名称同时也表明了用户常见的两步处理. 我们需要: 1.     验证 (认证) 用户是否是他所宣

网络交换机远程访问进行统一认证、授权、审核记录

一般一家800人员工的中小企业至少会有4.50台左右的网络设备需要网络管理员进行管理.而有可能其中某一二台关键设备会开放外网远程管理访问.为了安全考虑,当我们的网络管理员因工作变动或进行定期密码更换时,如果网络设备全是采用本地用户和密码访问时,那这样每一台设备都将需要更换密码.如果是一个大型企业将存在更多网络设备,同时又有多个网管时,大家都用同一个本地用户去管理,将会出现很多不必要的麻烦和混乱.而统一认证.授权.审核记录将很好的解决这些问题,每个网管将都有自己的账号,更改一个账号密码,便可远程管

Java Web系列:认证和授权基础

1.认证和授权概述 (1)认证:对用户的身份进行验证. .NET基于的RBS(参考1)的认证和授权相关的核心是2个接口System.Security.Principal.IPrincipal和System.Security.Principal.IIdentity.我们自己实现认证过程,通过Thread.CurrentPrincipal来设置和读取认证结果.认证成功后设置认证状态和标识. Java内置了的JAAS(参考2),核心是javax.security.auth.Subject类和javax