本章介绍数据库的安全性问题。
DB2数据库和功能可以由两个不同的安全控制模式进行管理:
- 认证
- 授权
认证
验证是确认,在仅根据权限的用户日志来执行他被授权执行的活动的过程中。用户认证可以在操作系统级别或数据库级别本身进行。通过身份验证的工具生物识别技术,如视网膜和数字印刷都在使用,以防止黑客或恶意用户的数据库。
数据库安全可以从DB2数据库系统之外进行管理。这里有一些类型的安全认证过程:
- 基于操作系统的认证。
- 轻量级目录访问协议(LDAP)
对于DB2,安全服务是操作系统作为一个单独的产品的一部分。对于身份验证,它需要两个不同的凭据,这些都是用户ID或用户名和密码。
授权
可以访问DB2数据库系统,这是由在DB2数据库管理器管理内的DB2数据库和它的功能性。授权是由DB2数据库管理器管理的过程。该管理器获得有关当前鉴定的用户,指示哪个数据库操作的用户可以执行或访问信息。
下面是可用于授权的权限的不同方法:
主要权限:直接授予的授权ID。
次级权限:授予给组和角色,如果用户是一个成员
公共权限:授予公开所有用户。
上下文相关的权限:授予到受信任上下文中的作用。
授权可以给基于以下类别的用户:
- 系统级授权
- 系统管理员[SYSADM]
- 系统控制 [SYSCTRL]
- 系统维护 [SYSMAINT]
- 系统监视 [SYSMON]
当局提供了实例级别的功能控制。管理局提供给组权限,控制维护和权威操作。例如,数据库和数据库对象。
- 数据库级授权
- 安全管理员 [SECADM]
- 数据库管理员 [DBADM]
- 访问控制 [ACCESSCTRL]
- 数据访问 [DATAACCESS]
- SQL管理员 [SQLADM]
- 工作负载管理管理员[WLMADM]
- 解释 [EXPLAIN]
有关部门提供的数据库中的控件。其他机构的数据库,包括LDAD和CONNECT。
- 对象级授权:对象级授权涉及验证权限当对象上执行的动作。
- 基于内容的授权:用户可以读取和使用基于标签的访问控制[LBAC]写访问个别行和列的特定表。
DB2表和配置文件用于记录与授权名称关联的权限。当用户试图访问数据,记录的权限验证以下权限:
- 用户的授权名称
- 哪组属于用户
- 哪些角色被直接授予用户或间接向一组
- 通过受信任上下文获得的权限。
同时用SQL语句在工作中,DB2授权模型考虑了以下权限的组合:
- 与SQL语句相关联的主授权ID授予的权限。
- 二级授权ID与SQL语句相关。
- 授予PUBLIC
- 授予可信上下文角色。
实例级受权
让我们讨论一些实例有关受权。
系统管理权限(SYSADM)
它是在实例级的最高级别的管理权限。具有SYSADM权限的用户可以在实例中执行某些数据库和数据库管理器命令。具有SYSADM权限的用户可以执行以下操作:
- 升级数据库
- 恢复数据库
- 更新数据库管理器配置文件。
系统控制权限(SYSCTRL)
它是在系统控制权限的最高水平。它提供了对数据库管理器实例及其数据库执行维护和实用操作。这些操作可以影响系统资源,但它们不允许直接访问数据库中的数据。
SYSCTRL权限的用户可以执行以下操作:
- 更新数据库,节点或分布式连接服务(DCS)目录
- 强迫用户关闭系统级
- 创建或删除数据库级
- 创建,修改或删除表空间
- 使用任何表空间
- 还原数据库
系统维护权限(SYSMAINT)
它是系统的控制权限的第二级。它提供了对数据库管理器实例及其数据库执行维护和实用操作。这些操作会影响系统资源,而不允许直接访问数据库中的数据。这个权限的目的是为用户维护一个包含敏感数据的数据库管理器实例中的数据库。
只有具有SYSMAINT或更高级别的系统受权的用户可以执行以下任务:
- 执行备份
- 还原备份
- 向前回滚恢复
- 启动或停止实例
- 恢复表空间
- 执行db2trc命令
- 以系统监控快照的情况下的实例级别的用户或数据库级别的用户。
具有SYSMAINT用户可以执行以下任务:
- 查询表空间的状态
- 更新日志历史文件
- 表重组
- 使用RUNSTATS(收集目录统计信息)
系统监视权限(SYSMON)
有了这个权限,用户可以监控或采取数据库管理器实例或它的数据库的快照。 SYSMON权限使运行以下任务的用户:
- GET DATABASE MANAGER MONITOR SWITCHES
- GET MONITOR SWITCHES
- GET SNAPSHOT
- LIST
- LIST ACTIVE DATABASES
- LIST APPLICATIONS
- LIST DATABASE PARTITION GROUPS
- LIST DCS APPLICATIONS
- LIST PACKAGES
- LIST TABLES
- LIST TABLESPACE CONTAINERS
- LIST TABLESPACES
- LIST UTITLITIES
- RESET MONITOR
- UPDATE MONITOR SWITCHES
数据库权限
每个数据库授权持有授权ID执行数据库的一些操作。这些数据库授权的权限不同。下面是一些数据库权限列表:
ACCESSCTRL: 允许授予和撤销所有对象特权和数据库权限。
BINDADD: 允许创建一个新包在数据库中。
CONNECT: 允许连接到数据库。
CREATETAB: 允许在数据库中创建新表。
CREATE_EXTERNAL_ROUTINE: 允许创建要使用的应用程序和数据库的用户的过程。
DATAACCESS: 允许用户访问存储在数据库表中的数据。
DBADM: 作为一个数据库管理员。它提供了除ACCESSCTRL,DATAACCESS和SECADM的所有其他数据库权限。
EXPLAIN: 可以解释的查询计划,而不需要他们持有的特权访问数据表。
IMPLICIT_SCHEMA: 允许用户通过使用CREATE语句创建一个对象隐式地创建一个模式。
LOAD: 允许将数据加载到表中。
QUIESCE_CONNECT: 允许访问该数据库,而它是静止(临时禁用)。
SECADM: 允许作为安全管理员的数据库。
SQLADM: 允许监视和调整SQL语句。
WLMADM: 允许充当工作负载管理员
权限
SETSESSIONUSER
授权标识特权包括对授权标识的行为。只有一个权限,称为SETSESSIONUSER特权。它可以授予用户或组,并允许会话用户身份切换到任何在其上的权限被授予的授权ID。此特权授予用户SECADM权限。
模式特权
这种特权涉及对数据库的模式操作。该模式的所有者拥有所有操纵表,视图,索引,包,数据类型,函数,触发器,过程和别名的模式对象的权限。一个用户,一个组,一个角色或PUBLIC可以授予以下权限的用户:
- CREATEIN: 允许模式中创建对象
- ALTERIN: 允许模式中修改的对象。
DROPIN权限
这允许在模式中删除的对象。
表空间权限
这些权限涉及到对数据库表空间的操作。用户可被授予USE特权的表空间。该权限让他们在表空间中创建数据表。特权所有者可以授予USE特权具有与创建表空间时,表空间GRANT OPTION命令。SECADM或ACCESSCTRL机关有权对表空间使用特权的权限。
表和视图权限
用户必须拥有对数据库的CONNECT权限可以使用表和视图权限。特权表和视图,如下所示:
CONTROL
它为表或视图,包括删除和授予提供的所有权限,撤销各个表权限给用户。
ALTER
它允许用户修改的表。
DELETE
它允许用户从表中或视图中删除行。
INDEX
它允许用户将行插入表或视图。它也可以运行导入实用程序。
REFERENCES
它允许用户创建和删除外键。
SELECT
它允许用户从表中或视图中检索行。
UPDATE
它允许用户改变表或视图的条目。
包权限
用户必须具有连接权限数据库。包是包含数据库管理的信息来访问以最有效的方式为特定的应用程序数据的数据库对象。
控制
它提供了重新绑定的权限,删除或执行包用户。此权限的用户被授予BIND 和 EXECUTE权限。
绑定
它允许用户绑定或重新绑定该程序包。
执行
允许执行一个包。
索引权限
此权限自动接收对索引CONTROL特权。
序列权限
序列自动对序列的接收使用情况和ALTER权限。
例程权限
它涉及的例程,如函数,过程,和一个数据库中的方法的操作。