oracle用户及权限管理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三安全管理
【开发语言及实现平台或实验环境】
Oracle10g
【实验目的】
练习创建用户、用户的授权、创建角色、将角色授权给用户等安全管理命令
【实验原理】
一、用户管理
1创建用户
基本语法:
CREATE USER user_name IDENTIFIED
[BY password|EXTERNALL Y|GLOBALL Y
AS 'external_name']
[DEFAULT TABLESPACE tablespace_name]
[TEMPORARY TABLESPACE temp_tablesapce_name]
[QUOTA n K|M|UNLIMITED ON tablespace_name]
[PROFILE profile_name]
[PASSWORD EXPIRE]
[ACCOUNT LOCK|UNLOCK];
注意:在创建新用户后,必须为用户授予适当的权限。

例如,授予用户CREATE SESSION 权限后,用户才可以连接到数据库。

参数说明:
user_name:用于设置新建用户名,在数据库中用户名必须是唯一的;
IDENTIFIED:用于指明用户身份认证方式;
BY password:用于设置用户的数据库身份认证,其中password为用户口令;EXTERNALL Y:用于设置用户的外部身份认证;
GLOBALL Y AS'external_name':用于设置用户的全局身份认证,其中external_name为Oracle 的安全管理服务器相关信息;
DEFAULT TABLESPACE:用于设置用户的默认表空间,如果没有指定,Oracle将数据库默认表空间作为用户的默认表空间;
TEMPORARY TABLESPACE:用于设置用户的临时表空间;
QUOTA:用于指定用户在特定表空间上的配额,即用户在该表空间中可以分配的最大空间;PROFILE:用于为用户指定概要文件,默认值为DEFAULT,采用系统默认的概要文件;PASSWORD EXPIRE:用于设置用户口令的初始状态为过期,用户在首次登录数据库时必须修改口令;
ACCOUNT LOCK:用于设置用户初始状态为锁定,默认为不锁定;
ACCOUNT UNLOCK:用于设置用户初始状态为不锁定或解除用户的锁定状态。

实例:
创建一个用户user3,口令为user3,默认表空间为USERS,在该表空间的配额为10 MB,
初始状态为锁定。

CREATE USER user3 IDENTIFIED BY user3
DEFAULT TABLESPACE USERS QUOTA 10M ON USERS ACCOUNT LOCK;
创建一个用户user4,口令为user4,默认表空间为USERS,在该表空间的配额为10 MB。

口令设置为过期状态,即首次连接数据库时需要修改口令。

概要文件为example_profile(假设该概要文件已经创建)。

CREATE USER user4 IDENTIFIED BY user4
DEFAULT TABLESPACE USERS
QUOTA 10M ON USERS
PROFILE example_profile
PASSWORD EXPIRE;
2. 修改用户
基本语法:
ALTER USER user_name [IDENTIFIED]
[BY password|EXTERNALL Y|GLOBALL Y
AS 'external_name']
[DEFAULT TABLESPACE tablespace_name]
[TEMPORARY TABLESPACE temp_tablesapce_name]
[QUOTA n K|M|UNLIMITED ON tablespace_name]
[PROFILE profile_name]
[DEFAULT ROLE role_list|ALL [EXCEPT role_list]
|NONE]
[PASSWORD EXPIRE]
[ACCOUNT LOCK|UNLOCK];
参数说明:
role_list:角色列表;
ALL :表示所有角色;
EXCEPT role_list:表示除了role_list列表中的角色之外的其他角色;
NONE:表示没有默认角色。

注意,指定的角色必须是使用GRANT命令直接授予该用户的角色。

实例:
将用户user3的口令修改为newuser3,同时将该用户解锁。

ALTER USER user3
IDENTIFIED BY newuser3 ACCOUNT UNLOCK;
3.删除用户
基本语法
DROP USER user_name [ CASCADE ];
步骤
先删除用户所拥有的对象
再删除用户
将参照该用户对象的其他数据库对象标志为INV ALID
实例:
DROP USER users4;
二、权限管理
1.系统权限管理
(1) 系统权限的授权
语法:
GRANT sys_priv_list TO
user_list|role_list|PUBLIC
[WITH ADMIN OPTION];
参数说明:
sys_priv_list:表示系统权限列表,以逗号分隔;
user_list:表示用户列表,以逗号分隔;
role_list:表示角色列表,以逗号分隔;
PUBLIC:表示对系统中所有用户授权;
WITH ADMIN OPTION:表示允许系统权限接收者再把此权限授予其他用户。

例:
为用户user1授予CREATE SESSION,CREATE TABLE,CREATE INDEX系统权限。

CONNECT SYSTEM/MANAGER@ORCL;
GRANT CREATE SESSION,CREATE TABLE,CREATE VIEW TO user1;
为用户user2授予CREATE SESSION,CREATE TABLE ,CREATE INDEX系统权限。

user2获得权限后,为用户user3授予CREATE TABLE权限。

CONNECT SYSTEM/MANAGER@ORCL;
GRANT CREATE SESSION,CREATE TABLE,
CREATE VIEW TO user2 WITH ADMIN OPTION;
CONNECT user2/user2 @ORCL
GRANT CREATE TABLE TO user3;
(2)系统权限的回收
语法:
REVOKE sys_priv_list
FROM user_list|role_list|PUBLIC;
例:回收user1的CREATE TABLE,CREATE VIEW 权限,语句为:
CONNECT SYSTEM/MANAGER@ORCL;
REVOKE CREATE TABLE,CREATE VIEW FROM user1;
2. 对象权限的管理
(1) 对象权限的授权
语法:
GRANT obj_priv_list|ALL ON [schema.]object
TO user_list|role_list [WITH GRANT OPTION];
参数说明:
obj_priv_list:表示对象权限列表,以逗号分隔;
[schema.]object:表示指定的模式对象,默认为当前模式中的对象;
user_list:表示用户列表,以逗号分隔;
role_list:表示角色列表,以逗号分隔;
WITH GRANT OPTION:表示允许对象权限接收者把此对象权限授予其他用户。

