管理使用者、角色和權限
PostgreSQL 使用角色系統來管理資料庫許可權。 角色用來為單一使用者或一組使用者提供一組專用權。 使用 psql
指令 \du
來決定部署中的角色、群組及專用權。
當您在 IBM Cloud中佈建新部署時,系統會自動為您提供 admin
使用者,以存取及管理 PostgreSQL。
admin
使用者
當您在 IBM Cloud中佈建新部署時,系統會自動為您提供 admin
使用者,以存取及管理 PostgreSQL。 設定管理者密碼 之後,請使用它來連接至您的部署。
當 admin
在資料庫中建立資源 (例如表格) 時,admin
會擁有該物件。 其他使用者無法存取 admin
所建立的資源,除非您明確授與他們許可權。
admin
使用者與您新增至部署的任何其他使用者之間的最大差異是 pg_monitor
和 pg_signal_backend
角色。 pg_monitor
角色提供一組許可權,可讓管理使用者適合監視資料庫伺服器。 pg_signal_backend
角色可讓 admin 使用者傳送信號,以取消其他使用者所起始的查詢及連線。 它無法將信號傳送至超級使用者所擁有的處理程序。
您也可以使用 admin
使用者,將這兩個角色授與部署上的其他使用者。
若要向其他資料庫使用者公開取消查詢的能力,請從 admin
使用者授與 pg_signal_backend
角色。 使用類似下列的指令:
GRANT pg_signal_backend TO joe;
若要容許使用者 joe
取消後端,請使用如下指令將 pg_signal_backend
授與具有 ibm-cloud-base-user
角色的所有使用者:
GRANT pg_signal_backend TO "ibm-cloud-base-user";
此專用權可讓使用者終止與資料庫的任何連線。
若要設定特定的監視使用者 mary
,請使用如下指令:
GRANT pg_monitor TO mary;
使用如下指令,將 pg_signal_backend
授與具有 ibm-cloud-base-user
角色的所有使用者:
GRANT pg_monitor TO "ibm-cloud-base-user";
在 UI 中設定管理員密碼
從 IBM Cloud Dashboard 的資源清單中選擇您的實例,透過 UI 設定管理員密碼。 然後,選取 設定。 接下來,在*「更改資料庫管理員密碼」部分中輸入新密碼,然後按一下「更改密碼」*。
在 CLI 中設定管理員密碼
從 Cloud Databases CLI 外掛程式 使用 cdb user-password
指令來設定 admin
密碼。
例如,若要設定名為 example-deployment
之部署的管理者密碼,請使用下列指令:
ibmcloud cdb user-password example-deployment admin <NEW_PASSWORD>
在API中設定管理員密碼
顯示在您服務的總覽面板部署詳細資訊部分的基礎端點,提供透過 API 存取此部署的基礎 URL。 搭配使用它與 設定指定使用者的密碼 端點,以設定管理者密碼。
curl -X PATCH `https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/users/admin` \
-H `Authorization: Bearer <>` \
-H `Content-Type: application/json` \
-d `{"password":"newrootpasswordsupersecure21"}` \
_服務憑證_用戶
您 透過_服務_憑證面板建立的 使用者是 ibm-cloud-base-user
的成員。 他們能夠登入、建立使用者及建立資料庫。
當群組中的使用者在資料庫中建立資源 (例如表格) 時,相同群組中的所有使用者都具有該資源的存取權。 由 ibm-cloud-base-user
中的任何使用者所建立的資源可供 ibm-cloud-base-user
中的其他使用者 (包括管理使用者) 存取。
透過 CLI 建立的使用者
您透過 Cloud Databases CLI 外掛程式 建立的使用者也是 ibm-cloud-base-user
的成員。 他們能夠登入、建立使用者及建立資料庫。
當使用者在資料庫 (例如表格) 中建立資源時,相同群組中的所有使用者都具有該資源的存取權。 ibm-cloud-base-user
中的其他使用者 (包括 admin
使用者) 可以存取 ibm-cloud-base-user
中任何使用者所建立的資源。
直接從 API 和 CLI 建立的使用者不會出現在 _服務認證_中,但您可以選擇 新增它們。
透過 API 建立的使用者
您透過 Cloud Databases API 建立的使用者也是 ibm-cloud-base-user
的成員。 他們能夠登入、建立使用者及建立資料庫。
當使用者在資料庫 (例如表格) 中建立資源時,相同群組中的所有使用者都具有該資源的存取權。 由 ibm-cloud-base-user
中的任何使用者所建立的資源可供 ibm-cloud-base-user
中的其他使用者 (包括管理使用者) 存取。
直接從 API 和 CLI 建立的使用者不會出現在 _服務認證_中,但您可以選擇 新增它們。
唯讀使用者
ibm-cloud-base-user-ro
會管理建立用來存取唯讀抄本之使用者的專用權。 有關更多信息,請參閱 配置唯讀副本。
repl
使用者
repl
使用者具有「抄寫」專用權,並且在部署上啟用 wal2json
外掛程式 時使用。 啟用 wal2json
時,請設定 repl
使用者的密碼,讓 wal2json
外掛程式可以使用它。
其他 ibm
使用者
如果您使用 admin
帳戶執行 \du
指令,則可能會注意到名為 ibm
、ibm-cloud-base-user
、ibm-replication
及 ibm-rewind
的使用者。
ibm-cloud-base-user
用來作為範本,以管理其他使用者的群組角色。 它用來管理透過 CLI 及 API 建立的使用者,以及啟用與 IBM Cloud上的 服務認證 使用者建立的整合。 作為 ibm-cloud-base-user
成員的使用者會繼承建立角色,並從 ibm-cloud-base-user
建立資料庫屬性。 ibm-cloud-base-user
無法登入。
ibm
帳戶是部署上唯一的超級使用者。 我們無法使用您的超級使用者帳戶。 此使用者是內部管理帳戶,可管理部署的穩定性。
使用 psql
建立的使用者
您可以完全略過透過 IBM Cloud 建立使用者,並使用 psql
直接在 PostgreSQL 中建立使用者。 這允許您使用PostgreSQL's本機 角色和使用者管理。 在 psql
中建立的使用者/角色必須手動設定其所有專用權,以及他們所建立物件的專用權。
直接在PostgreSQL中建立的使用者不會出現在_服務憑證_中,但您可以選擇 新增它們。
請注意,這些使用者未與 IAM 控制項集成,即使新增至_服務憑證_也是如此。
其他用戶和連接字串
Databases for PostgreSQL 部署的存取權不限於 admin
使用者。 使用 Cloud Databases CLI 外掛程式 或 Cloud Databases API 在 UI 中的_服務憑證_中新增使用者。
部署上的所有使用者都可以使用連線字串,包括公用或專用端點的連線字串。
當您建立使用者時,它會獲指派特定的資料庫角色及專用權。 這些專用權包括登入、建立資料庫及建立其他使用者的能力。
在 UI 中建立用戶
- 移至您服務的服務儀表板。
- 按一下 「服務憑證」 以開啟 「服務憑證」。
- 按一下新認證。
- 為您的新憑證選擇一個描述性的名稱。
- 可選指定新憑證應該使用公共端點還是私人端點。 在「新增內嵌設定參數」欄位中使用
{ "service-endpoints": "public" }
/{ "service-endpoints": "private" }
,即可使用指定的端點產生連線字串。 不會強制使用端點,它只會控制連線字串中的主機名稱。 預設會產生私有端點。 - 按一下新增以提供新憑證。 PostgreSQL 資料庫會自動產生使用者名稱和密碼,以及相關的資料庫使用者。
新憑證將顯示在表中,並且連接字串會以 JSON 形式出現在_「檢視憑證」_下的點擊複製欄位中。
從 CLI 建立使用者
如果您透過 IBM Cloud CLI 及 雲端資料庫外掛程式 來管理服務,則可以使用 cdb user-create
來建立新的使用者。 例如,若要為 "example-deployment" 建立新的使用者,請使用下列指令:
ibmcloud cdb user-create example-deployment <NEW_USER_NAME> <NEW_PASSWORD>
作業完成之後,您可以使用 ibmcloud cdb deployment-connections
指令擷取新使用者的連線字串。
從 API 建立用戶
顯示在您服務的_概述_面板_部署詳細資訊_中的 Foundation 端點,提供透過 API 存取此部署的基本 URL。 若要建立和管理使用者,請使用 /users
端點的基本 URL。
curl -X POST 'https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/users' \
-H "Authorization: Bearer $APIKEY" \
-H "Content-Type: application/json" \
-d '{"username":"jane_smith", "password":"newsupersecurepassword"}'
作業完成之後,請從 /users/{userid}/connections
端點擷取新使用者的連線字串。
將使用者新增至_服務憑證_
從 CLI 或 API 建立新使用者不會自動將該使用者的連線字串填入_服務憑證_中。 若要新增它們,請使用現有使用者資訊建立新的認證。
在 JSON 欄位中輸入使用者名稱和密碼_新增內嵌設定參數_,或指定儲存 JSON 資訊的檔案。 例如,將 {"existing_credentials":{"username":"Robert","password":"supersecure"}}
放在欄位中會產生_服務憑證_,其中使用者名稱「Robert」和密碼「supersecure」填入連接字串中。
從現有使用者產生認證不會檢查或建立該使用者。