Oracle DCL(Data Control Language)數據控制語言(權限privilege,角色role,用戶user介紹)
1、如何控制用戶訪問
1、身份驗證,認證:Authentication
2、授權:Authorization
3、審計:Audit
2、權限
- 數據庫安全:
- -系統安全
- -數據安全
- 系統權限:數據庫中執行一個特定操作
- 對象權限:操縱數據庫的對象的內容
- 可用的系統權限有100多個
- 數據庫管理員有高層次的系統權限,可以完成
- -創建一個新用戶
- -刪除用戶
- -刪除表
- -備份表
3、創建用戶
DBA使用CREATE USER語句創建用戶
CREATE USER user identified BY password
SQL> create user wendy identified by wendy;
User created. |
4、用戶被創建後,DBA可以對用戶授予特殊的系統權限.
一個應用程序開發者,可能有如下系統權限:
- CREATE SESSION
- CREATE TABLE
- CREATE SEQUENCE
- CREATE VIEW
- CREATE PROCEDURE
用戶被創建後,DBA可以對那個用戶授予特殊的系統權限.
GRANT privilege [, privilege…]
To user [, user| role, PUBLIC…];
授予系統權限
DBA能授予某系統權限給用戶
SQL> GRANT create session,create table,create sequence,create view to wendy;
Grant succeeded. |
5、什麽是角色Role?
- 數據庫系統是role-base基於角色的系統.
- 角色是權限的集合.
- 操作系統中是基於組的系統,操作系統是用戶
- 組是用戶的集合.
- 可以將權限賦予一個用戶,也可以將角色賦予一個用戶.
- 創建一個角色;
CREATE ROLE manager;
- 賦予給角色一個權限;
GRANT create table, create view To manager;
- 賦予一個角色給用戶;
GRANT manager To wendy, gaga;
SQL> create role manager;
Role created.
SQL> grant create table,create view to manager;
Grant succeeded.
SQL> grant manager to wendy;
Grant succeeded. |
6、修改你的密碼
DBA創建你的用戶帳號和初始化你的密碼
你能使用ALTER USER語句改變密碼
ALTER USER wendy IDENTIFIED BY wendypassword; |
7、什麽是對象,什麽是對象權限?
TABLE,VIEW,Sequence 等為對象,在對象上的權限為對象權限,這個權限不是全局的.系統權限是全局的.
每種對象的權限都不同
對象宿主擁有在對象上全部的權限
對象宿主能授予對象權限給其他用戶.
GRANT object_priv[(columns)] ON object TO {user|role|PUBLIC} [WITH GRANT OPTION]; |
賦予對象權限
在t表中賦予查詢特權:
GRANT select
ON t
TO wendy;
賦予更新某列的特權給用戶和角色:
GRANT update(id,name)
ON t
TO wendy,manager;
SQL> grant select 2 on t 3 to wendy;
Grant succeeded.
SQL> grant update(id,name) 2 on t 3 to wendy,manager;
Grant succeeded. |
8、傳遞特權
授予用戶給其他用戶權限的權限:
GRANT select,insert
ON t
TO wendy
WITH GRANT OPTION;
SQL> grant select,insert 2 on t 3 to wendy 4 with grant option;
Grant succeeded. |
允許系統上的所有用戶從wendy的t表中查詢數據:
GRANT select
ON wendy.t
TO PUBLIC;
SQL> grant select 2 on wendy.t 3 to public;
Grant succeeded. ------------註意:wendy.t是指wendy用戶下的t表,所以一定要保證這個用戶下有這張表 |
9、檢查賦予的特權
數據字典視圖 |
描述 |
ROLE_SYS_PRIVS |
授予角色的系統權限 |
ROLE_TAB_PRIVS |
授予角色的表權限 |
USER_ROLE_PRIVS |
授予用戶的角色 |
USER_SYS_PRIVS |
授予用戶的系統權限 |
USER_TAB_PRIVS_MADE |
用戶對象上授予的權限 |
USER_TAB_PRIVS_RECD |
授予用戶的對象權限 |
USER_COL_PRIVS_MADE |
用戶某列上授予的對象權限 |
USER_COL_PRIVS_RECD |
授予用戶某列上的對象權限 |
10、撤銷對象權限
使用revoke語句來撤銷曾賦予給用戶的權限
通過WITH GRANT OPTION子句被傳遞給其他用戶的權限也被撤銷
Revoke{privilege [, privilege…]| ALL}
ON object
FROM {user[,user…] | role| PUBLIC}
[CASCADE constraints];
CASCADE表示把他下面依賴的權限都撤銷.
在wendy的表中,撤銷SELECT和INSERT權限
REVOKE select,insert
ON t
FROM wendy;
11、總結
語句 |
解釋 |
Create user |
Creates a user(usually performed by a DBA) |
Grant |
Gives other users privileges to access the objects |
Create role |
Creates a collection of privileges, usually performed by a DBA |
Alter user |
Changes a user‘s password |
Revoke |
Removes privileges on an object from users |
Oracle DCL(Data Control Language)數據控制語言(權限privilege,角色role,用戶user介紹)