當前位置:首頁 » 操作系統 » 角色許可權資料庫

角色許可權資料庫

發布時間: 2022-10-29 15:13:10

『壹』 資料庫中的用戶表 角色表 許可權表 角色許可權表 用戶角色表具體怎麼建

用戶表:用戶的具體信息,比如名字年齡
角色表:當前系統擁有的角色,比如管理員
許可權表:角色可能的所有許可權,比如刪除,修改
角色許可權表:關聯角色表和許可權表
用戶角色表:這個可以作為用戶表中的一個欄位,當然作為一個表也行,就是關聯用戶表跟角色表

『貳』 角色分配的許可權如何在資料庫中的存儲

--創建一個簡單的登錄,登錄名為:newlogin;登錄密碼:123456;默認資料庫:master,默認資料庫也可以不指定。
EXEC sp_addlogin 'newlogin','123456','master'
--創建用戶
--創建一個簡單的用戶,如果不指定用戶名,則添加到當前資料庫登錄名中,如果不指定角色,則該用戶默認屬於public角色。下為添加newlogin登錄名。
EXEC sp_adser 'newlogin'
--創建一個帶用戶名的用戶,用戶可以與登錄名相同(同上一種類似),也可以不同,但要設定當前登錄名,用戶角色可選,默認為public。下為將用戶newuser添加到newlogin登錄名中。
EXEC sp_adser 'newlogin','newuser'
--創建角色
EXEC sp_addrole 'newrole'
--下為將用戶下為將用戶newuser添加到newlogin登錄名中。並指定newrole角色。
EXEC sp_adser 'newlogin','newuser','newrole'
--為角色newrole賦予jobs表的所有許可權
GRANT ALL ON jobs TO newrole
--為角色newrole賦予sales表的查、改許可權
GRANT SELECT,UPDATE ON sales TO newrole
--禁止角色newrole使用employees表的插入許可權
DENY INSERT ON employees TO newrole

另一種創建用戶和賦予角色的方式
--為登錄newlogin在資料庫中添加安全賬戶newuser
EXEC sp_grantdbaccess 'newlogin','newuser'
--添加newuser為角色newrole的成員
EXEC sp_addrolemember 'newrole','newuser'

--資料庫用戶、角色、登錄的刪除操作
--刪除當前資料庫用戶
EXEC sp_revokedbaccess 'newuser';
--刪除資料庫登錄
EXEC sp_droplogin 'newlogin'
--刪除資料庫角色
EXEC sp_droprole 'newrole'
--從資料庫角色(newrole)中刪除用戶(newuser)
EXEC sp_droprolemember 'newrole', 'newuser'
--用sql代碼新建登錄、用戶
--創建帶密碼的mylogin登錄名,MUST_CHANGE 選項需要用戶首次連接伺服器時更改此密碼。
CREATE LOGIN mylogin WITH PASSWORD = '123456' MUST_CHANGE;
--創建映射到憑據的登錄名。
--以下示例將創建mylogin登錄名。此登錄名將映射到mycredential憑據。
CREATE LOGIN mylogin WITH PASSWORD = '123456',
CREDENTIAL = mycredential;
--從Windows 域帳戶創建登錄名
--如果從Windows 域帳戶映射登錄名,則登錄名必須用方括弧([ ]) 括起來。
CREATE LOGIN [jack\xiangzhao] FROM WINDOWS;
--如果指定用戶名,則不使用默認登錄名作為該資料庫用戶
CREATE USER myuser FOR LOGIN mylogin
--以下示例將創建用戶myuser擁有的資料庫角色myrole
CREATE ROLE myrole AUTHORIZATION myuser;
--以下示例將創建db_role固定資料庫角色擁有的資料庫角色myrole
CREATE ROLE myrole AUTHORIZATION db_role

『叄』 SSAS多維資料庫怎樣設置角色訪問許可權

新建具體的角色,根據需求定義相應的許可權,即可

對於訪問控制需求(這里以SQL Server 2005自帶的示例說明)有如下說明:假設Adventure Works Cycles將全球的銷售按國家和地區分為不同的分公司(Australia分公司、Canada分公司、France分公司、Germany分公司、United Kingdom分公司、United States分公司),

總公司CEO可以看到每個分公司的銷售情況,分公司的經理只能看到自己所在的分公司的銷售情況。分析需求可以得知,實際上需要根據用戶來決定用戶訪問的數據,可以利用SQL Server 2005 Analysis Service中定義角色的方式來控制。

定義角色可以在多維數據集開發環境中定義,也可以完成多維數集部署之後在資料庫伺服器端定義。

多維數據集角色是一類訪問許可權的集合,可以在角色中定義屬於這個角色的用戶能訪問什麼數據,不能訪問什麼數據。定義了角色之後,可以為這個角色添加成員,成員是伺服器Windwos賬戶或者是域賬戶。當某個角色賦於某個成員之後,客戶端使用該用戶登陸的時候,只能看到角色中定義的許可權訪問多維數據集。如果在開發環境定義的角色必須先保存然後部署才能生效。

