是否可以通过操作系统权限来登录数据库, $ORACLE_HOME/network/admin/sqlnet.ora 这个文件中设置, 如果增加参数sqlnet.authentication_services=(NONE), 这样将不能使用操作系统权限登录.
create user leon identified by leon;
[default tablespace users]
[temporary tablespace temp]
也可以使用 toad 来创建. 同时也可以锁定用户, 删除用户
create session , 进入数据库的最小权限.
grant create table to leon,
alter user leon quota 10m on users; -- 不仅要分配create table权利, 还要给这个用户空间配额
系统权限的授予情况可以通过 oracle 的视图 dba_sys_privs 来查询(这也就是为什么在toad中, 这个sys_privs要单独被提出来得原因)
select * from dba_sys_privs where grantee='LEON'; -- LEON 必须用大写
因为授予权限的麻烦特性, 所以有了 ROLE , 一般, 创建一个用户以后, 给两个角色给这个用户就够了, CONNECT, RESOURCE
select * from dba_sys_privs where grantee='CONNECT';
RESOURCE, 这个权限分配给用户后, 默认这个用户就具有 unlimited tablespace 权限, 我们可以收回这个权限, 再根据实际情况分配表空间.
select * from dba_ts_quotas where username='LEON'; -- 查看已分配的空间情况
revoke unlimited tablespace from LEON;
alter user leon quota unlimited on users; -- 在 users 这个 tablespace 上无限制使用存储空间.
在开发环境中, 我们建议用户创建自己的角色来管理权限集合, 以最小化原则来进行权限分配.
select * from dba_role_privs where granted_role='DBA';
public role, 即数据库中所有用户. 建议收回部分 public 权限, 用到时再说吧, 因为收回public role的一些权限, 可能导致系统某些功能失效.
1) SYS 设计
缺省的再 audit_file_dest 目录会记录 SYS 用户的登录审计信息, 如果想对操作也进行审计, 需要设置一下:
alter system set audit_sys_operations=true scope=spfile; -- 需要重新启动数据库
2) 用户行为审计
audit all by leon by access;
audit select table, update table, insert table, delete table by leon by access;
audit execute procedure by leon by access;
select username, extended_timestamp, owner, obj_name, action_name from dba_audit_trail where owner = 'LEON' order by timestampl -- 查看审计情况
还可以使用 DBMS_FGA 包来扩展审计, 需要一些设置, 用时再说.