DB2傻瓜1000问(七)、DB2数据库安全部分

DB2傻瓜1000问(七)
总结:康标

email:kang_biao@hotmail.com

[@more@]

7、DB2数据库安全部分
263、 数据库安全计划应该如何定义?
1) 允许谁访问实例和/或数据库
2) 在哪里以及如何检验用户的密码
3) 用户被授予的权限级别
4) 允许用户运行的命令
5) 允许用户读取和/或修改的数据
6) 允许用户创建、修改和/或删除的数据库对象

264、 DB2的安全机制有哪几种?
DB2 中有三种主要的安全机制:
1) 身份验证(authentication)
2) 授权(authorization)
3) 特权(privilege)

265、 什么是身份验证?
身份验证是用户在尝试访问 DB2 实例或数据库时遇到的第一种安全特性。DB2 身份验证与底层操作系统的安全特性紧密协作来检验用户 ID 和密码。DB2 还可以利用 Kerberos 这样的安全协议对用户进行身份验证。

266、 什么是授权?
授权决定用户和/或用户组可以执行的操作以及他们可以访问的数据对象。用户执行高级数据库和实例管理操作的能力由指派给他们的权限决定。在 DB2 中有 5 种不同的权限级别:SYSADM、SYSCTRL、SYSMAINT、DBADM 和 LOAD。

267、 什么是特权?
特权的粒度比授权要细,可以分配给用户和/或用户组。特权定义用户可以创建或删除的对象。它们还定义用户可以用来访问对象(比如表、视图、索引和包)的命令。DB2 9 中新增的一个概念是基于标签的访问控制(LBAC),它允许以更细的粒度控制谁有权访问单独的行和/或列。

268、 什么是服务器?
数据库服务器 是数据库实际所在的机器(在分区的数据库系统上可能是多台机器)。

269、 什么是网关?
网关 是一台运行 DB2 Connect 产品的机器。DB2 客户机可以通过网关连接驻留在主机上的 DB2 数据库。网关也称为 DB2 Connect 服务器。

270、 什么是客户机?
DB2 数据库客户机 是对服务器上的数据库执行查询的机器。这些客户机可以是本地的(驻留在与数据库服务器相同的物理机器上),也可以是远程的(驻留在单独的机器上)。

271、 什么时间进行DB2身份认证?
在发出 attach 或 connect 命令时,它在底层操作系统安全特性的帮助下完成这个任务。

272、 DB2身份验证类型是那些?
SERVER
身份验证在服务器上进行。

SERVER_ENCRYPT
身份验证在服务器上进行。密码在客户机上进行加密,然后再发送到服务器。

CLIENT
身份验证在客户机上进行(例外情况见 处理不可信的客户机)。

*KERBEROS
由 Kerberos 安全软件执行身份验证。

*KRB_SERVER_ENCRYPT
如果客户机设置是 KERBEROS,那么由 Kerberos 安全软件执行身份验证。否则使用 SERVER_ENCRYPT。

DATA_ENCRYPT
身份验证在服务器上进行。服务器接受加密的用户 ID 和密码,并对数据进行加密。这个选项的操作方式与 SERVER_ENCRYPT 相同,但是数据也要加密。

DATA_ENCRYPT_CMP
身份验证方式与 DATA_ENCRYPT 相同,但是允许不支持 DATA_ENCRYPT 的老式客户机使用 SERVER_ENCRYPT 身份验证进行连接。在这种情况下,数据不进行加密。如果进行连接的客户机支持 DATA_ENCRYPT,就会进行数据加密,而不能降级到 SERVER_ENCRYPT 身份验证。这个身份验证类型只在服务器的数据库管理程序配置文件中是有效的,而且在客户机或网关实例上使用 CATALOG DATABASE 时是无效的。

GSSPLUGIN
身份验证方式由一个外部 GSS-API 插件决定。

GSS_SERVER_ENCRYPT
身份验证方式由一个外部 GSS-API 插件决定。在客户机不支持服务器的 GSS-API 插件之一的情况下,使用 SERVER_ENCRYPT 身份验证。

273、 如何查看数据库身份认证类型?
db2 get dbm cfg
服务器连接认证 (SRVCON_AUTH) = NOT_SPECIFIED
数据库管理器认证 (AUTHENTICATION) = SERVER

274、 如何在服务器上设置身份验证?
在数据库服务器上,在数据库管理程序配置(DBM CFG)文件中使用 AUTHENTICATION 参数设置身份验证。请记住,DBM CFG 文件是一个实例级配置文件。因此,AUTHENTICATION 参数影响这个实例中的所有数据库。
db2 update dbm cfg using authentication server_encrypt
db2stop
db2start

275、 如何在网关上设置身份验证?
使用 catalog database 命令在网关上设置身份验证。
db2 catalog database myhostdb at node nd1 authentication SERVER
db2 terminate

276、 如何在客户机上设置身份验证?
连接服务器数据库的客户机
db2 catalog database sample at node nd1 authentication SERVER
连接主机数据库的客户机
db2 catalog database myhostdb at node nd1 authentication SERVER

277、 为什么要使用安全插件构架?
通过使用标准的 GSS-API 调用,用户可以编写一个安全插件并将对用户 ID 进行身份验证的工作交给一个外部安全程序。这样用户可以根据自己需要编写加密算法。

278、 什么是Kerberos 身份验证?
Kerberos 身份验证为 DB2 提供了一种无需通过网络发送用户 ID 和密码的用户身份验证方法。Kerberos 安全协议作为第三方身份验证服务执行身份验证,它使用传统的密码术创建一个共享的密钥。这个密钥成为用户的凭证,在请求本地或网络服务时在所有情况下都使用它检验用户的身份。通过使用 Kerberos 安全协议,可以实现对远程 DB2 数据库服务器的单点登录。

279、 DB2授权主要控制数据库安全计划的那些方面?
DB2 授权控制数据库安全计划的以下方面:
1) 用户被授予的权限级别
2) 允许用户运行的命令
3) 允许用户读取和/或修改的数据
4) 允许用户创建、修改和/或删除的数据库对象

280、 DB2的授权由那些组成?
DB2的授权由两部分组成:
特权组和高级数据库管理程序(实例级)维护和实用操作组成

281、 DB2的授权那些是实例级权限?
SYSADM、SYSCTRL 和 SYSMAINT 是实例级权限。

282、 什么是实例级权限?
实例级命令是针对这个实例中的所有数据库的命令。
这些权限只能分配给组;
可以通过 DBM CFG 文件分配这些权限。

283、 DB2的授权那些是数据库级权限?
针对特定数据库的 DBADM 和 LOAD 权限可以分配给用户或用户组。可以使用 GRANT 命令显式地分配这些权限。

284、 数据库级权限和实例级权限有那些区别?
数据库级权限以分配给用户或用户组。而实例级权限只能分配给组。
数据库级权限使用 GRANT 命令显式地分配这些权限。而实例级权限是通过 DBM CFG 文件分配这些权限。

285、 如何查看自己拥有那些权限和数据库级特权?
db2 get authorizations

286、 什么是SYSADM权限?
DB2 中的 SYSADM 权限是最高权限。对一个 DB2 实例拥有 SYSADM 权限的用户能够对这个实例、这个实例中的任何数据库以及这些数据库中的任何对象发出任何 DB2 命令。

287、 如何设置SYSADM权限?
SYSADM 权限由 DBM CFG 文件中的 SYSADM_GROUP 参数控制。可以将这个权限授予某个组
db2 update dbm cfg using SYSADM_GROUP db2grp1

288、 在WINDOWS上SYSADM权限默认是那个组拥有?
Administrator

289、 在UNIX上SYSADM权限默认是那个组拥有?
创建这个实例的用户的主组。

290、 更新 DBM CFG 文件的用户是那些?
只允许拥有 SYSADM 用户更新 DBM CFG 文件。

291、 什么是SYSCRL权限?
SYSCTRL 只是对实例执行所有的管理和维护命令,但是不能访问数据库中的任何数据。用户可以对实例中的任何数据库执行的命令示例如下:
1) db2start/db2stop
2) db2 create/drop database
3) db2 create/drop tablespace
4) db2 backup/restore/rollforward database
5) db2 runstats(针对任何表)
6) db2 update db cfg for database dbname

292、 如何获得SYSCTRL权限?
db2 update dbm cfg using SYSCTRL_GROUP group name

293、 什么是SYSMAINT权限?
SYSMAINT 用户只能执行与维护相关的任务,比如:
1) db2start/db2stop
2) db2 backup/restore/rollforward database
3) db2 runstats(针对任何表)
4) db2 update db cfg for database dbname

294、 如何获得SYSMAINT权限?
db2 update dbm cfg using SYSMAINT_GROUP group name

295、 SYSMAINT权限和SYSCTRL权限的区别是那些?
区别是SYSCTRL权限有以下权限:
1) db2 create/drop database
2) db2 create/drop tablespace
而SYSMAINT权限没有。

296、 什么是DBADM权限?
DBADM 权限是一个数据库级权限,而不是实例级权限。
1) drop database
2) drop/create tablespace
3) backup/restore database
4) update db cfg for database db name
5) db2 create/drop table
6) db2 grant/revoke(任何特权)
7) db2 runstats(任何表)

297、 如何获得DBADM权限?
有三种:
1、db2 create database test
这个命令将数据库 test 上的 DBADM 权限隐式地授予发出此命令的用户。
2、db2 connect to sample
db2 grant dbadm on database to user tst1
这个命令只能由 SYSADM 用户发出;它向用户 tst1 授予示例数据库上的 DBADM 权限。注意,在授予 DBADM 权限之前,发出这个命令的用户必须连接到示例数据库。
3、db2 grant dbadm on database to group db2grp1
这个命令将 DBADM 权限授予 db2grp1 组中的每个用户。同样,只有 SYSADM 用户能够发出这个命令。

298、 什么是LOAD权限?
LOAD 权限是一个数据库级权限,所以它可以被分配给用户和用户组。顾名思义,LOAD 权限允许用户对表发出 LOAD 命令。当用大量数据填充表时,LOAD 命令通常用来替代插入或导入命令,它的速度更快。根据您希望执行的 LOAD 操作类型,仅仅拥有 LOAD 权限可能还不够。可能还需要表上的特定特权。
拥有 LOAD 权限的用户可以运行以下命令:
1) db2 quiesce tablespaces for table
2) db2 list tablespaces
3) db2 runstats(任何表)
4) db2 load insert(必须有表上的插入特权)
5) db2 load restart/terminate after load insert(必须有表上的插入特权)
6) db2 load replace(必须有表上的插入和删除特权)
7) db2 load restart/terminate after load replace(必须有表上的插入和删除特权)

299、 如何获得LOAD权限?
只有拥有 SYSADM 或 DBADM 权限的用户能够对用户或用户组授予或撤消 LOAD 权限。以下示例演示 LOAD 权限如何允许我们的用户使用 LOAD 命令将数据装载进 sales 表中。假设已经发出了命令 db2 connect to sample。
1、
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。
2、
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。

300、 特权是如何分类的?
特权分成两类:
1) 数据库级特权(针对数据库中的所有对象)
2) 对象级特权(与特定的对象相关联)。

301、 什么是数据库级特权?
1) CREATETAB: 用户可以在数据库中创建表。
2) BINDADD: 用户可以使用 BIND 命令在数据库中创建包。
3) CONNECT: 用户可以连接数据库。
4) CREATE_NOT_FENCED: 用户可以创建 unfenced 用户定义函数(UDF)。
5) IMPLICIT_SCHEMA: 用户可以在数据库中隐式地创建模式,而不需要使用 CREATE SCHEMA 命令。
6) LOAD: 用户可以将数据装载进表中。
7) QUIESCE_CONNECT: 用户可以访问处于静默(quiesced)状态的数据库。
8) CREATE_EXTERNAL_ROUTINE: 用户可以创建供应用程序和数据库的其他用户使用的过程。

302、 对象级权限总结?
特权名称 相关对象 描述
CONTROL 表、视图、索引、包、别名、不同的类型、用户定义函数、序列 提供对对象的全部权限。拥有这种特权的用户还可以向其他用户授予或撤消对对象的特权。
DELETE 表、视图 允许用户从对象中删除记录。
INSERT 表、视图 允许用户通过 INSERT 或 IMPORT 命令将记录插入对象中。
SELECT 表、视图 提供使用选择语句来查看对象内容的能力。
UPDATE 表、视图 允许用户使用更新语句修改对象中的记录。
ALTER 表 允许用户使用更改语句更改对象定义。
INDEX 表 允许用户使用创建索引语句在对象上创建索引。
REFERENCES 表 提供在对象上创建或删除外键约束的能力。
BIND 包 允许用户重新绑定现有的包。
EXECUTE 包、过程、函数、方法 允许用户执行包和例程。
ALTERIN 模式 允许用户修改模式中的对象定义。
CREATEIN 模式 允许用户在模式中创建对象。
DROPIN 模式 允许用户删除模式中的对象。

303、 表的权限是那些?
CONTROL DELETE INSERT SELECT UPDATE ALTER INDEX REFERENCES

304、 视图的权限是那些?
CONTROL DELETE INSERT SELECT UPDATE

305、 包的权限是那些?
CONTROL BIND EXECUTE

306、 过程、函数、方法的权限是那些?
EXECUTE

307、 别名的权限是那些?
CONTROL

308、 模式特权是什么?
1) CREATEIN 允许用户在模式内创建对象。
2) ALTERIN 允许用户更改模式内的对象。
3) DROPIN 允许用户删除模式内的对象。