下面具體介紹設置方法(前台測試工具用普科(ProClarity)):

1、新建Windows測試賬戶「Jeffrey」。不要定義成Administrator組,因為Administrator組的用戶自動擁有訪問多維數集的許可權。

2、打開Analysis Servie 項目工程,在角色列表項中單擊右鍵新建角色,打開新建角色對框。

3、設置訪問許可權(如圖1)。

圖1

以Jeffery用戶登陸,customer下的區域維度所有成員只有Australi,成功的限制Jeffery用戶只能訪問Australi數據

『肆』 ORACLE資料庫中的許可權和角色

ORACLE資料庫中的許可權和角色

Oracle資料庫是一種大型關系型的資料庫,我們知道當使用一個資料庫時,僅僅能夠控制哪些人可以訪問資料庫,哪些人不能訪問資料庫是無法滿足資料庫訪問控制的。DBA需要通過一種機制來限制用戶可以做什麼,不能做什麼,這在Oracle中可以通過為用戶設置許可權來實現。許可權就是用戶可以執行某種操作的權利。而角色是為了方便DBA管理許可權而引入的一個概念,它實際上是一個命名的許可權集合。

1 許可權

Oracle資料庫有兩種途徑獲得許可權,它們分別為:

① DBA直接向用戶授予許可權。

② DBA將許可權授予角色(一個命名的包含多個許可權的集合),然後再將角色授予一個或多個用戶。

使用角色能夠更加方便和高效地對許可權進行管理,所以DBA應該習慣於使用角色向用戶進行授予許可權,而不是直接向用戶授予許可權。

Oracle中的許可權可以分為兩類:

•系統許可權

•對象許可權

1.1 系統許可權

系統許可權是在資料庫中執行某種操作,或者針對某一類的對象執行某種操作的權利。例如,在資料庫中創建表空間的權利,或者在任何模式中創建表的權利,這些都屬於系統許可權。在Oracle9i中一共提供了60多種許可權。

系統許可權的權利很大,通常情況下:

① 只有DBA才應當擁有alter database系統許可權,該許可權允許用戶對資料庫物理結構和可用性進行修改。

② 應用程序開發者一般應該擁有Create Table、Create View和Create Type等系統許可權,用於創建支持前端的資料庫模式對象。

③ 普通用戶一般只具有Create session系統許可權(可以通過Connection角色獲得),只有Create Session系統許可權的用戶才能連接到資料庫

④ 只有具有Grant Any PRivilege系統許可權用戶,或者獲取了具有With Admin Option選項的系統許可權的用戶,才能夠成為其它用戶授予許可權。

1.2對象許可權

對象許可權是針對某個特定的模式對象執行操作的權利。只能針對模式對象來設置和管理對象許可權。

對於模式對象:表、視圖、序列、存儲過程、存儲函數、包都可以對象設置許可權。不同類型模式對象具有不同的對象許可權。比如,表、視圖等對象具有查詢(Select)、修改(Update)、刪除(Delete)等對象許可權,而存儲過程、存儲函數等對象則具有執行(Execute)等對象許可權。

但是並不是所有的模式對象都可以設置對象許可權。比如簇、索引、觸發器以及資料庫鏈接等模式就不具有對象許可權。這些模式對象的訪問控制是通過相應的.系統許可權來實現的,比如,要對索引進行修改,必須擁有Alter Any Index系統許可權。

用戶自動擁有他的模式中所有對象的全部對象許可權,他可以將這些對象許可權授予其他的用戶或角色。比如,Test1用戶創建了一個表Table1,在沒有授權的情況下,用戶Test2不能查詢、修改、刪除這個表。如果Test1將ETP表的Select對象許可權授予了Test2,則該用戶就可以查詢Table1表了。如果在為其它用戶授予對象許可權時用了With Grant Option選項,被授予許可權的用戶還可以將這個許可權在授予其他用戶。

2 角色

2.1角色的概念

角色就是多個相關許可權的命名集合。通過角色來進行對用戶授予許可權,可以大大簡化DBA的工作量。比如,處於統一部門中的30多個用戶都需要訪問資料庫中的一系列表,DBA可以將這些表的中合適的對象許可權授予一個角色,然後在把這個角色授予這些用戶,這樣進行操作要比為沒有用戶進行授權要便捷多了,而且要對這些用戶的許可權進行統一修改,只需要修改角色的許可權即可。

2.2角色的優點

通過角色為用戶授予許可權,而不是直接向各個用戶授權,具有以下優點:

•簡化許可權管理 DBA將用戶群分類,然後為每一類用戶創建角色,並將該角色授予這類用戶所需要的許可權,最後在將改角色授予該類中的各個用戶。這樣不僅簡化了授權操作,而且當這類用戶的許可權需求發生改變時,只需要把角色的許可權進行改動,而不必修改每一位用戶的許可權。

•動態許可權管理 角色可以被禁用或激活。當角色被禁止使用時,擁有該角色的用戶不再擁有授予改角色的許可權了。這樣就可以對多個用戶的許可權進行動態控制了。

•靈活的編程能力 角色是存儲在數據字典中的,並且可以為角色設置口令。這樣就能夠在應用程序中對角色進行控制。比如禁用或者激活等操作。

下面以Oracle9i為例,給出具體的實現用戶授權:

(1)設定各種角色,及其許可權

CREATE ROLE checkerrole DENTIFIEDBYxm361001;

CREATE ROLE defaultrole IDENTIFIEDBYdefaultrole;

GRANT SELECT,UPDATE ON

account.paytable TO checkerrole;

GRANT CONNECT TO defaultrole;

(2)創建用戶

CREATE USER xiaoli IDENTIFIEDBY xiaoli;

(3)授權

GRANT checkerrole TO xiaoli;

GRANT defaultrole TO xiaoli;

(4)設定用戶預設的角色

ALTER USER xiaoli DEFAULTROLE defaultrole;

(5)注冊過程

CONNECT xiaoli/xiaoli@oracle

此時用戶只有其預設角色的許可權。

(6)激活角色

SET ROLE checkerrole IDENTIFIEDBY xm361001;

----操作成功後,xiaoli擁有checkerrole的許可權。

----這里的角色和口令是固定的,在應用系統中可以由應用管理人員自行設置則更為方便安全

;

『伍』 MySQL 資料庫,如何分角色許可權建表

角色一直存在各個資料庫中,比如 SQL Server、Oracle 等,MySQL 自從版本 8.0 release,引入了角色這個概念。


角色的概念

角色就是一組針對各種資料庫許可權的集合。比如,把一個角色分配給一個用戶,那這個用戶就擁有了這個角色包含的所有許可權。一個角色可以分配給多個用戶,另外一個用戶也可以擁有多個角色,兩者是多對多的關系。不過 MySQL 角色目前還沒有提供類似於其他資料庫的系統預分配的角色。比如某些資料庫的 db_owner、 db_datareader 、 db_datawriter 等等。那接下來我分幾個方面,來示例說明角色的使用以及相關注意事項。

示例 1:一個完整角色的授予步驟

