溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

PostgreSQL數(shù)據(jù)庫(kù)角色(五)

發(fā)布時(shí)間:2020-07-13 04:49:03 來(lái)源:網(wǎng)絡(luò) 閱讀:732 作者:IdealReality 欄目:數(shù)據(jù)庫(kù)
   
    使用角色的概念管理數(shù)據(jù)庫(kù)訪問(wèn)權(quán)限。
    角色可以是數(shù)據(jù)庫(kù)用戶(hù)和一組數(shù)據(jù)庫(kù)用戶(hù),可擁有數(shù)據(jù)庫(kù)對(duì)象。

- 1.數(shù)據(jù)庫(kù)角色
    獨(dú)立于操作系統(tǒng)用戶(hù)。
    創(chuàng)建角色: create role name;
    刪除角色: drop role name;
    確定現(xiàn)有角色: select * from pg_roles;  或者\(yùn)du 列出現(xiàn)有角色。

    新安裝的數(shù)據(jù)庫(kù)默認(rèn)有一個(gè)預(yù)定義角色:postgres.
    給定客戶(hù)端連接可以連接的數(shù)據(jù)庫(kù)角色集,由客戶(hù)端身份驗(yàn)證設(shè)置決定.

- 2. 角色屬性
    這些屬性定義其權(quán)限并與客戶(hù)端身份驗(yàn)證系統(tǒng)交互。

    登錄權(quán)限(login privilege): 
        具有l(wèi)ogin屬性的角色才能用作數(shù)據(jù)庫(kù)連接的初始角色名稱(chēng)。create role name  login;

    超級(jí)用戶(hù)狀態(tài)(superuser status):
        數(shù)據(jù)庫(kù)超級(jí)用戶(hù)繞過(guò)所有權(quán)限檢查,但登錄權(quán)限除外.  create role name superuser;

    database creation
        授予角色創(chuàng)建數(shù)據(jù)庫(kù)的權(quán)限: create role name createdb;

    role creation
        授予角色創(chuàng)建更多角色的權(quán)限: create role name createrole;

    initiating replication
        授予角色啟動(dòng)流復(fù)制的權(quán)限: create role name REPLICATION LOGIN;

    password
        數(shù)據(jù)庫(kù)密碼與操作系統(tǒng)密碼分開(kāi) 使用時(shí)創(chuàng)建角色時(shí)指定密碼。CREATE ROLE name PASSWORD 'string';

    優(yōu)秀做法:
        創(chuàng)建具有CREATEDB和CREATEROLE權(quán)限但不是超級(jí)用戶(hù)的角色,然后將此角色用于數(shù)據(jù)庫(kù)和角色的所有日常管理.

- 3 角色成員:
    可以將權(quán)限授予整個(gè)組或從組中撤銷(xiāo)。
    先創(chuàng)建角色: create role name;
    組角色存在后,可使用grant和revoke命令添加和刪除成員。
    grant grouprole  to role1...;
    revoke grouprole from role1...;

    數(shù)據(jù)庫(kù)不允許您設(shè)置循環(huán)成員資格循環(huán)。此外,不允許授予角色成員資格 PUBLIC。

    例如:
        CREATE ROLE joe LOGIN INHERIT;
        CREATE ROLE admin NOINHERIT;
        CREATE ROLE wheel NOINHERIT;
        GRANT admin TO joe;
        GRANT wheel TO admin;

    組角色的成員可以通過(guò)兩種方式使用角色的權(quán)限. 
    設(shè)置臨時(shí)組角色: set role name;
    重置角色: reset role;
    刪除組角色: drop role name;
    數(shù)據(jù)庫(kù)會(huì)話可以訪問(wèn)組角色的權(quán)限,創(chuàng)建的任何數(shù)據(jù)庫(kù)對(duì)象都被組角色擁有。
    成員角色會(huì)繼承組角色的權(quán)限。

    用戶(hù)在角色執(zhí)行時(shí)不會(huì)自動(dòng)繼承權(quán)限。PostgreSQL默認(rèn)為所有角色提供 INHERIT屬性.


- 4 刪除角色:
    角色可以擁有數(shù)據(jù)庫(kù)對(duì)象并且可以擁有訪問(wèn)其他對(duì)象的權(quán)限。
    刪除角色前,先刪除該角色擁有的任何對(duì)象或?qū)⑵渲匦路峙浣o其他所有者; 并且必須撤消授予該角色的任何權(quán)限。
    ALTER TABLE bobs_table OWNER TO alice;

    或者:
        REASSIGN OWNED命令可用于將要?jiǎng)h除的角色所擁有的所有對(duì)象的所有權(quán)重新分配給單個(gè)其他角色.必須在包含該角色所擁有的對(duì)象的每個(gè)數(shù)據(jù)庫(kù)中運(yùn)行它.
        DROP OWNED不會(huì)刪除整個(gè)數(shù)據(jù)庫(kù)或表空間.

    刪除已用于擁有對(duì)象的角色的最常用方法是:
        REASSIGN OWNED BY doomed_role TO successor_role;
        DROP OWNED BY doomed_role;
        -- 在集群
        DROP ROLE doomed_role;         

- 5. 默認(rèn)角色:
    可訪問(wèn)常用的功能和信息。
角色	                    允許訪問(wèn)
pg_read_all_settings	讀取所有配置變量,僅對(duì)超級(jí)用戶(hù)可見(jiàn)的變量。
pg_read_all_stats	    閱讀所有pg_stat_ *視圖并使用各種與統(tǒng)計(jì)相關(guān)的擴(kuò)展,僅對(duì)超級(jí)用戶(hù)可見(jiàn)的擴(kuò)展。
pg_stat_scan_tables	    執(zhí)行可能ACCESS SHARE會(huì)對(duì)表進(jìn)行鎖定的監(jiān)視函數(shù)。
pg_signal_backend	    將信號(hào)發(fā)送到其他后端(例如:取消查詢(xún),終止)。
pg_monitor	            讀取/執(zhí)行各種監(jiān)視視圖和功能。這個(gè)角色的成員pg_read_all_settings,pg_read_all_stats和pg_stat_scan_tables。

管理員監(jiān)控?cái)?shù)據(jù)庫(kù)服務(wù)器的目的配置:
    pg_monitor,pg_read_all_settings,pg_read_all_stats和pg_stat_scan_tables角色,它們授予一組公共權(quán)限,允許角色讀取通常僅限于超級(jí)用戶(hù)的各種有用的配置設(shè)置,統(tǒng)計(jì)信息和其他系統(tǒng)信息。

管理員可以使用GRANT命令向用戶(hù)授予對(duì)這些角色的訪問(wèn)權(quán)限:
    GRANT pg_signal_backend TO admin_user;



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI