RDS PostgreSQL用戶權(quán)限設(shè)置
更新時間:
本文介紹如何處理操作對象無權(quán)限的問題。
RDS PostgreSQL沒有開放超級用戶,這給很多上云的用戶帶來困難,RDS PostgreSQL這樣做有如下原因:
- PostgreSQL的superuser擁有幾乎全部的數(shù)據(jù)庫權(quán)限,甚至可以直接修改系統(tǒng)表,潛在風(fēng)險相當(dāng)大。
- RDS PostgreSQL使用superuser運維實例,例如管理流復(fù)制、備份等這些操作,用戶是不需要關(guān)心的,換句話說它應(yīng)該完全的交給云服務(wù)來處理。
- RDS PostgreSQL的普通用戶權(quán)限是能夠滿足應(yīng)用需求的,用戶可以管理自己在云上的數(shù)據(jù)。
基本原則
- 一個普通用戶只能在自己作為owner(所有者)的數(shù)據(jù)庫下創(chuàng)建schema。
- 數(shù)據(jù)庫下的對象有一個所屬的schema,普通用戶可以在public下創(chuàng)建對象(如table),在其他schema下創(chuàng)建對象需要是schema的owner或有特別的授權(quán)。
- 管理一個數(shù)據(jù)庫對象,需要是對象的owner(在用戶組權(quán)限之外)。
常見問題及解決方法
在多用戶環(huán)境下,RDS PostgreSQL用戶容易遇到無法使用普通用戶管理其他普通用戶創(chuàng)建的對象,出現(xiàn)操作對象無權(quán)限的問題。
通常可以用控制臺創(chuàng)建的高權(quán)限賬號創(chuàng)建管理員賬號,然后將子賬號的權(quán)限授予管理員賬號。使用這樣的用戶組可以做到使用一個管理員賬號管理所在組內(nèi)的所有其他普通用戶及其對象,既可以管理多個用戶的對象,又可以實現(xiàn)一定程度上的權(quán)限隔離,同時權(quán)限又不會過大,推薦在云上使用該方式管理自己的實例。
說明 管理員賬號默認(rèn)具有 INHERIT權(quán)限,INHERIT權(quán)限決定一個角色是否繼承它所在組的角色的權(quán)限。 一個帶有INHERIT屬性的角色可以自動使用已經(jīng)賦與它直接或間接所在組的任何權(quán)限。
文檔內(nèi)容是否對您有幫助?