DDL Trigger中另行实施DDLOracle权限管理详解。

今关押店群里讨论一个求,就是审计方要求数据库的用户创建之后要强制用户改口令,其实在建用户语句后,通过alter
user语句让口令过期就哼了,但是审计方要求用trigger实现?难道是打9i一代遗留下来的规则?

Oracle权限管理详解

当Create User时触发Trigger并拿走用户信息:How to Track CREATE USER /
DROP USER Statements Using A Trigger (Doc ID 339558.1)  

          转载–CzmMiao的博客生活

还见面遇到一个问题,再create user时触发的trigger里面要执行alter user
<username> password expire语句子,就见面触发ORA-30511错误,解决措施 :

Oracle 权限
权力允许用户访问属于另外用户之靶子或实行顺序,ORACLE系统提供三种植权限:Object
对象级、System 系统级、Role
角色级。这些权限可以给给用户、特殊用户public或角色,如果加之一个权力给奇用户”Public”(用户public是oracle预定义的,每个用户拥有这用户所有的权限),那么即使表示作拿该权限授予了该数据库的备用户。
针对管理权限而言,角色是一个器,权限能够吃予以给一个角色,角色吗能让给予给另外一个角色要用户。用户可以经角色继续权限,除了管理权限外角色服务没有其余目的。权限可以被给予,也堪用同的办法收回。
权力分类
1、系统权限:系统确定用户用数据库的权杖。(系统权限是针对性用户而言)。
2、实体权限:某种权力用户对其余用户的申要视图的存取权限。(是针对表或视图而言之)。
系统权限管理
系权限分类:
DBA: 拥有全方位特权,是系最高权力,只有DBA才方可创造数据库结构。
RESOURCE:拥有Resource权限的用户仅仅可创建实体,不得以创造数据库结构。
CONNECT:拥有Connect权限的用户仅可以登录Oracle,不得以创造实体,不可以创建数据库结构。
对普通用户:授予connect, resource权限。
对此DBA管理用户:授予connect,resource, dba权限。
系权限授权令:
系统权限只能出于DBA用户授出:sys, system(最初步只能是及时点儿独用户)
授权令:SQL> grant connect, resource, dba to 用户称1
[,用户名2]…;
横流:普通用户通过授权可以享有和system相同的用户权限,但千古不可知落得与sys用户同样之权杖,system用户的权力也可叫回收。
例:
SQL> connect system/manager
SQL> Create user user50 identified by user50;
SQL> grant connect, resource to user50;
查询用户有哪里权力:
SQL> select * from dba_role_privs;
SQL> select * from dba_sys_privs;
SQL> select * from role_sys_privs;
查看好装有怎样系统权限
SQL> select * from session_privs;
去用户
SQL> drop user 用户名 cascade;
//加上cascade则以用户及其那个创立的物尽数抹
网权限传递:
长WITH ADMIN OPTION选项,则获的权杖可以传递。
SQL> grant connect, resorce to user50 with admin option;
//可以传递所收获权。
系统权限回收:系统权限只能由DBA用户回收
SQL> Revoke connect, resource from user50;
说明:
1)如果运用WITH ADMIN
OPTION为某某用户给系统权限,那么对被这用户给相同权限的有着用户来说,取消该用户之网权限并无见面级联取消这些用户之同权限。
2)系统权限无级联,即A授予B权限,B授予C权限,如果A收回B的权杖,C的权力不深受影响;系统权限可以超越用户回收,即A可以一直收回C用户的权能。
实业权限管理
实体权限分类
select, update, insert, alter, index, delete, all //all包括所有权限
execute //执行存储过程权限
user01:
SQL> grant select, update, insert on product to user02;
SQL> grant all on product to user02;
user02:
SQL> select * from user01.product;
//
此时user02查user_tables,不包user01.product这个发明,但倘若查all_tables则可查到,因为他得看。
将表的操作权限授予全体用户:
SQL> grant all on product to public; //
public代表是持有的用户,这里的all权限不包drop。
实业权限数据字典
SQL> select owner, table_name from all_tables; //
用户可查询的发明
SQL> select table_name from user_tables; // 用户创建的说明
SQL> select grantor, table_schema, table_name, privilege from
all_tab_privs; // 获权可以存取的申(被授权的)
SQL> select grantee, owner, table_name, privilege from
user_tab_privs; // 授出权力的阐发(授出的权)
DBA用户可以操作全体用户之即兴基表(无需授权,包括去):
DBA用户:
SQL> Create table stud02.product(
id number(10),
name varchar2(20));
SQL> drop table stud02.emp;