用管理員創建三個角色:db_owner, db_datareader, db_datawriter

  • mysql> create role db_owner,db_datareader,db_datawriter;

  • Query OK, 0 rows affected (0.02 sec)

  • mysql> grant all on ytt_new.* to db_owner;

  • Query OK, 0 rows affected (0.01 sec)

  • mysql> grant select on ytt_new.* to db_datareader;

  • Query OK, 0 rows affected (0.01 sec)

  • mysql> grant insert,delete,update on ytt_new.* to db_datawriter;

  • Query OK, 0 rows affected (0.01 sec)

  • 創建三個普通用戶,分別為 ytt1、ytt2、ytt3。mysql> create user ytt1 identified by 'ytt',ytt2 identified by 'ytt',ytt3 identified by 'ytt';Query OK, 0 rows affected (0.01 sec)

  • 分別授予這三個用戶對應的角色。
  • -- 授權角色

  • mysql> grant db_owner to ytt1;

  • Query OK, 0 rows affected (0.02 sec)

  • -- 激活角色

  • mysql> set default role db_owner to ytt1;

  • Query OK, 0 rows affected (0.00 sec)

  • mysql> grant db_datareader to ytt2;

  • Query OK, 0 rows affected (0.01 sec)

  • mysql> set default role db_datareader to ytt2;

  • Query OK, 0 rows affected (0.01 sec)

  • mysql> grant db_datawriter to ytt3;

  • Query OK, 0 rows affected (0.01 sec)

  • mysql> set default role db_datawriter to ytt3;

  • Query OK, 0 rows affected (0.01 sec)

  • 以上是角色授予的一套完整步驟。那上面有點非常規的地方是激活角色這個步驟。MySQL 角色在創建之初默認是沒有激活的,也就是說創建角色,並且給一個用戶特定的角色,這個用戶其實並不能直接使用這個角色,除非激活了才可以。
  • 示例 2:一個用戶可以擁有多個角色

  • -- 用管理員登錄並且創建用戶

  • mysql> create user ytt4 identified by 'ytt';

  • Query OK, 0 rows affected (0.00 sec)

  • -- 把之前的三個角色都分配給用戶ytt4.

  • mysql> grant db_owner,db_datareader,db_datawriter to ytt4;

  • Query OK, 0 rows affected (0.01 sec)

  • -- 激活用戶ytt4的所有角色.

  • mysql> set default role all to ytt4;

  • Query OK, 0 rows affected (0.02 sec)

  • -- ytt4 用戶登錄

  • root@ytt-pc:/var/lib/mysql# mysql -uytt4 -pytt -P3304 -hytt-pc

  • ...

  • -- 查看當前角色列表

  • mysql> select current_role();

  • +--------------------------------------------------------+

  • | current_role() |

  • +--------------------------------------------------------+

  • | `db_datareader`@`%`,`db_datawriter`@`%`,`db_owner`@`%` |

  • +--------------------------------------------------------+

  • 1 row in set (0.00 sec)

  • -- 簡單創建一張表並且插入記錄, 檢索記錄,完了刪掉這張表

  • mysql> use ytt_new

  • Database changed

  • mysql> create table t11(id int);

  • Query OK, 0 rows affected (0.05 sec)

  • mysql> insert into t11 values (1);

  • Query OK, 1 row affected (0.02 sec)

  • mysql> select * from t11;

  • +------+

  • | id |

  • +------+

  • | 1 |

  • +------+

  • 1 row in set (0.00 sec)

  • mysql> drop table t11;

  • Query OK, 0 rows affected (0.04 sec)

  • 示例 3:用戶在當前 session 里角色互換
  • 其實意思是說,用戶連接到 MySQL 伺服器後,可以切換當前的角色列表,比如由 db_owner 切換到 db_datareader。

  • -- 還是之前的用戶ytt4, 切換到db_datareader

  • mysql> set role db_datareader;

  • Query OK, 0 rows affected (0.00 sec)

  • mysql> select current_role();

  • +---------------------+

  • | current_role() |

  • +---------------------+

  • | `db_datareader`@`%` |

  • +---------------------+

  • 1 row in set (0.00 sec)

  • -- 切換後,沒有許可權創建表

  • mysql> create table t11(id int);

  • ERROR 1142 (42000): CREATE command denied to user 'ytt4'@'ytt-pc' for table 't11'

  • -- 切換到 db_owner,恢復所有許可權。

  • mysql> set role db_owner;

  • Query OK, 0 rows affected (0.00 sec)

  • mysql> create table t11(id int);

  • Query OK, 0 rows affected (0.04 sec)

  • 示例 4:關於角色的兩個參數

  • activate_all_roles_on_login:是否在連接 MySQL 服務時自動激活角色mandatory_roles:強制所有用戶默認角色
  • -- 用管理員連接MySQL,

  • -- 設置默認激活角色

  • mysql> set global activate_all_roles_on_login=on;

  • Query OK, 0 rows affected (0.00 sec)

  • -- 設置強制給所有用戶賦予角色db_datareader

  • mysql> set global mandatory_roles='db_datareader';

  • Query OK, 0 rows affected (0.00 sec)

  • -- 創建用戶ytt7.

  • mysql> create user ytt7;

  • Query OK, 0 rows affected (0.01 sec)

  • -- 用 ytt7登錄資料庫

  • root@ytt-pc:/var/lib/mysql# mysql -uytt7 -P3304 -hytt-pc

  • ...

  • mysql> show grants;

  • +-------------------------------------------+

  • | Grants for ytt7@% |

  • +-------------------------------------------+

  • | GRANT USAGE ON *.* TO `ytt7`@`%` |

  • | GRANT SELECT ON `ytt_new`.* TO `ytt7`@`%` |

  • | GRANT `db_datareader`@`%` TO `ytt7`@`%` |

  • +-------------------------------------------+

  • 3 rows in set (0.00 sec)

  • 示例 5 :create role 和 create user 都有創建角色許可權,兩者有啥區別?

  • 以下分別創建兩個用戶 ytt8、ytt9,一個給 create role,一個給 create user 許可權。
  • -- 管理員登錄,創建用戶ytt8,ytt9.

  • mysql> create user ytt8,ytt9;

  • Query OK, 0 rows affected (0.01 sec)

  • mysql> grant create role on *.* to ytt8;

  • Query OK, 0 rows affected (0.02 sec)

  • mysql> grant create user on *.* to ytt9;

  • Query OK, 0 rows affected (0.01 sec)

  • -- 用ytt8 登錄,

  • root@ytt-pc:/var/lib/mysql# mysql -uytt8 -P3304 -hytt-pc

  • ...

  • mysql> create role db_test;

  • Query OK, 0 rows affected (0.02 sec)

  • -- 可以創建角色,但是不能創建用戶

  • mysql> create user ytt10;

  • ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation

  • mysql> q

  • Bye

  • -- 用ytt9 登錄

  • root@ytt-pc:/var/lib/mysql# mysql -uytt9 -P3304 -hytt-pc

  • ...

  • -- 角色和用戶都能創建

  • mysql> create role db_test2;

  • Query OK, 0 rows affected (0.02 sec)

  • mysql> create user ytt10;

  • Query OK, 0 rows affected (0.01 sec)

  • mysql> q

  • Bye

  • 那這里其實看到 create user 包含了 create role,create user 即可以創建用戶,也可以創建角色。
  • 示例 6:MySQL 用戶也可以當角色來用

  • -- 用管理員登錄,創建用戶ytt11,ytt12.

  • mysql> create user ytt11,ytt12;

  • Query OK, 0 rows affected (0.01 sec)

  • mysql> grant select on ytt_new.* to ytt11;

  • Query OK, 0 rows affected (0.01 sec)

  • -- 把ytt11普通用戶的許可權授予給ytt12

  • mysql> grant ytt11 to ytt12;

  • Query OK, 0 rows affected (0.01 sec)

  • -- 來查看 ytt12的許可權,可以看到擁有了ytt11的許可權

  • mysql> show grants for ytt12;

  • +-----------------------------------+

  • | Grants for ytt12@% |

  • +-----------------------------------+

  • | GRANT USAGE ON *.* TO `ytt12`@`%` |

  • | GRANT `ytt11`@`%` TO `ytt12`@`%` |

  • +-----------------------------------+

  • 2 rows in set (0.00 sec)

  • -- 在細化點,看看ytt12擁有哪些具體的許可權

  • mysql> show grants for ytt12 using ytt11;

  • +--------------------------------------------+

  • | Grants for ytt12@% |

  • +--------------------------------------------+

  • | GRANT USAGE ON *.* TO `ytt12`@`%` |

  • | GRANT SELECT ON `ytt_new`.* TO `ytt12`@`%` |

  • | GRANT `ytt11`@`%` TO `ytt12`@`%` |

  • +--------------------------------------------+

  • 3 rows in set (0.00 sec)

  • 示例 7:角色的撤銷

  • 角色撤銷和之前許可權撤銷類似。要麼 revoke,要麼刪除角色,那這個角色會從所有擁有它的用戶上移除。
  • -- 用管理員登錄,移除ytt2的角色

  • mysql> revoke db_datareader from ytt2;

  • Query OK, 0 rows affected (0.01 sec)

  • -- 刪除所有角色

  • mysql> drop role db_owner,db_datareader,db_datawriter;

  • Query OK, 0 rows affected (0.01 sec)

  • -- 對應的角色也從ytt1上移除掉了

  • mysql> show grants for ytt1;

  • +----------------------------------+

  • | Grants for ytt1@% |

  • +----------------------------------+

  • | GRANT USAGE ON *.* TO `ytt1`@`%` |

  • +----------------------------------+

  • 1 row in set (0.00 sec)

