IBM Cloud Docs
管理使用者、角色和權限

管理使用者、角色和權限

PostgreSQL 使用角色系統來管理資料庫許可權。 角色用來為單一使用者或一組使用者提供一組專用權。 使用 psql 指令 \du 來決定部署中的角色、群組及專用權。

當您在 IBM Cloud中佈建新部署時,系統會自動為您提供 admin 使用者,以存取及管理 PostgreSQL。

admin 使用者

當您在 IBM Cloud中佈建新部署時,系統會自動為您提供 admin 使用者,以存取及管理 PostgreSQL。 設定管理者密碼 之後,請使用它來連接至您的部署。

admin 在資料庫中建立資源 (例如表格) 時,admin 會擁有該物件。 其他使用者無法存取 admin 所建立的資源,除非您明確授與他們許可權。

admin 使用者與您新增至部署的任何其他使用者之間的最大差異是 pg_monitorpg_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 指令,則可能會注意到名為 ibmibm-cloud-base-useribm-replicationibm-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 中建立用戶

  1. 移至您服務的服務儀表板。
  2. 按一下 「服務憑證」 以開啟 「服務憑證」
  3. 按一下新認證
  4. 為您的新憑證選擇一個描述性的名稱。
  5. 可選指定新憑證應該使用公共端點還是私人端點。 在「新增內嵌設定參數」欄位中使用 { "service-endpoints": "public" } / { "service-endpoints": "private" },即可使用指定的端點產生連線字串。 不會強制使用端點,它只會控制連線字串中的主機名稱。 預設會產生私有端點。
  6. 按一下新增以提供新憑證。 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」填入連接字串中。

從現有使用者產生認證不會檢查或建立該使用者。