Executing DDL in the DDL trigger

SQL> create table stud02.employee
as
select * from scott.emp;
实业权限传递(with grant option):
user01:
SQL> grant select, update on product to user02 with grant option; //
user02得到权限,并可传递。
实体权限回收:
user01:
SQL>Revoke select, update on product from user02;
//传递的权力将合不见。
说明
1)如果取消某个用户之目标权限,那么对于此用户用WITH GRANT
OPTION授予权限的用户来说,同样还会见收回这些用户的一样权限,也就是说取消授权时级联的。
Oracle 角色管理
角色是千篇一律组权限的成团,将角色赋给一个用户,这个用户就是所有了这个角色被的具有权限。系统预定义角色是于数据库安装后,系统自动创建的有常用之角色。下介简单的牵线一下这些预定角色。角色所富含的权杖可以用来下语句询问:
sql>select * from role_sys_privs where role=’角色名’;
CONNECT, RESOURCE,
DBA:这些预定义角色主要是为为后相当。其重大是用以数据库管理。oracle建议用户自己计划数据库管理以及平安之权规划,而并非简单的动这些预定角色。将来底版本中这些角色可能无会见作预定义角色。
DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE,
SELECT_CATALOG_ROLE:这些角色要用于访问数字典视图和保险。
EXP_FULL_DATABASE,
IMP_FULL_DATABASE:这点儿单角色用于数据导入导出工具的采取。
AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE:AQ:Advanced
Query。这片独角色用于oracle高级查询功能。
SNMPAGENT:用于oracle enterprise manager和Intelligent Agent
RECOVERY_CATALOG_OWNER:用于创造有恢复库的用户。关于恢复库的消息,参考oracle文档《Oracle9i
User-Managed Backup and Recovery Guide》
HS_ADMIN_ROLE:A DBA using Oracle’s heterogeneous services feature
needs this role to access appropriate tables in the data dictionary.
管制角色
打一个角色
sql>create role role1;
授权给角色
sql>grant create any table,create procedure to role1;
给角色被用户
sql>grant role1 to user1;
查看角色所包含的权力
sql>select * from role_sys_privs;
始建带有口令以角色(在奏效带有口令的角色时务必提供口令)
sql>create role role1 identified by password1;
改角色:是否要口令
sql>alter role role1 not identified;
sql>alter role role1 identified by password1;
装当前用户如果立竿见影之角色
(注:角色的见效是一个什么概念也?假设用户a有b1,b2,b3叔独角色,那么只要b1未见效,则b1所蕴涵的权对a来讲是未具有的,只有角色生效了,角色内的权杖才打算为用户,最特别但生效角色数由参数MAX_ENABLED_ROLES设定;在用户登录后,oracle将兼具直接授予给用户的权杖和用户默认角色被的权柄赋给用户。)
sql>set role role1; //使role1生效
sql>set role role,role2; //使role1,role2生效
sql>set role role1 identified by password1;
//使用含有口令的role1生效
sql>set role all; //使用该用户的有角色生效
sql>set role none; //设置所有角色失效
sql>set role all except role1;
//除role1外之该用户之富有其他角色生效。
sql>select * from SESSION_ROLES; //查看当前用户的见效之角色。
修改指定用户,设置其默认角色
sql>alter user user1 default role role1;
sql>alter user user1 default role all except role1;
详见oracle参考文档
9.删减角色
sql>drop role role1;
角色去后,原来拥用该角色的用户就不再具备该角色了,相应的权限也便从不了。
说明:
1)无法使用WITH GRANT OPTION为角色赋予对象权限
2)可以以WITH ADMIN OPTION 为角色赋予系统权限,取消时未是级联
以及权力安全相关的多少字典表来:
ALL_TAB_PRIVS
ALL_TAB_PRIVS_MADE
ALL_TAB_PRIVS_RECD
DBA_SYS_PRIVS
DBA_ROLES
DBA_ROLE_PRIVS
ROLE_ROLE_PRIVS
ROLE_SYS_PRIVS
ROLE_TAB_PRIVS
SESSION_PRIVS
SESSION_ROLES
USER_SYS_PRIVS
USER_TAB_PRIV
oracle的体系与目标权限列表
alter any cluster 修改任意簇的权位
alter any index 修改任意索引的权杖
alter any role 修改任意角色的权力
alter any sequence 修改任意序列的权
alter any snapshot 修改任意快照的权位
alter any table 修改任意表的权限
alter any trigger 修改任意触发器的权杖
alter cluster 修改拥有簇的权柄
alter database 修改数据库的权
alter procedure 修改拥有的仓储过程权限
alter profile 修改资源限制简表的权杖
alter resource cost 设置佳话资源开发的权柄
alter rollback segment 修改回滚段的权能
alter sequence 修改拥有的阵权限
alter session 修改数据库会话的权杖
alter sytem 修改数据库服务器设置的权柄
alter table 修改拥有的表权限
alter tablespace 修改表空间的权位
alter user 修改用户之权限
analyze 使用analyze命令分析数据库中任意的阐发、索引和簇
audit any 也随意的数据库对象设置审计选项
audit system 允许系统操作审计
backup any table 备份任意表的权能
become user 切换用户状态的权限
commit any table 提交表的权杖
create any cluster 也擅自用户创建簇的权柄
create any index 也随意用户创建索引的权能
create any procedure 也随机用户创建存储过程的权限
create any sequence 也擅自用户创建行的权柄
create any snapshot 也擅自用户创建快照的权能
create any synonym 为随意用户创建同义名的权限
create any table 为随机用户创建表的权力
create any trigger 为擅自用户创建触发器的权
create any view 为随意用户创建视图的权位
create cluster 为用户创建簇的权杖
create database link 为用户创建的权柄
create procedure 为用户创建存储过程的权能
create profile 创建资源限制简表的权限
create public database link 创建公共数据库链路的权力
create public synonym 创建公共同义名的权柄
create role 创建角色的权能
create rollback segment 创建回滚段的权位
create session 创建会话的权杖
create sequence 也用户创建行的权柄
create snapshot 也用户创建快照的权
create synonym 也用户创建和义名的权限
create table 也用户创建表的权杖
create tablespace 创建表空间的权柄
create user 创建用户之权
create view 为用户创建视图的权位
delete any table 删除任意表行的权杖
delete any view 删除任意视图行的权力
delete snapshot 删除快照中行的权
delete table 为用户删除表行的权能
delete view 为用户删除视图行的权限
drop any cluster 删除任意簇的权力
drop any index 删除任意索引的权柄
drop any procedure 删除任意存储过程的权
drop any role 删除任意角色的权位
drop any sequence 删除任意序列的权杖
drop any snapshot 删除任意快照的权力
drop any synonym 删除任意同义名的权
drop any table 删除任意表的权能
drop any trigger 删除任意触发器的权位
drop any view 删除任意视图的权杖
drop profile 删除资源限制简表的权力
drop public cluster 删除公共簇的权
drop public database link 删除公共数据链路的权能
drop public synonym 删除公共同义名的权限
drop rollback segment 删除掉滚段的权力
drop tablespace 删除表空间的权柄
drop user 删除用户的权能
execute any procedure 执行任意存储过程的权限
execute function 执行存储函数的权杖
execute package 执行存储包之权柄
execute procedure 执行用户存储过程的权能
force any transaction 管理不提交的任意事务的输出权限
force transaction 管理不提交的用户业务之出口权限
grant any privilege 给任意系统特权的权能
grant any role 给任意角色的权位
index table 给表加索引的权杖
insert any table 向任意表中插入入行的权柄
insert snapshot 向快照中插入入行的权能
insert table 向用户表中插入行的权限
insert view 向用户视图中插行的权力
lock any table 给任意表加锁之权柄
manager tablespace 管理(备份可用性)表空间的权能
references table 参考表的权位
restricted session 创建有限量的数据库会话的权力
select any sequence 使用任意序列的权柄
select any table 使用任意表的权
select snapshot 使用快照的权能
select sequence 使用用户序列的权限
select table 使用用户表的权杖
select view 使用视图的权柄
unlimited tablespace 对表空间尺寸不加以限制的权能
update any table 修改任意表中行的权限
update snapshot 改快照中行的权杖
update table 修改用户表中的执行的权柄
update view 修改视图中行的权能

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注