至此,我分了 7 個目錄說明了角色在各個方面的使用以及注意事項,希望對大家有幫助。

『陸』 oracle怎麼查詢當前資料庫的所有角色許可權


確定角色的許可權:
select
*
from
role_tab_privs
;
包含了授予角色的對象許可權
select
*
from
role_role_privs
;
包含了授予另一角色的角色
select
*
from
role_sys_privs
;
包含了授予角色的系統許可權

確定用戶帳戶所授予的許可權:
select
*
from
DBA_tab_privs
;
直接授予用戶帳戶的對象許可權
select
*
from
DBA_role_privs
;
授予用戶帳戶的角色
select
*
from
DBA_sys_privs
;
授予用戶帳戶的系統許可權

查看當前用戶許可權及角色:
SQL>
select
*
from
session_privs;
SQL>
select
*
from
user_role_privs;

查詢某一角色的具體許可權:
例如查看RESOURCE具有那些許可權
SQL>
SELECT
*
FROM
DBA_SYS_PRIVS
WHERE
GRANTEE='RESOURCE';

『柒』 在sql中怎麼為資料庫角色設置許可權呢

GRANT -- 定義訪問許可權
【語法】
GRANT { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER }
[,...] | ALL [ PRIVILEGES ] }
ON [ TABLE ] tablename [, ...]
TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }
ON DATABASE dbname [, ...]
TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
ON FUNCTION funcname ([type, ...]) [, ...]
TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

GRANT { USAGE | ALL [ PRIVILEGES ] }
ON LANGUAGE langname [, ...]
TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }
ON SCHEMA schemaname [, ...]
TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

GRANT { CREATE | ALL [ PRIVILEGES ] }
ON TABLESPACE tablespacename [, ...]
TO { username | GROUP groupname | PUBLIC } [, ...] [ WITH GRANT OPTION ]

【例子】
把表 films 的插入許可權賦予所有用戶:

GRANT INSERT ON films TO PUBLIC;

賦予用戶manuel對視圖kinds的所有許可權:

