版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章openGauss安全管理數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)與開發(fā)openGauss安全管理openGauss的安全機(jī)制配置客戶端接入認(rèn)證用戶管理角色管理模式管理權(quán)限管理openGauss的安全機(jī)制多因子身份認(rèn)證
:支持基于口令、SSL客戶端證書、LDAP(輕量目錄訪問協(xié)議)及Kerberos協(xié)議認(rèn)證,適應(yīng)不同安全場(chǎng)景。例如,通過SSL證書認(rèn)證可避免密碼泄露風(fēng)險(xiǎn)。
細(xì)粒度權(quán)限管理
:RBAC(Role-BasedAccessControl,基于角色的訪問控制):通過角色分配權(quán)限,簡(jiǎn)化用戶權(quán)限管理。例如,創(chuàng)建只讀角色并賦予SELECT權(quán)限。CREATEROLEread_only;GRANTSELECTONTABLEsensitive_dataTOread_only;最小權(quán)限原則:用戶僅擁有執(zhí)行任務(wù)所需的最小權(quán)限,減少誤操作或惡意操作風(fēng)險(xiǎn)。行級(jí)訪問控制(Row-LevelSecurity,RLS):限制用戶僅能訪問表中特定行。例如,限制部門經(jīng)理只能查看本部門數(shù)據(jù)。身份認(rèn)證與訪問控制openGauss的安全機(jī)制傳輸加密(SSL/TLS):所有客戶端與數(shù)據(jù)庫的通信均可通過SSL/TLS加密,防止中間人攻擊。配置示例:#啟用SSL并配置證書路徑ssl=onssl_cert_file='server.crt'ssl_key_file='server.key'透明數(shù)據(jù)加密(TDE):對(duì)靜態(tài)數(shù)據(jù)(如數(shù)據(jù)文件、備份)進(jìn)行加密,密鑰由第三方管理工具(如KeyManagementService)保護(hù),確保即使存儲(chǔ)介質(zhì)被盜也無法解密。數(shù)據(jù)加密openGauss的安全機(jī)制全量操作日志:記錄用戶登錄、DDL/DML操作、權(quán)限變更等事件,支持定制審計(jì)規(guī)則。例如,審計(jì)所有對(duì)'salary'表的訪問:AUDITSELECT,UPDATEONsalaryBYALL;實(shí)時(shí)監(jiān)控與告警
:集成Prometheus等工具監(jiān)控異常行為(如頻繁失敗登錄),并觸發(fā)告警。安全審計(jì)openGauss的安全機(jī)制動(dòng)態(tài)數(shù)據(jù)脫敏(DDM):在查詢結(jié)果中動(dòng)態(tài)隱藏敏感字段,無需修改數(shù)據(jù)。例如,隱藏手機(jī)號(hào)中間四位:CREATEMASKINGPOLICYphone_maskON(phoneVARCHAR)USING('***-****-'||SUBSTR(phone,9,4));靜態(tài)脫敏:對(duì)測(cè)試環(huán)境中的生產(chǎn)數(shù)據(jù)執(zhí)行脫敏處理(如替換真實(shí)姓名為隨機(jī)值),確保開發(fā)測(cè)試安全。數(shù)據(jù)脫敏openGauss的安全機(jī)制IP白名單與連接限制:通過'pg_hba.conf'文件限制允許連接的IP范圍,阻止非法訪問:hostallall192.168.1.0/24md5#僅允許內(nèi)網(wǎng)網(wǎng)段防SQL注入:支持參數(shù)化查詢,避免拼接SQL語句,同時(shí)內(nèi)置語句過濾機(jī)制攔截常見攻擊模式。網(wǎng)絡(luò)安全防護(hù)openGauss的安全機(jī)制復(fù)雜度要求:強(qiáng)制密碼包含大小寫字母、數(shù)字及特殊字符,長(zhǎng)度不少于8位。有效期與歷史記錄:設(shè)置密碼有效期(如90天),并禁止復(fù)用最近5次密碼。登錄失敗鎖定:連續(xù)3次登錄失敗后鎖定賬戶,防止暴力破解。密碼安全策略openGauss的安全機(jī)制主備復(fù)制加密:主備節(jié)點(diǎn)間通過SSL加密同步數(shù)據(jù),避免數(shù)據(jù)在傳輸中被竊取。備份文件加密:使用AES256算法加密備份文件,確保離線存儲(chǔ)安全。容災(zāi)與備份安全openGauss的安全機(jī)制漏洞防護(hù)(CVE):社區(qū)定期發(fā)布安全補(bǔ)丁,如修復(fù)SQL注入漏洞。安全參數(shù)配置:提供'security_*'參數(shù)組(如'security_policy'),支持開啟強(qiáng)制訪問控制(MAC)等企業(yè)級(jí)功能。安全增強(qiáng)特性配置客戶端接入認(rèn)證客戶端依據(jù)用戶需求配置相關(guān)認(rèn)證信息,建立與服務(wù)端之間的連接。連接建立完成后,客戶端發(fā)送訪問所需要的連接請(qǐng)求信息給服務(wù)端,對(duì)請(qǐng)求信息的驗(yàn)證工作都在服務(wù)端完成。服務(wù)端首先需要進(jìn)行訪問源的校驗(yàn),即依據(jù)配置文件對(duì)訪問的端口號(hào)、訪問IP地址、允許用戶訪問范圍以及訪問數(shù)據(jù)對(duì)象進(jìn)行校驗(yàn)。在完成校驗(yàn)后連同認(rèn)證方式和必要的信息返回給客戶端??蛻舳艘罁?jù)認(rèn)證方式加密口令并發(fā)送認(rèn)證所需的信息給服務(wù)端。服務(wù)端對(duì)收到的認(rèn)證信息進(jìn)行認(rèn)證。認(rèn)證通過,則啟動(dòng)會(huì)話任務(wù)與客戶端進(jìn)行通信提供數(shù)據(jù)庫服務(wù);否則,拒絕當(dāng)前連接,并退出會(huì)話??蛻舳税踩J(rèn)證機(jī)制是openGauss的第一層安全保護(hù)機(jī)制,解決了訪問源與數(shù)據(jù)庫服務(wù)端間的信任問題。通過這層機(jī)制可有效攔截非法用戶對(duì)數(shù)據(jù)庫進(jìn)行惡意訪問,
避免后續(xù)的非法操作。openGauss認(rèn)證過程配置客戶端接入認(rèn)證配置IP白名單客戶端主機(jī)需要連接數(shù)據(jù)庫服務(wù)器時(shí)會(huì)發(fā)送連接請(qǐng)求信息給服務(wù)器,連接請(qǐng)求包括主機(jī)IP、用戶口令、認(rèn)證證書等信息,服務(wù)器認(rèn)證過程中首先會(huì)檢測(cè)主機(jī)IP是否在服務(wù)器監(jiān)聽范圍,這個(gè)監(jiān)聽I(yíng)P范圍就是IP訪問的白名單,即允許訪問的主機(jī)IP。在$PGDATA/postgresql.conf配置文件中設(shè)置監(jiān)聽I(yíng)P范圍,參數(shù)為listen_addresses,此參數(shù)指定服務(wù)器在哪些TCP/IP地址上偵聽客戶端連接。盡量避免偵聽主機(jī)上所有網(wǎng)卡地址,偵聽地址配置參數(shù)listenaddresses不建議允許包含表示所有IP地址的'*'或'0.0.0.0'字符串。單實(shí)例模式下此參數(shù)默認(rèn)值為listen_addresses='localhost',即只允許服務(wù)器內(nèi)部訪問,如果是主備集群模式,此參數(shù)的值除了本機(jī)地址名還加上了其他數(shù)據(jù)節(jié)點(diǎn)的IP,即只允許集群內(nèi)部主機(jī)的互訪,集群外不允許訪問。配置客戶端接入認(rèn)證配置IP白名單通常情況下,數(shù)據(jù)庫服務(wù)器只開放給數(shù)據(jù)庫系統(tǒng)應(yīng)用服務(wù)器主機(jī)、DBA遠(yuǎn)程運(yùn)維主機(jī)、程序員主機(jī)等有限的IP范圍訪問,所以設(shè)置參數(shù)listen_addresses為"localhost"外加需要接收業(yè)務(wù)請(qǐng)求的網(wǎng)卡IP地址,多個(gè)地址用逗號(hào)隔開,然后重啟數(shù)據(jù)庫,IP白名單就設(shè)置完成。利用Linux的vim文本編輯器編輯postgresql.conf文件,修改參數(shù)listen_addresses的值。配置客戶端接入認(rèn)證客戶端認(rèn)證配置文件客戶端認(rèn)證配置文件為pg_hba.conf,它與postgresql.conf文件在同一路徑下。pg_hba.conf文件的常用格式是一組記錄,每行一條客戶端認(rèn)證規(guī)則。每條記錄依次指定連接類型(TYPE)、訪問數(shù)據(jù)庫(DATABASE)、登錄用戶(USER)、客戶端連接地址(ADDRESS)以及認(rèn)證方法(METHOD)。連接類型(TYPE)local:Unix-domainsocket,unix域套接字通訊方式host:plainorSSL-encryptedTCP/IPsocket,普通或SSL加密的TCP/IP套接字通訊方式hostssl:SSL-encryptedTCP/IPsocket,SSL加密的TCP/IP套接字通訊方式hostnossl:plainTCP/IPsocket,普通TCP/IP套接字通訊方式配置客戶端接入認(rèn)證客戶端認(rèn)證配置文件訪問數(shù)據(jù)庫(DATABASE)all:表示可以訪問所有數(shù)據(jù)庫sameuser:表示只能訪問與用戶名相同的數(shù)據(jù)庫samerole:表示只能訪問與角色名相同的數(shù)據(jù)庫登錄用戶(USER)all:表示所有用戶可以訪問username:表示只有該用戶可以訪問+rolename:前綴為+組才能訪問配置客戶端接入認(rèn)證客戶端認(rèn)證配置文件客戶端連接地址(ADDRESS)hostname:主機(jī)名,表示只有該主機(jī)可以訪問IP/CIDRmask:由IP地址和CIDR掩碼組成,表示允許某段ip可以訪問,例如:0.0.0.0/0表示所有IP都可以訪問。samerole:表示只能訪問與角色名相同的數(shù)據(jù)庫認(rèn)證方法(METHOD)md5:md5認(rèn)證方式sha256:sha256認(rèn)證方式,首選此方式用戶管理實(shí)例級(jí)權(quán)限:控制用戶對(duì)整個(gè)數(shù)據(jù)庫實(shí)例的操作權(quán)限CREATEDB:允許創(chuàng)建數(shù)據(jù)庫。CREATEROLE:允許創(chuàng)建和管理角色。SYSDBA/SYSADMIN:系統(tǒng)管理員權(quán)限,可執(zhí)行所有操作(默認(rèn)僅初始化用戶擁有)。數(shù)據(jù)庫級(jí)權(quán)限:控制用戶對(duì)單個(gè)數(shù)據(jù)庫的操作權(quán)限。CONNECT:允許連接到數(shù)據(jù)庫。CREATE:允許在數(shù)據(jù)庫中創(chuàng)建模式(Schema)。TEMPORARY:允許創(chuàng)建臨時(shí)表。模式級(jí)權(quán)限:控制用戶對(duì)模式(Schema)內(nèi)對(duì)象的訪問。USAGE:允許訪問模式中的對(duì)象。CREATE:允許在模式中創(chuàng)建表、視圖等。對(duì)象級(jí)權(quán)限:控制用戶對(duì)具體數(shù)據(jù)庫對(duì)象(如表、視圖、函數(shù))的操作。表/視圖:SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES(外鍵)、ALTER、DROP、ANALYZE和VACUUM。函數(shù):EXECUTE。序列:USAGE、SELECT、UPDATE。openGauss權(quán)限體系用戶管理openGauss管理員初始用戶-omm數(shù)據(jù)庫安裝過程中自動(dòng)生成的帳戶稱為初始用戶。初始用戶擁有系統(tǒng)的最高權(quán)限,能夠執(zhí)行所有的操作。最經(jīng)典的初始用戶是omm用戶。初始用戶會(huì)繞過所有權(quán)限檢查。建議僅將此初始用戶作為DBA管理用途,而非業(yè)務(wù)應(yīng)用。系統(tǒng)管理員-SYSADMIN系統(tǒng)管理員是指具有SYSADMIN屬性的帳戶,默認(rèn)安裝情況下具有與對(duì)象所有者相同的權(quán)限。要?jiǎng)?chuàng)建新的系統(tǒng)管理員,請(qǐng)以初始用戶或者系統(tǒng)管理員用戶身份連接數(shù)據(jù)庫,并使用帶SYSADMIN選項(xiàng)的CREATEUSER語句或ALTERUSER語句進(jìn)行設(shè)置。CREATEUSERjimWITHSYSADMINPASSWORD"xxxxxxxxx";用戶管理安全管理員-CREATEROLE安全管理員是指具有CREATEROLE屬性的賬戶,具有創(chuàng)建、修改、刪除用戶或角色的權(quán)限。要?jiǎng)?chuàng)建新的安全管理員,三權(quán)分立關(guān)閉時(shí),請(qǐng)以系統(tǒng)管理員或者安全管理員身份連接數(shù)據(jù)庫,三權(quán)分立打開時(shí),請(qǐng)以安全管理員身份連接數(shù)據(jù)庫,并使用帶CREATEROLE選項(xiàng)的CREATEUSER語句或ALTERUSER語句進(jìn)行設(shè)置。審計(jì)管理員-AUDITADMIN審計(jì)管理員是指具有AUDITADMIN屬性的賬戶,具有查看和刪除審計(jì)日志的權(quán)限。要?jiǎng)?chuàng)建新的審計(jì)管理員,三權(quán)分立關(guān)閉時(shí),請(qǐng)以系統(tǒng)管理員或者安全管理員身份連接數(shù)據(jù)庫,三權(quán)分立打開時(shí),請(qǐng)以安全管理員身份連接數(shù)據(jù)庫,并使用帶AUDITADMIN選項(xiàng)的CREATEUSER語句或ALTERUSER語句進(jìn)行設(shè)置。openGauss管理員用戶管理openGauss管理員監(jiān)控管理員-MONADMIN監(jiān)控管理員是指具有MONADMIN屬性的帳戶,具有查看dbe_perf模式下視圖和函數(shù)的權(quán)限,亦可以對(duì)dbe_perf模式的對(duì)象權(quán)限進(jìn)行授予或收回。要?jiǎng)?chuàng)建新的監(jiān)控管理員,請(qǐng)以系統(tǒng)管理員身份連接數(shù)據(jù)庫,并使用帶MONADMIN選項(xiàng)的CREATEUSER語句或ALTERUSER語句進(jìn)行設(shè)置。運(yùn)維管理員-OPRADMIN運(yùn)維管理員是指具有OPRADMIN屬性的帳戶,具有使用Roach工具執(zhí)行備份恢復(fù)的權(quán)限。要?jiǎng)?chuàng)建新的運(yùn)維管理員,請(qǐng)以初始用戶身份連接數(shù)據(jù)庫,并使用帶OPRADMIN選項(xiàng)的CREATEUSER語句或ALTERUSER語句進(jìn)行設(shè)置。安全策略管理員-POLADMIN安全策略管理員是指具有POLADMIN屬性的帳戶,具有創(chuàng)建資源標(biāo)簽、脫敏策略和統(tǒng)一審計(jì)策略的權(quán)限。要?jiǎng)?chuàng)建新的安全策略管理員,請(qǐng)以系統(tǒng)管理員用戶身份連接數(shù)據(jù)庫,并使用帶POLADMIN選項(xiàng)的CREATEUSER語句或ALTERUSER語句進(jìn)行設(shè)置。用戶管理默認(rèn)情況下?lián)碛蠸YSADMIN屬性的系統(tǒng)管理員,具備系統(tǒng)最高權(quán)限。在實(shí)際業(yè)務(wù)管理中,為了避免系統(tǒng)管理員擁有過度集中的權(quán)利帶來高風(fēng)險(xiǎn),可以設(shè)置三權(quán)分立。將系統(tǒng)管理員的部分權(quán)限分立給安全管理員和審計(jì)管理員,形成系統(tǒng)管理員、安全管理員和審計(jì)管理員三權(quán)分立。三權(quán)分立后,系統(tǒng)管理員將不再具有CREATEROLE屬性(安全管理員)和AUDITADMIN屬性(審計(jì)管理員)能力。即不再擁有創(chuàng)建角色和用戶的權(quán)限,并不再擁有查看和維護(hù)數(shù)據(jù)庫審計(jì)日志的權(quán)限。三權(quán)分立后,系統(tǒng)管理員只會(huì)對(duì)自己作為所有者的對(duì)象有權(quán)限。初始用戶的權(quán)限不受三權(quán)分立設(shè)置影響。因此建議僅將此初始用戶作為DBA管理用途,而非業(yè)務(wù)應(yīng)用。三權(quán)分立的設(shè)置辦法為將參數(shù)enableSeparationOfDuty設(shè)置為on,此參數(shù)默認(rèn)為off。gs_gucset-Nall-Iall-cenableSeparationOfDuty=on三權(quán)分立用戶管理用戶管理--創(chuàng)建用戶CREATEUSER[IFNOTEXISTS]user_name[[WITH]option[...]]{PASSWORD|IDENTIFIEDBY}{'password'[EXPIRED]|DISABLE};--修改用戶ALTERUSER[IFEXISTS]user_name[[WITH]option[...]];--刪除用戶DROPUSER[IFEXISTS]user_name[,...][CASCADE|RESTRICT];其中option子句用于設(shè)置權(quán)限及屬性等信息。{SYSADMIN|NOSYSADMIN}|{MONADMIN|NOMONADMIN}|{OPRADMIN|NOOPRADMIN}|{POLADMIN|NOPOLADMIN}|{AUDITADMIN|NOAUDITADMIN}|{CREATEDB|NOCREATEDB}|{CREATEROLE|NOCREATEROLE}|{INDEPENDENT|NOINDEPENDENT}|{PERSISTENCE|PERSISTENCE}|DEFAULTTABLESPACEtablespace_name用戶管理語法說明SYSADMIN|NOSYSADMIN:決定一個(gè)新角色是否為“系統(tǒng)管理員”,具有SYSADMIN屬性的角色擁有系統(tǒng)最高權(quán)限。缺省為NOSYSADMIN。MONADMIN|NOMONADMIN:定義角色是否是監(jiān)控管理員。缺省為NOMONADMIN。OPRADMIN|NOOPRADMIN:定義角色是否是運(yùn)維管理員。缺省為NOOPRADMIN。POLADMIN|NOPOLADMIN:定義角色是否是安全策略管理員。缺省為NOPOLADMIN。AUDITADMIN|NOAUDITADMIN:定義角色是否有審計(jì)管理屬性。缺省為NOAUDITADMIN。CREATEDB|NOCREATEDB:決定一個(gè)新角色是否能創(chuàng)建數(shù)據(jù)庫。新角色沒有創(chuàng)建數(shù)據(jù)庫的權(quán)限。缺省為NOCREATEDB。CREATEROLE|NOCREATEROLE:決定一個(gè)角色是否可以創(chuàng)建新角色(也就是執(zhí)行CREATEROLE和CREATEUSER)。
一個(gè)擁有CREATEROLE權(quán)限的角色也可以修改和刪除其他角色。缺省為NOCREATEROLE。用戶管理用戶管理INDEPENDENT|NOINDEPENDENT:定義私有、獨(dú)立的角色。具有INDEPENDENT屬性的角色,管理員對(duì)其進(jìn)行的控制、訪問的權(quán)限被分離,具體規(guī)則如下:未經(jīng)INDEPENDENT角色授權(quán),系統(tǒng)管理員無權(quán)對(duì)其表對(duì)象進(jìn)行增、刪、查、改、拷貝、授權(quán)操作。若將私有用戶表的相關(guān)權(quán)限授予其他非私有用戶,系統(tǒng)管理員也會(huì)獲得同樣的權(quán)限。未經(jīng)INDEPENDENT角色授權(quán),系統(tǒng)管理員和擁有CREATEROLE屬性的安全管理員無權(quán)修改INDEPENDENT角色的繼承關(guān)系。系統(tǒng)管理員無權(quán)修改INDEPENDENT角色的表對(duì)象的屬主。系統(tǒng)管理員和擁有CREATEROLE屬性的安全管理員無權(quán)去除INDEPENDENT角色的INDEPENDENT屬性。系統(tǒng)管理員和擁有CREATEROLE屬性的安全管理員無權(quán)修改INDEPENDENT角色的數(shù)據(jù)庫口令,INDEPENDENT角色需管理好自身口令,口令丟失無法重置。管理員屬性用戶不允許定義修改為INDEPENDENT屬性。PERSISTENCE|NOPERSISTENCE:定義永久用戶。僅允許初始用戶創(chuàng)建、修改和刪除具有PERSISTENCE屬性的永久用戶。DEFAULTTABLESPACE:指定新建用戶默認(rèn)的表空間。用戶管理用戶管理創(chuàng)建新用戶,并設(shè)置用戶擁有CREATEDB屬性。CREATEUSERusernameWITHCREATEDBPASSWORD"xxxxxxxxx";USER。更換密碼ALTERUSERusernameWITHPASSWORD'newpassword';重命名用戶ALTERUSERold_usernameRENAMETOnew_username;(2)要?jiǎng)h除現(xiàn)有用戶,請(qǐng)使用DROPUSER。DROPUSERusername;用戶管理私有用戶對(duì)于有多個(gè)業(yè)務(wù)部門,各部門間使用不同的數(shù)據(jù)庫用戶進(jìn)行業(yè)務(wù)操作,同時(shí)有一個(gè)同級(jí)的數(shù)據(jù)庫維護(hù)部門使用數(shù)據(jù)庫管理員進(jìn)行維護(hù)操作的場(chǎng)景下,業(yè)務(wù)部門可能希望在未經(jīng)授權(quán)的情況下,管理員用戶只能對(duì)各部門的數(shù)據(jù)進(jìn)行控制操作(DROP、ALTER、TRUNCATE),但是不能進(jìn)行訪問操作(INSERT、DELETE、UPDATE、SELECT、COPY)。即針對(duì)管理員用戶,表對(duì)象的控制權(quán)和訪問權(quán)要能夠分離,提高普通用戶數(shù)據(jù)安全性。openGauss提供了私有用戶方案,即創(chuàng)建具有INDEPENDENT屬性的用戶。針對(duì)該用戶的對(duì)象,系統(tǒng)管理員和擁有CREATEROLE屬性的安全管理員在未經(jīng)其授權(quán)前,只能進(jìn)行控制操作(DROP、ALTER、TRUNCATE),無權(quán)進(jìn)行INSERT、DELETE、SELECT、UPDATE、COPY、GRANT、REVOKE、ALTEROWNER操作。用戶管理永久用戶openGauss提供永久用戶方案,即創(chuàng)建具有PERSISTENCE屬性的永久用戶。CREATEUSERuser_persistenceWITHpersistenceIDENTIFIEDBY"1234@abc";只允許初始用戶創(chuàng)建、修改和刪除具有PERSISTENCE屬性的永久用戶。角色管理角色是一組用戶的集合。通過GRANT把角色授予用戶后,用戶即具有了角色的所有權(quán)限。推薦使用角色進(jìn)行高效權(quán)限分配。例如,可以為設(shè)計(jì)、開發(fā)和維護(hù)人員創(chuàng)建不同的角色,將角色GRANT給用戶后,再向每個(gè)角色中的用戶授予其工作所需數(shù)據(jù)的差異權(quán)限。在角色級(jí)別授予或撤消權(quán)限時(shí),這些更改將作用到角色下的所有成員。openGauss提供了一個(gè)隱式定義的擁有所有角色的組PUBLIC,所有創(chuàng)建的用戶和角色默認(rèn)擁有PUBLIC所擁有的權(quán)限。關(guān)于PUBLIC默認(rèn)擁有的權(quán)限請(qǐng)參考GRANT。要撤銷或重新授予用戶和角色對(duì)PUBLIC的權(quán)限,可通過在GRANT和REVOKE指定關(guān)鍵字PUBLIC實(shí)現(xiàn)。openGauss角色角色管理管理角色一般情況下,只有系統(tǒng)管理員和具有CREATEROLE屬性的用戶才能創(chuàng)建、修改或刪除角色。三權(quán)分立下,只有初始用戶和具有CREATEROLE屬性的用戶才能創(chuàng)建、修改或刪除角色。要?jiǎng)?chuàng)建角色,請(qǐng)使用CREATEROLE。執(zhí)行下列語句創(chuàng)建1個(gè)開發(fā)人員角色dev。CREATEROLEdevPASSWORD'********';要修改現(xiàn)有角色請(qǐng)使用ALTERROLE。執(zhí)行下列語句將dev角色鎖定,意味著dev角色擁有的權(quán)限將暫停使用。ALTERROLEdevACCOUNTLOCK;要在已有角色中添加用戶,請(qǐng)使用GRANT命令。執(zhí)行下列語句將jimmy用戶添加到dev角色中。GRANTdevTOjimmyWITHADMINOPTION;要?jiǎng)h除角色,請(qǐng)使用DROPROLE。DROPROLE只會(huì)刪除角色,并不會(huì)刪除角色中的成員用戶帳戶。執(zhí)行下列語句將dev角色刪除掉。DROPROLEdev;角色管理openGauss提供了一組默認(rèn)角色,以gs_role_開頭命名。它們提供對(duì)特定的、通常需要高權(quán)限的操作的訪問,可以將這些角色GRANT給數(shù)據(jù)庫內(nèi)的其他用戶或角色,讓這些用戶能夠使用特定的功能。在授予這些角色時(shí)應(yīng)當(dāng)非常小心,以確保它們被用在需要的地方。openGauss內(nèi)置角色角色名角色權(quán)限gs_role_copy_files具有執(zhí)行copy...to/fromfilename的權(quán)限,但需要先打開GUC參數(shù)enable_copy_server_files。gs_role_signal_backend具有調(diào)用函數(shù)pg_cancel_backend、pg_terminate_backend和pg_terminate_session來取消或終止其他會(huì)話的權(quán)限,但不能操作屬于初始用戶和PERSISTENCE用戶的會(huì)話。gs_role_tablespace具有創(chuàng)建表空間(tablespace)的權(quán)限。gs_role_replication具有調(diào)用邏輯復(fù)制相關(guān)函數(shù)的權(quán)限,例如kill_snapshot、pg_create_logical_replication_slot、pg_create_physical_replication_slot、pg_drop_replication_slot、pg_replication_slot_advance、pg_create_physical_replication_slot_extern、pg_logical_slot_get_changes、pg_logical_slot_peek_changes、pg_logical_slot_get_binary_changes、pg_logical_slot_peek_binary_changes。gs_role_account_lock具有加解鎖用戶的權(quán)限,但不能加解鎖初始用戶和PERSISTENCE用戶。gs_role_pldebugger具有執(zhí)行dbe_pldebugger下調(diào)試函數(shù)的權(quán)限。角色管理內(nèi)置角色的管理有如下約束以gs_role_開頭的角色名作為數(shù)據(jù)庫的內(nèi)置角色保留名,禁止新建以“gs_role_”開頭的用戶/角色,也禁止將已有的用戶/角色重命名為以“gs_role_”開頭;禁止對(duì)內(nèi)置角色的ALTER和DROP操作;內(nèi)置角色默認(rèn)沒有LOGIN權(quán)限,不設(shè)預(yù)置密碼;gsql元命令\du和\dg不顯示內(nèi)置角色的相關(guān)信息,但若顯示指定了pattern為特定內(nèi)置角色則會(huì)顯示;三權(quán)分立關(guān)閉時(shí),初始用戶、具有SYSADMIN權(quán)限的用戶和具有內(nèi)置角色ADMINOPTION權(quán)限的用戶有權(quán)對(duì)內(nèi)置角色執(zhí)行GRANT/REVOKE管理。三權(quán)分立打開時(shí),初始用戶和具有內(nèi)置角色ADMINOPTION權(quán)限的用戶有權(quán)對(duì)內(nèi)置角色執(zhí)行GRANT/REVOKE管理。模式管理Schema又稱作模式。通過管理Schema,允許多個(gè)用戶使用同一數(shù)據(jù)庫而不相互干擾,可以將數(shù)據(jù)庫對(duì)象組織成易于管理的邏輯組,同時(shí)便于將第三方應(yīng)用添加到相應(yīng)的Schema下而不引起沖突。每個(gè)數(shù)據(jù)庫包含一個(gè)或多個(gè)Schema。數(shù)據(jù)庫中的每個(gè)Schema包含表和其他類型的對(duì)象。數(shù)據(jù)庫創(chuàng)建初始,默認(rèn)具有一個(gè)名為public的Schema,且所有用戶都擁有此Schema的usage權(quán)限,只有系統(tǒng)管理員和初始化用戶可以在publicSchema下創(chuàng)建普通函數(shù)、聚合函數(shù)、存儲(chǔ)過程和同義詞對(duì)象,只有初始化用戶可以在publicSchema下創(chuàng)建操作符,其他用戶即使賦予create權(quán)限后也不可以創(chuàng)建上述五種對(duì)象??梢酝ㄟ^Schema分組數(shù)據(jù)庫對(duì)象。Schema類似于操作系統(tǒng)目錄,但Schema不能嵌套。默認(rèn)只有初始化用戶可以在pg_catalog模式下創(chuàng)建對(duì)象。相同的數(shù)據(jù)庫對(duì)象名稱可以應(yīng)用在同一數(shù)據(jù)庫的不同Schema中,而沒有沖突。例如,a_schema和b_schema都可以包含名為mytable的表。具有所需權(quán)限的用戶可以訪問數(shù)據(jù)庫的多個(gè)Schema中的對(duì)象。CREATEUSER創(chuàng)建用戶的同時(shí),系統(tǒng)會(huì)在執(zhí)行該命令的數(shù)據(jù)庫中,為該用戶創(chuàng)建一個(gè)同名的SCHEMA。數(shù)據(jù)庫對(duì)象是創(chuàng)建在數(shù)據(jù)庫搜索路徑中的第一個(gè)Schema內(nèi)的。有關(guān)默認(rèn)情況下的第一個(gè)Schema情況及如何變更Schema順序等更多信息,請(qǐng)參見搜索路徑。模式概述模式管理管理模式要?jiǎng)?chuàng)建Schema,請(qǐng)使用CREATESCHEMA。默認(rèn)初始用戶和系統(tǒng)管理員可以創(chuàng)建Schema,其他用戶需要具備數(shù)據(jù)庫的CREATE權(quán)限才可以在該數(shù)據(jù)庫中創(chuàng)建Schema,賦權(quán)方式請(qǐng)參考GRANT中將數(shù)據(jù)庫的訪問權(quán)限賦予指定的用戶或角色中的語法。執(zhí)行下列語句創(chuàng)建1個(gè)hrm模式,并將jimmy用戶作為此模式的所有者。CREATESCHEMAhrmAUTHORIZATIONjimmy;要更改Schema名稱或者所有者,請(qǐng)使用ALTERSCHEMA。Schema所有者可以更改Schema。執(zhí)行下列語句將hrm模式的屬主修改為jim用戶,要確保jim用戶已經(jīng)創(chuàng)建。ALTERSCHEMAhrmOWNERTOjim;模式管理管理模式要在Schema內(nèi)創(chuàng)建表,請(qǐng)以schema_name.table_name格式創(chuàng)建表。不指定schema_name時(shí),對(duì)象默認(rèn)創(chuàng)建到搜索路徑中的第一個(gè)Schema內(nèi)。以jim的身份登錄數(shù)據(jù)庫,執(zhí)行下列語句在hrm模式上創(chuàng)建1張department表。CREATETABLEhrm.department(codeVARCHAR(8),nameVARCHAR(32));要查看Schema所有者,請(qǐng)對(duì)系統(tǒng)表PG_NAMESPACE和PG_USER執(zhí)行如下關(guān)聯(lián)查詢。執(zhí)行下列語句查看hrm模式的所有者。SELECTs.nspname,u.usenameASnspownerFROMpg_namespaces,pg_useruWHEREnspname='hrm'ANDs.nspowner=u.usesysid;模式管理管理模式要查看所有Schema的列表,請(qǐng)查詢PG_NAMESPACE系統(tǒng)表。SELECT*FROMpg_namespace;要查看屬于某Schema下的表列表,請(qǐng)查詢系統(tǒng)視圖PG_TABLES。以下查詢會(huì)返回Schemahrm中的表列表。SELECTdistinct(tablename),schemanamefrompg_tableswhereschemaname='hrm';要?jiǎng)h除Schema及其對(duì)象,請(qǐng)使用DROPSCHEMA。Schema所有者可以刪除Schema。如果直接執(zhí)行下列語句試圖刪除Schemahrm,系統(tǒng)會(huì)報(bào)“ERROR:cannotdropschemahrmbecauseotherobjectsdependonit”錯(cuò)誤信息,原因是hrm模式下面有1張deparment表格存在,所以不能直接刪除。DROPSCHEMAhrm;通常只能在模式下面的所有對(duì)象已經(jīng)全部刪除之后才會(huì)刪除模式。如果想簡(jiǎn)單粗暴的直接刪除模式及模式下面的對(duì)象,就需要使用DROPSCHEMACASCADE命令刪除。DROPSCHEMAhrmCASCADE;模式管理搜索路徑搜索路徑定義在search_path參數(shù)中,參數(shù)取值形式為采用逗號(hào)分隔的Schema名稱列表。如果創(chuàng)建對(duì)象時(shí)未指定目標(biāo)Schema,則該對(duì)象會(huì)被添加到搜索路徑中列出的第一個(gè)Schema中。當(dāng)不同Schema中存在同名的對(duì)象時(shí),查詢對(duì)象未指定Schema的情況下,將從搜索路徑中包含該對(duì)象的第一個(gè)Schema中返回對(duì)象。要查看當(dāng)前搜索路徑,請(qǐng)使用SHOW。SHOWSEARCH_PATH;search_path參數(shù)的默認(rèn)值為:“$user”,public。$user表示與當(dāng)前會(huì)話用戶名同名的Schema名,如果這樣的模式不存在,$user將被忽略。所以默認(rèn)情況下,用戶連接數(shù)據(jù)庫后,如果數(shù)據(jù)庫下存在同名Schema,則對(duì)象會(huì)添加到同名Schema下,否則對(duì)象被添加到PublicSchema下。要更改當(dāng)前會(huì)話的默認(rèn)Schema,請(qǐng)使用SET命令。執(zhí)行如下命令將搜索路徑設(shè)置為jimmy、public,首先搜索jimmy。SETSEARCH_PATHTOjimmy,public;權(quán)限管理通常將數(shù)據(jù)庫眾多的權(quán)限分為2大類,一類為訪問數(shù)據(jù)的權(quán)限稱之為對(duì)象權(quán)限,主要包括SELECT、INSERT、UPDATE、DELETE、EXECUTE等權(quán)限;另外一類為數(shù)據(jù)庫結(jié)構(gòu)定義與修改權(quán)限稱之為系統(tǒng)權(quán)限,主要有CREATE、ALTER、DROP、INDEX等權(quán)限。對(duì)象的所有者默認(rèn)擁有所有對(duì)象權(quán)限,而新創(chuàng)建的用戶擁有極少的系統(tǒng)權(quán)限。本著最少權(quán)限原則,其他用戶想擁有他不具備的對(duì)象權(quán)限,新用戶想擁有更多的系統(tǒng)權(quán)限,只有對(duì)象所有者或者系統(tǒng)管理員通過GRANT授予其必要的權(quán)限。同樣,要撤消已經(jīng)授予的權(quán)限,可以使用REVOKE。對(duì)象所有者的權(quán)限(例如ALTER、DROP、COMMENT、INDEX、VACUUM、GRANT和REVOKE)是隱式的,無法授予或撤消。即只要擁有對(duì)象就可以執(zhí)行對(duì)象所有者的這些隱式權(quán)限。對(duì)象所有者可以撤消自己的普通權(quán)限,例如,使表對(duì)自己以及其他人只讀,系統(tǒng)管理員用戶除外。權(quán)限概述權(quán)限管理授權(quán)-GRANT將系統(tǒng)權(quán)限授權(quán)給角色或用戶系統(tǒng)權(quán)限又稱為用戶屬性,包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN、MONADMIN、OPRADMIN、POLADMIN和LOGIN。系統(tǒng)權(quán)限一般通過CREATE/ALTERROLE語法來指定。其中,SYSADMIN權(quán)限可以通過GRANT/REVOKEALLPRIVILEGE授予或撤銷。但系統(tǒng)權(quán)限無法通過ROLE和USER的權(quán)限被繼承,也無法授予PUBLIC。執(zhí)行如下命令將SYSADMIN權(quán)限授予給jim。ALTERUSERjimWITHSYSADMIN;權(quán)限管理授權(quán)-GRANT將數(shù)據(jù)庫對(duì)象權(quán)限授予給角色或用戶將數(shù)據(jù)庫對(duì)象(表和視圖、字段等)的相關(guān)權(quán)限授予特定角色或用戶;如果聲明了WITHGRANTOPTION,則被授權(quán)的用戶也可以將此權(quán)限賦予他人,否則就不能授權(quán)給他人。openGauss會(huì)將某些類型的對(duì)象上的權(quán)限授予PUBLIC。默認(rèn)情況下,以下這些對(duì)象的權(quán)限會(huì)授予PUBLIC:數(shù)據(jù)庫的CONNECT權(quán)限和CREATETEMPTABLE權(quán)限、函數(shù)的EXECUTE特權(quán)、語言和數(shù)據(jù)類型(包括域)的USAGE特權(quán)。對(duì)象的所有者默認(rèn)具有該對(duì)象上的所有權(quán)限,出于安全考慮所有者可以舍棄部分權(quán)限,但ALTER、DROP、COMMENT、INDEX、VACUUM以及對(duì)象的可再授予權(quán)限屬于所有者固有的權(quán)限,隱式擁有。omm用戶執(zhí)行如下命令將hr.department表的INSERT,SELECT權(quán)限授予給jim。GRANTINSERT,SELECTONhr.departmentTOjim;權(quán)限管理授權(quán)-GRANT將角色或用戶的權(quán)限授權(quán)給其他角色或用戶將一個(gè)角色或用戶的權(quán)限授予另一個(gè)或多個(gè)其他角色或用戶。在這種情況下,每個(gè)角色或用戶都可視為擁有一個(gè)或多個(gè)數(shù)據(jù)庫權(quán)限的集合。當(dāng)聲明了WITHADMINOPTION,被授權(quán)的用戶可以將該權(quán)限再次授予其他角色或用戶,以及撤銷所有由該角色或用戶繼承到的權(quán)限。當(dāng)授權(quán)的角色或用戶發(fā)生變更或被撤銷時(shí),所有繼承該角色或用戶權(quán)限的用戶擁有的權(quán)限都會(huì)隨之發(fā)生變更。數(shù)據(jù)庫系統(tǒng)管理員可以給任何角色或用戶授予/撤銷任何權(quán)限。擁有CREATEROLE權(quán)限的角色可以賦予或者撤銷任何非系統(tǒng)管理員角色的權(quán)限。omm用戶執(zhí)行如下命令將jim的權(quán)限授予給dev角色。GRANTjimTOdev;權(quán)限管理授權(quán)-GRANT將ANY權(quán)限授予給角色或用戶將ANY權(quán)限授予特定的角色和用戶,當(dāng)聲明了WITHADMINOPTION,被授權(quán)的用戶可以將該ANY權(quán)限再次授予其他角色/用戶,或從其他角色/用戶處回收該ANY權(quán)限。ANY權(quán)限可以通過角色被繼承,但不能賦予PUBLIC。初始用戶和三權(quán)分立關(guān)閉時(shí)的系統(tǒng)管理員用戶可以給任何角色/用戶授予或撤銷ANY權(quán)限。目前支持以下ANY權(quán)限:CREATEANYTABLE、ALTERANYTABLE、DROPANYTABLE、SELECTANYTABLE、INSERTANYTABLE、UPDATEANYTABLE、DELETEANYTABLE等。omm用戶執(zhí)行如下命令將jim的權(quán)限授予給dev角色。GRANTCREATEANYTABLETOjim;權(quán)限管理綜合案例首先刪除用戶joe、jim,怕之前的案例練習(xí)中已經(jīng)創(chuàng)建了此2個(gè)用戶。DROPUSERIFEXISTSjoeCASCADE;DROPUSERIFEXISTSjimCASCADE;重新創(chuàng)建用戶joe、jim。CREATEUSERjoePASSWORD'Joe@1235';CREATEUSERjimPASSWORD'Jim@1235';以jim身份登錄數(shù)據(jù)庫,創(chuàng)建測(cè)試表。gsql-dpostgres-r-Ujim-W'Jim@1235'創(chuàng)建1張測(cè)試表jim_test。CREATETABLEjim_test(codeINT);此表保存在jim默認(rèn)的jim模式下,通過查詢可以看到記錄數(shù)量為0,即空表。SELECT*FROMjim.jim_test;插入2條樣本數(shù)據(jù),此表目前妥妥的有2條記錄。INSERTINTOjim.jim_testVALUES(1);INSERTINTOjim.jim_testVALUES(2);權(quán)限管理綜合案例以joe身份登錄數(shù)據(jù)庫,試圖訪問測(cè)試表。gsql-dpostgres-r-Ujoe-W'Joe@1235'執(zhí)行SELECT語句查詢jim.jim_test表,此時(shí)會(huì)報(bào)ERROR:permissiondeniedforschemajim錯(cuò)誤信息,意思是joe沒有jim模式的使用權(quán)限。SELECT*FROMjim.jim_test;以jim身份登錄數(shù)據(jù)庫,給joe授權(quán)訪問jim模式。gsql-dpostgres-r-Ujim-W'Jim@1235'jim將自己同名的jim模式的USAGE權(quán)限授予給joe。GRANTUSAGEONSCHEMAjimTOjoe;以joe身份登錄數(shù)據(jù)庫,再次訪問測(cè)試表。gsql-dpostgres-r-Ujoe-W'Joe@1235'再次查詢jim.jim_test表,這次又ERROR:permissiondeniedforrelationjim_test錯(cuò)誤信息,表示joe沒有jim_test表的查詢權(quán)限。SELECT*FROMjim.jim_test;權(quán)限管理綜合案例以jim身份登錄數(shù)據(jù)庫,給joe授予測(cè)試表的訪問權(quán)限。gsql-dpostgres-r-Ujim-W'Joe@1235'jim將jim_test表的INSERT,SELECT授予給joe。GRANTINSERT,SELECTONjim.jim_testTOjoe;以joe身份登錄數(shù)據(jù)庫,第3次訪問測(cè)試表。gsql-dpostgres-r-Ujoe-W'Joe@1235'第3次查詢jim.jim_test,執(zhí)行成功,可以查詢到2條記錄。SELECT*FROMjim.jim_test;joe嘗試對(duì)測(cè)試表進(jìn)行插入操作,成功插入2條記錄。INSERTINTOjim.jim_testVALUES(3);INSERTINTOjim.jim_testVALUES(4);Joe試圖進(jìn)行刪除操作,結(jié)果報(bào)ERROR:permissiondeniedforrelationjim_test錯(cuò)誤信息,意思是joe沒有測(cè)試表的刪除權(quán)限,符合安全策略要求。DELETEjim.jim_testWHEREcode=3;Joe試圖在jim上創(chuàng)建1張自己的測(cè)試表,報(bào)ERROR:permissiondeniedforschemajim錯(cuò)誤,原因是joe沒有在jim模式下創(chuàng)建對(duì)象的權(quán)限。CREATETABLEjim.joe_test(codeINT);權(quán)限管理綜合案例以omm身份登錄數(shù)據(jù)庫,給joe授予CREATEANYTABLE權(quán)限,允許joe在jim模式下創(chuàng)建表。注意,只有初始用戶和系統(tǒng)管理員才可以授予ANY類權(quán)限。GRANTCREATEANYTABLETOjoe;以joe身份登錄數(shù)據(jù)庫,再次在jim模式下創(chuàng)建表,成功。CREATETABLEjim.joe_test(codeINT);權(quán)限管理回收-REVOKE回收指定表或視圖上權(quán)限REVOKE{{SELECT|INSERT|UPDATE|DELETE|TRUNCATE|REFERENCES|ALTER|DROP|COMMENT|INDEX|VACUUM}[,...]|ALL[PRIVILEGES]}ON{[TABLE]table_name[,...]|ALLTABLESINSCHEMAschema_name[,...]}FROM{[GROUP]role_name|PUBLIC}[,...][CASCADE|RESTRICT];回收指定表或視圖上權(quán)限REVOKE[GRANTOPTIONFOR]{{{SELECT|INSERT|UPDATE|REFERENCES|COMMENT}(column_name[,...])}[,...
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 黔南2025年貴州黔南州貴定縣事業(yè)單位引進(jìn)人才36人筆試歷年參考題庫附帶答案詳解
- 郴州2025年湖南郴州市臨武縣引進(jìn)急需緊缺醫(yī)療技術(shù)人才32人筆試歷年參考題庫附帶答案詳解
- 職業(yè)健康與員工健康公平性
- 聊城2025年山東聊城經(jīng)濟(jì)技術(shù)開發(fā)區(qū)招聘社區(qū)工作者50人筆試歷年參考題庫附帶答案詳解
- 玉林2025年廣西玉林市事業(yè)單位招聘應(yīng)征入伍普通高校畢業(yè)生20人筆試歷年參考題庫附帶答案詳解
- 2025 小學(xué)一年級(jí)道德與法治上冊(cè)習(xí)慣手工小制作課件
- 棗莊2025年山東棗莊滕州市招聘農(nóng)村黨建助理員30人筆試歷年參考題庫附帶答案詳解
- 承德2025年河北承德隆化縣招聘衛(wèi)健教育系統(tǒng)工作人員35人筆試歷年參考題庫附帶答案詳解
- 慶陽2025年甘肅慶陽文學(xué)院(《北斗》編輯部)選調(diào)筆試歷年參考題庫附帶答案詳解
- 山東山東大學(xué)未來技術(shù)學(xué)院非事業(yè)編制人員招聘2人(二)筆試歷年參考題庫附帶答案詳解
- 2025屆重慶物理高一第一學(xué)期期末統(tǒng)考試題含解析
- 四年級(jí)下冊(cè)語文作文范文1-8單元
- DLT 721-2013 配電網(wǎng)自動(dòng)化系統(tǒng)遠(yuǎn)方終端
- 體外循環(huán)心臟手術(shù)配合
- 鋼管運(yùn)輸方案
- 企業(yè)訴訟案件管理辦法
- 給醫(yī)生感謝信又短又好(5篇)
- 濕疹 (中醫(yī)院皮膚科)
- 實(shí)驗(yàn)室儀器設(shè)備驗(yàn)收單
- 關(guān)于若干歷史問題的決議(1945年)
- 畢業(yè)論文8000字【6篇】
評(píng)論
0/150
提交評(píng)論