309、 什么是表空间权限?
USE OF TABLESPACE
允许用户在特定表空间内创建表。这一特权无法用于 SYSCATSPACE 或任何系统临时表空间。

310、 什么是索引权限?
CONTROL
允许用户删除索引。

311、 什么是例程特权?
EXECUTE
允许用户执行用户定义的函数。

312、 什么是顺序特权?
USAGE
允许用户为顺序对象使用 NEXTVAL 和 PREVVAL 表达式。

313、 列出数据库权限的系统编目视图名是什么?
SYSCAT.DBAUTH

314、 列出表和视图权限的系统编目视图名是什么?
SYSCAT.TABAUTH

315、 列出列权限的系统编目视图名是什么?
SYSCAT.COLAUTH

316、 列出包权限的系统编目视图名是什么?
SYSCAT.PACKAGEAUTH

317、 列出索引权限的系统编目视图名是什么?
SYSCAT.INDEXAUTH


318、 列出模式权限的系统编目视图名是什么?
SYSCAT.SCHEMAAUTH


319、 列出服务器权限的系统编目视图名是什么?
SYSCAT.PASSTHRUAUTH


320、 列出例程(函数,存储过程)权限的系统编目视图名是什么?
SYSCAT.ROUTINEAUTH

321、 什么是显性特权?
可以使用 GRANT 和 REVOKE 命令显式地 对用户或组授予或撤消特权。

322、 什么是隐性特权?
当发出某些命令时,DB2 可能会自动地授予特权,这就是隐性特权。而不需要像前面看到的那样发出显式的 GRANT 语句。

323、 什么是隐性特权CREATE TABLE mytable?
授予的特权
mytable 上的 CONTROL
被授予特权的用户
发出命令的用户

324、 什么是隐性特权CREATE SCHEMA myschema?
授予的特权
myschema 上的 CREATEIN、ALTERIN 和 DROPIN,以及将这些特权授予其他用户的能力
被授予特权的用户
发出命令的用户

325、 什么是隐性特权CREATE VIEW myview?
授予的特权
myview 上的 CONTROL(只有在用户拥有 myview 定义中引用的所有表和视图上的 CONTROL 特权的情况下)
被授予特权的用户
发出命令的用户

326、 什么是隐性特权CREATE DATABASE mydb?
授予的特权
mydb 的系统编目表上的 SELECT,mydb 上的 IMPLICIT_SCHEMA *
被授予特权的用户
PUBLIC

327、 什么是间接特权?
当数据库管理器执行包时,可以间接获得的特权就是间接特权。

328、 如何将特权授予某人,并运行某人将特权扩展给他人?
授予特权 with grant option 允许授权 ID 将特定特权扩展给他人。

329、 什么是基于标签的访问控制(LBAC)?
这个功能是DB2新增的一个概念,是为 DBA 提供了在表的行或列级限制读/写特权的能力。

330、 什么是防火墙?
防火墙是一系列程序和硬件,位于网关服务器上。用于防止没有认证的连接到系统或者网络上。

331、 防火墙是如何分类的?
分成四类:
网络级别,包过滤,或者监视路由防火墙
典型程序级代理防火墙
关键级或者透明防火墙
SMLI防火墙

332、 DB2是如何进行数据加密的?
DB2可以对数据进行加密,主要通过三个函数来进行的:
加密函数
Encrypt (data-string-expression, password-string-expression, and hint-string-expression).

解密函数
Decrypt_Bin (encrypted-data, password-string-expression).

Decrypt_Char (encrypted-data, password-string-expression).

333、 如何进行行级加密?
-- Create emp table, set encryption password, and insert three rows:

create table emp (ssn varchar(124) for bit data);
set encryption password ='DNTTEAM';
insert into emp (ssn) values(encrypt('111-11-1111'));
insert into emp (ssn) values(encrypt('222-22-2222'));
insert into emp (ssn) values(encrypt('333-33-3333'));
-- Select data from emp table:

select ssn from emp

SSN
-----------------------------------------------------------------
x'0010F0FF0333D5A034E989260E4F99ED59070DD69B6E3C1B'
x'005EA2FF0333D5A05F167D1BC1E9EAD33D7D4987B57D5670'
x'00EE12FF0333D5A06174133D8E3A22756382F84B48F4DD05'

-- Set encryption password:

set encryption password ='DNTTEAM';
select decrypt_char(ssn) as ssn from emp;

SSN
-----------
111-11-1111
222-22-2222
333-33-3333

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/222350/viewspace-918241/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/222350/viewspace-918241/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值