GRANT ALL PRIVILEGES ON kinds TO manuel;
請注意,如果上面的命令由超級用戶或者 kinds 的所有者執行,那麼它實際上會賦予所有許可權, 如果由其他人執行,那麼它會賦予這個「其他人」擁有授權選項的所有許可權。
收回授權 搜索 Revoke!

『捌』 如何設置資料庫的許可權

一、必要性 隨著近年來資料庫技術的深入發展,以Unix平台為代表的Informix Dynamic Server和以NT平台為代表的MS SQL Server得到了廣泛的應用。在一個公共的環境中,存在大量的用戶操作,有資料庫管理員,主要做數據管理維護工作,也有普通用戶,做一定授權下的數據修改和數據查詢。我們知道,每個資料庫伺服器上可建立多個不同類別的資料庫,而每個資料庫中也可以生成多個存儲過程、表、視圖等。如何保證數據的安全可靠,防止非法存取所造成的破壞和數據泄露,如何進行許可權的劃分和設置,這是安全管理的重點,也是資料庫可靠運行的保證。本文以Informix Dynamic Server為例做詳細說明。 二、許可權的劃分 Informix Dynamic Server使用了三級許可權來保證數據的安全性,它們分別是資料庫級許可權、表級許可權和欄位級許可權,具體為: 1.資料庫級許可權 包括Connect、Resource、DBA三種類別,其中: Connect: 最低級,僅允許用戶訪問資料庫中的表和索引,但不能創建和刪除它們; Resource: 建立在Connect之上,允許用戶在資料庫中創建、刪除表和索引; DBA: 即資料庫管理員,擁有資料庫管理的全部許可權,包括訪問資料庫表、創建和刪除索引、修改表結構、授予資料庫許可權給其他用戶等。 2.表/欄位(視圖)級許可權 指允許進行何種具體操作,主要包括: Select: 從表或欄位中檢索信息; Update: 修改指定欄位的值; Insert: 向資料庫表中添加記錄; Delete: 從資料庫表中刪除記錄; Index: 為一個資料庫表創建索引; Alter: 增加、刪除資料庫表中的欄位,或修改欄位的數據類型; All: 以上所有許可權。 三、許可權的設置 Informix Dynamic Server通過一系列SQL控制語句來實施對用戶許可權的設置,使得不同的用戶只能在各自限定的范圍內存取數據。以下命令格式中Grant表示授予許可權,Revoke表示撤消許可權,User-List指用戶名列表,多個用戶以逗號(,)分隔,對大多數資料庫系統而言,PUBLIC代表所有用戶。 1.對於資料庫,其格式為: Revoke { DBA | Resource | Connect } from { PUBLIC | User-List } Revoke { DBA | Resource | Connect } from { PUBLIC | User-List } 預設情況下,建立資料庫的用戶就是資料庫管理員(DBA),除其本身和Informix用戶外,其它用戶不對該資料庫擁有任何許可權,因此也就不能進行任何形式的訪問。資料庫管理員可根據其他用戶的業務分工、操作范圍授予或撤消DBA、Resource、Connect三種不同的許可權。 2.對於表及視圖,其格式為: Revoke TAB-PRI on [ tab_name | view_name ] from { PUBLIC | User-List } Revoke TAB-PRI on [ tab_name | view_name ] from { PUBLIC | User-List } 其中TAB_PRI表示select、update、delete等操作許可權,tab_name、 view_name分別代表資料庫表名和視圖名。 預設情況下,新建的資料庫表和視圖對能夠訪問該資料庫的用戶賦予了除alter外的所有許可權,有時這是比較危險的,比如對普通查詢用戶,應該有針對性地對許可權重新定義。此外,對一些重要的表或視圖,為防止敏感信息泄露,也應該重新授權。具體做法是:先用Revoke命令撤消原來所有的許可權,再用Grant授予新的許可權。 3.對於欄位: 欄位級許可權的授予和撤消同表級的命令方式基本一致,所不同的僅在於必須把賦予許可權的欄位名列在操作許可權如select、insert、update等之後,通過這樣細化可以實施更有效的數據保護。 4.對於存儲過程: 存儲過程由SQL語句編寫,存放於資料庫中,常與觸發器配合,可以對數據進行批量處理,使用非常方便。但如果授權不嚴格,將導致非法修改現有數據。其許可權設置格式為: Grant Execute on proc_name to { PUBLIC | User-List }; Revoke Execute on proc_name from { PUBLIC | User-List } 其中proc_name表示存儲過程名。 四、角色(role)的使用 在資料庫用戶的管理中,我們可以根據用戶對資料庫數據的需要情況把用戶分為幾組,每一組用戶可以作為一個"角色",每個用戶就是角色的成員。通過使用角色,資料庫系統更容易進行安全性管理,因為一旦某個用戶屬於某一個角色,對許可權的授予和撤消只需針對角色便可。具體使用方法為: 1.創建角色: Create Role role_name1 其中role_name1表示角色名。 2.劃分用戶角色: 即將相關用戶加入到角色中使之成為角色的成員。 Grant role_name1 to { User-List | Role_List } 其中Role_List表示角色列表,因為一個角色可以是另外一個或一組角色的成員。 3.授權角色許可權: 同授權用戶許可權的方法相同,但只能對表級和欄位級許可權有效,不能授予資料庫級許可權給一個角色。 4.激活角色: 執行以下語句,使以上定義的角色成為可用狀態: Set Role role_name1 五、結束語 以Internet技術為代表的網路業務的迅猛增長為資料庫應用開辟了新的發展空間,同時也對資料庫的安全性管理提出了更高的要求,網路的開放性導致非法存取常有發生,因而深刻領會和理解資料庫許可權的具體設置方法,結合自身實際應用,制定出一套完整的安全保護策略具有重要意義。Informix Dynamic Server對以上控制語句的使用除角色外,嚴格執行SQL ANSI 標准,因此對建立在NT平台上的MS SQL Server同樣有效 &.мo.О旒 2007-12-19 17:29 您覺得這個答案好不好? 好(0)不好(0) 相關問題 資料庫的訪問許可權都有什麼 怎麼修改資料庫的用戶許可權! 資料庫是如何安裝和設置的? 資料庫連接設置 固定伺服器角色、固定資料庫角色各有哪幾類?有什麼許可權? 標簽:資料庫 許可權 設置 其他答案 如果是ORACLE資料庫,這樣可以分配許可權: GRANT SELECT ON SALARIES TO JACK 給SALARIES中JACK用戶的Connect角色賦予SELECT許可權 例如:創建一張表和兩個用戶分給他們不同的角色和許可權 CREATE TABLE SALARIES ( 2 NAME CHAR(30), 3 SALARY NUMBER, 4 AGE NUMBER); create user Jack identified by Jack create user Jill identified by Jill grant connect to Jack grant resource to Jill JILL 的角色為Resource你允許他對表進行選擇和插入或嚴格一些允許JILL修改SALARIES表中SALARY欄位的值 GRANT SELECT, UPDATE(SALARY) ON SALARIES TO Jill 執行:UPDATE Bryan.SALARIES SET SALARY = 35000 WHERE NAME = 'JOHN' 可以進行所有許可權范圍內的更新工作 使用表時的限制:SELECT * FROM Bryan.SALARIES 對表使用用戶名來加以標識