例:将scott模式下的emp表的SELECT,UPDA TE,INSERT权限授予user1用户。

CONNECT SYSTEM/MANAGER@ORCL;
GRANT SELECT,INSERT,UPDA TE ON scott.emp TO user1;
例:将scott模式下的emp表的SELECT,UPDATE,INSERT权限授予user2用户。

user2用户再将emp表的SELECT,UPDA TE权限授予user3用户。

CONNECT SYSTEM/MANAGER@ORCL;
GRANT SELECT,INSERT,UPDA TE ON scott.emp TO user2 WITH GRANT OPTION; CONNECT user2/user2@ORCL
GRANT SELECT,UPDATE ON scott.emp TO user3;
(2) 对象权限的回收
语法:
REVOKE obj_priv_list | ALL ON [schema.]object FROM user_list|role_list;
三、角色管理
1、创建角色
语法为
CREATE ROLE role_name [NOT IDENTIFIED][IDENTIFIED BY password];
参数说明
role_name:用于指定自定义角色名称,该名称不能与任何用户名或其他角色相同;
NOT IDENTIFIED:用于指定该角色由数据库授权,使该角色生效时不需要口令;IDENTIFIED BY password:用于设置角色生效时的认证口令。

例如,创建不同类型的角色。

CREATE ROLE high_manager_role;
CREATE ROLE middle_manager_role IDENTIFIED BY middlerole;
CREATE ROLE low_manager_role IDENTIFIED BY lowrole;
2、角色权限的授予与回收
实例:
GRANT CONNECT,CREATE TABLE,CREATE VIEW TO low_manager_role;
GRANT CONNECT,CREATE TABLE,CREATE VIEW TO middle_manager_role;
GRANT CONNECT,RESOURCE,DBA TO high_manager_role;
GRANT SELECT,UPDATE,INSERT,DELETE ON scott.emp TO high_manager_role; REVOKE CONNECT FROM low_manager_role;
REVOKE CREATE TABLE,CREATE VIEW FROM middle_manager_role;
REVOKE UPDATE,DELETE ,INSERT ON scott.emp FROM high_manager_role;
3、修改角色
语法:
ALTER ROLE role_name
[NOT IDENTIFIED]|[IDENTIFIED BY password];
实例:
ALTER ROLE high_manager_role IDENTIFIED BY highrole;
ALTER ROLE middle_manager_role NOT IDENTIFIED;
4、角色的生效与失效
语法:
SET ROLE [role_name[IDENTIFIED BY password ]]|[ALL [EXCEPT role_name]]|[NONE];
参数说明:
role_name:表示进行生效或失效设置的角色名称;
IDENTIFIED BY password:用于设置角色生效或失效时的认证口令;
ALL:表示使当前用户所有角色生效;
EXCEPT role_name:表示除了特定角色外,其余所有角色生效;
NONE:表示使当前用户所有角色失效。

实例:
SET ROLE NONE;
SET ROLE high_manager_role IDENTIFIED BY highrole;
SET ROLE middle_manager_role,low_manager_low IDENTIFIED BY lowrole;
SET ROLE ALL EXCEPT low_manager_role,middle_manager_role;
5、删除角色
语法结构
DROP ROLE role_name;
6、利用角色进行权限管理
(1) 给用户或角色授予角色
语法:
GRANT role_list TO user_list|role_list;
例如,将CONNECT,high_manager_role角色授予用户user1,将RESOURCE,CONNECT 角色授予角色middle_manager_role。

GRANT CONNECT,high_manager_role TO user1;
GRANT RESOURCE,CONNECT TO middle_manager_role;
(2)从用户或角色回收角色
语法:
REVOKE role_list FROM user_list|role_list;
例如,回收角色middle_manager_role的RESOURCE,CONNECT角色。

SQL>REVOKE RESOURCE,CONNECT FROM middle_manager_role;
(3)用户角色的激活或屏蔽
语法:
ALTER USER user_name DEFAULT ROLE
[role_name]|[ALL [EXCEPT role_name]]|
[NONE];
例:
ALTER USER user1 DEFAULT ROLE NONE;
ALTER USER user1 DEFAULT ROLE CONNECT,DBA;
ALTER USER user1 DEFAULT ROLE ALL;
ALTER USER user1 DEFAULT ROLE ALL EXCEPT DBA;
【实验内容】
1.创建一个用户口令认证的数据库用户usera_exer,口令为usera,默认表空间为USERS,
配额为10MB,初始账户为锁定状态。

2. 创建一个口令认证的数据库用户userb_exer,口令为userb。

3. 为usera_exer用户授权CREATE SESSION权限、scott.emp的SELECT权限和UPDATE权限,同时允许该用户将获得的权限授予其他用户。

4. 将用户usera_exer的账户解锁。

5. 用usera_exer登录数据库,查询和更新scott.emp中的数据。

同时将scott.emp的SELECT 权限和UPDATE权限授予用户userb_exer。

6. 禁止用户usera_exer将获得的CREATE SESSION权限再授予其他用户。

7. 禁止用户usera_exer将获得的scott.emp的SELECT权限和UPDATE权限再授予其他用户。

8. 创建角色rolea和roleb,将CREATE TABLE权限,scott.emp的INSERT权限和DELETE 权限授予rolea;将CONNECT,RESOURCE角色授予roleb。

9. 将角色rolea,roleb授予用户usera_exer。

相关文档
最新文档