[VIP专享]oracle用户管理和安全审计解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【1】用户管理
口令及资源管理参数=
sql> select resource_name,limit from dba_profiles where profiles='DEFAULT';查询所有口令及资源管理参数
Sql> select distinct profile from dba_profiles 查询系统中所有profile
SQL> create profile myprofile limit failed_login_attempts 4 password_lock_time 2 password_life_time 7 password_grace_time 3;
建立profile 并指定限制参数
Sql> select resource_name,limit from dba_profiles where profile='MYPROFILE'; 查看指定profile设置的口令和资源限制参数;
Sql> create user test identified by test123 profile myprofile;建立用户分配使用profile;
Sql> alter system set resource_limit=true scope=both;使用profile 管理口令时,口令管理选项总是处于被激活状态,但若使用管理资
源时须激活;
Sql> alter user kitty profile DEFAULT;修改用户使用的profile;drop profile myprofile/drop profile myprofile cascade;删除profile;
用户创建及授权=
Sql> create user mary identified by mary123 default tablespace
testspace
Temporary tablespace tempspace profile myprofile;
权限的3种类型=系统权限(create table,alter view...),对象权限(delete on table,insert on kitty.table...),角色权限(各类权限的一种组合)------权限的2种授予方式=将权限直接授予;先将权限授予某角色,再把该角色(所拥有的权限)授给一个或多个用户;
Sql> grant create table to mary;将系统权限授予用户
Grant connect to mary ;将角色权限授予用户
Grant select on kitty.test to public;将对象权限授予给所有人
Grant update(sal) on scott.emp to mary;将对象中指定列的update 或insert权限(不能指定select、delete权限)授予用户;提供列级安全控制(行级安全控制权限需由精细审计实现),另revoke列级安全控制权限时不能指定列名;
Sql > select * from dba_sys_privs /dba_role_privs/ dba_tab_privs/ dba_col_privs where grantee='MARY'; 查看用户所拥有的系统权Sql> grant unlimited tablespace to mary;将系统权限(任意表空间上任意配额)直接授予给用户;
Sql> alter user mary quota 100m on users;修改用户的空间配额为指定表空间上的指定大小;
Sql> alter user mary quota unlimited on users;修改用户的空间配额为指定表空间上的不限大小
Sql> select name from system_privilege_map;查看所以系统权限,
any权限表示某用户在其他任何scheme中(除sys)操作的权限;
Sql> grant create any table to mary with admin option ;赋予用户系统权限并允许转授他人;
Sql> grant select on kitty.test to mary with grant option;赋予用户对象权限并允许转授他人
Sql> revoke create any table from mary;从mary处回收any系统权限;被转授给他人的系统权限并不会随之收回;
Sql> revoke select on kitty.test from mary;从mary处回收select 对象权限,被转授给他人的对象权限会随之收回;
sql> select * from dba_roles;查看系统中所有角色;
Sql> select * from role_sys_privs where role='CONNECT/RESOURCE/DBA'; 查看角色所拥有的系统权限:
Sql> create role rolex;创建角色;
Sql> grant connect,create table to rolex;将预定义角色和系统权限授予新建角色;
sql> grant insert ,select on kitty.test to rolex;对象权限须单独授权;
Sql> grant rolex to mary ;将角色授予用户
Sql> revoke rolex from mary;
Sql> drop rolex;
Sql> alter user mary account lock/unlock;用户锁定/解锁;
select * from user_role_privs;
7.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限)
select * from V$PWFILE_USERS
【2】安全审计
Sql> show parameter audit_trail;
Sql> alter system set audit_trail=db scope=spfile;
NONE=禁用审计,默认
DB=审计记录存放在数据库中
OS=审计记录存放在操作系统文件中,audit_file_dest 初参指定审计文件存储的目录;
三种标准审计类型=语句审计,权限审计,对象审计;
审计条件=
By user:对指定用户进行审计
By session:对每个session中发生的重复操作只记录一次;
By access:对每个session中发生的每次操作都记录;
Whenever successful:表示操作成功后才记录
Whenever not successful:表示操作失败后才记录
Sql> audit session;记录每个会话连接,不论成功否
Sql> audit select,delete on kitty.test by access whenever not successful;记录在指定对象上执行失败的每次select/delete操作;Sql> select *
from dba_stmt_audit_opts;查看所有关于语句的审计选项设置;Sql> select * from dba_priv_audit_opts;查看所有关于权限的审计选项设置;
Sql> select * from sys.aud$;列出审计记录(基表)
Sql> select * from dba_audit_trail;列出所有审计跟踪条目;
Sql> noaudit session ;停止连接审计
Sql> truncate table aud$;清空审计记录
Sql> show parameter audit_file_dest;查强制审计日志记录位置:
Sql> select * from dba_obj_audit_opts;查看所有对象上的审计选项设置;
Sql> noaudit all;取消所有语句审计
Sql> noaudit all privileges ;取消所有权限审计-不能针对用户;Sql> noaudit all privileges by kitty;
Sql> noaudit all on kitty.test; 取消对象审计,针对用户;
精细审计=
SQL> begin
> dbms_fga.add_policy
> (object_schema=>'scott',
> object_name=>'emp',
> policy_name=>'fga_rows_audit',
> audit_condition=>'deptno=10',
> enable=> true,
> statement_types=> 'select,update');
>end
>/
设置FGA审计策略,当scott 用户emp表上部门号为10的数据行被查询或修改时即记录审计信息
【3】
大小写转换----》
Select upper(ename) from scott.emp;
Select lower(ename) from scott.emp;
转换首字母为大写-----》
Select initcap(ename) from scott.emp;
Select substr ('101999212',3,5) from dual;从第三位开始,截取五位字select length('222 33333') from dual;获取数据长度(9)
Select rpad('paul',10,'*') from dual;用*补充paul到十位=paul******; Select lpad('paul',10,'*') from dual; ===******paul;
Select replace('abcdef','abc','2222')from dual ===2222def
Select translate('abcdefabg','abc','2222') from dual ===222def22g 【4】
s;。