『玖』 資料庫中用戶與角色許可權管理各有什麼作用

用戶(User)只針對某個人管理;
角色(Role)可以針對一批人(該角色下的所有用戶)實施統一的管理策略。

通常,高效的管理就是:
1、先對角色管理;
2、再對角色中某個特例用戶進行管理。

『拾』 SQL資料庫的角色的定義,分類及角色的許可權分配操作

角色是一個強大的工具,使您得以將用戶集中到一個單元中,然後對該單元應用許可權。對一個角色授予、拒絕或廢除的許可權也適用於該角色的任何成員。可以建立一個角色來代表單位中一類工作人員所執行的工作,然後給這個角色授予適當的許可權。當工作人員開始工作時,只須將他們添加為該角色成員,當他們離開工作時,將他們從該角色中刪除。而不必在每個人接受或離開工作時,反復授予、拒絕和廢除其許可權。許可權在用戶成為角色成員時自動生效。

Microsoft® Windows NT® 和 Windows® 2000 組的使用方式與角色很相似。有關更多信息,請參見組。

如果根據工作職能定義了一系列角色,並給每個角色指派了適合這項工作的許可權,則很容易在資料庫中管理這些許可權。之後,不用管理各個用戶的許可權,而只須在角色之間移動用戶即可。如果工作職能發生改變,則只須更改一次角色的許可權,並使更改自動應用於角色的所有成員,操作比較容易。

在 Microsoft® SQL Server™ 2000 和 SQL Server 7.0 版中,用戶可屬於多個角色。

以下腳本說明登錄、用戶和角色的添加,並為角色授予許可權。

USE master

GO

sp_grantlogin 'NETDOMAIN\John'

GO

sp_defaultdb 'NETDOMAIN\John', 'courses'

GO

sp_grantlogin 'NETDOMAIN\Sarah'

GO

sp_defaultdb 'NETDOMAIN\Sarah', 'courses'

GO

sp_grantlogin 'NETDOMAIN\Betty'

GO

sp_defaultdb 'NETDOMAIN\Betty', 'courses'

GO

sp_grantlogin 'NETDOMAIN\Ralph'

GO

sp_defaultdb 'NETDOMAIN\Ralph', 'courses'

GO

sp_grantlogin 'NETDOMAIN\Diane'

GO

sp_defaultdb 'NETDOMAIN\Diane', 'courses'

GO

USE courses

GO

sp_grantdbaccess 'NETDOMAIN\John'

GO

sp_grantdbaccess 'NETDOMAIN\Sarah'

GO

sp_grantdbaccess 'NETDOMAIN\Betty'

GO

sp_grantdbaccess 'NETDOMAIN\Ralph'

GO

sp_grantdbaccess 'NETDOMAIN\Diane'

GO

sp_addrole 'Professor'

GO

sp_addrole 'Student'

GO

sp_addrolemember 'Professor', 'NETDOMAIN\John'

GO

sp_addrolemember 'Professor', 'NETDOMAIN\Sarah'

GO

sp_addrolemember 'Professor', 'NETDOMAIN\Diane'

GO

sp_addrolemember 'Student', 'NETDOMAIN\Betty'

GO

sp_addrolemember 'Student', 'NETDOMAIN\Ralph'

GO

sp_addrolemember 'Student', 'NETDOMAIN\Diane'

GO

GRANT SELECT ON StudentGradeView TO Student

GO

GRANT SELECT, UPDATE ON ProfessorGradeView TO Professor

GO

該腳本給 John 和 Sarah 教授提供了更新學生成績的許可權,而學生 Betty 和 Ralph 只能選擇他們自己的成績。Diane 因同時教兩個班,所以添加到兩個角色中。ProfessorGradeView 視圖應將教授限制在自己班學生的行上,而 StudentGradeView 應限制學生只能選擇自己的成績。

SQL Server 2000 和 SQL Server 7.0 版在安裝過程中定義幾個固定角色。可以在這些角色中添加用戶以獲得相關的管理許可權。下面是伺服器范圍內的角色。

固定伺服器角色
描述

sysadmin
可以在 SQL Server 中執行任何活動。

serveradmin
可以設置伺服器范圍的配置選項,關閉伺服器。

setupadmin
可以管理鏈接伺服器和啟動過程。

securityadmin
可以管理登錄和 CREATE DATABASE 許可權,還可以讀取錯誤日誌和更改密碼。

processadmin
可以管理在 SQL Server 中運行的進程。

dbcreator
可以創建、更改和除去資料庫。

diskadmin
可以管理磁碟文件。

bulkadmin
可以執行 BULK INSERT 語句。

可以從 sp_helpsrvrole 獲得固定伺服器角色的列表,可以從 sp_srvrolepermission 獲得每個角色的特定許可權。

每個資料庫都有一系列固定資料庫角色。雖然每個資料庫中都存在名稱相同的角色,但各個角色的作用域只是在特定的資料庫內。例如,如果 Database1 和 Database2 中都有叫 UserX 的用戶 ID,將 Database1 中的 UserX 添加到 Database1 的 db_owner 固定資料庫角色中,對 Database2 中的 UserX 是否是 Database2 的 db_owner 角色成員沒有任何影響。

固定資料庫角色
描述

db_owner
在資料庫中有全部許可權。

db_accessadmin
可以添加或刪除用戶 ID。

db_securityadmin
可以管理全部許可權、對象所有權、角色和角色成員資格。

db_ddladmin
可以發出 ALL DDL,但不能發出 GRANT、REVOKE 或 DENY 語句。

db_backupoperator
可以發出 DBCC、CHECKPOINT 和 BACKUP 語句。

db_datareader
可以選擇資料庫內任何用戶表中的所有數據。

db_datawriter
可以更改資料庫內任何用戶表中的所有數據。

db_denydatareader
不能選擇資料庫內任何用戶表中的任何數據。

db_denydatawriter
不能更改資料庫內任何用戶表中的任何數據。

可以從 sp_helpdbfixedrole 獲得固定資料庫角色的列表,可以從 sp_dbfixedrolepermission 獲得每個角色的特定許可權。

資料庫中的每個用戶都屬於 public 資料庫角色。如果想讓資料庫中的每個用戶都能有某個特定的許可權,則將該許可權指派給 public 角色。如果沒有給用戶專門授予對某個對象的許可權,他們就使用指派給 public 角色的許可權。

熱點內容
python實用代碼 發布:2025-05-13 22:19:41 瀏覽:841
dede資料庫的配置文件 發布:2025-05-13 22:19:08 瀏覽:966
給字元加密 發布:2025-05-13 22:12:32 瀏覽:971
資料庫系統實現答案 發布:2025-05-13 22:11:57 瀏覽:140
哪個軟體可以共存安卓 發布:2025-05-13 22:10:15 瀏覽:552
上傳宦妃天下野泉肉肉 發布:2025-05-13 22:10:10 瀏覽:408
洗眼睛解壓 發布:2025-05-13 21:58:28 瀏覽:272
c存儲指針 發布:2025-05-13 21:49:04 瀏覽:921
結繩編程軟體 發布:2025-05-13 21:49:03 瀏覽:850
解壓體育館 發布:2025-05-13 21:27:48 瀏覽:263