IBM Cloud Docs
ユーザー、役割、および特権の管理

ユーザー、役割、および特権の管理

PostgreSQL は、役割のシステムを使用してデータベースの許可を管理します。 役割は、単一のユーザーまたはユーザーのグループに一連の特権を付与するために使用されます。 psql コマンド \du を使用して、デプロイメント全体のロール、グループ、および特権を決定します。

IBM Cloud で新しい配置をプロビジョニングする場合、 PostgreSQL にアク セスして管理するための admin ユーザーが自動的に割り当てられます。

admin ユーザー

IBM Cloud で新しい配置をプロビジョニングする場合、 PostgreSQL にアク セスして管理するための admin ユーザーが自動的に割り当てられます。 管理者パスワードを設定 したら、それを使用して配置に接続します。

admin 、テーブルのようなリソースをデータベース内に作成すると、 admin 、そのオブジェクトは。 admin 、作成されたリソースは、あなたが明示的に権限を与えない限り、他のユーザーがアクセスすることはできません。

admin ユーザーと、デプロイメントに追加するその他のユーザーとの最大の違いは pg_monitorpg_signal_backend ロールです。 pg_monitor 役割は、admin ユーザーがデータベース・サーバーをモニターできるようにする一連の許可を提供します。 pg_signal_backend 役割によって、admin ユーザーは、他のユーザーが開始した照会や接続を取り消すシグナルを送信できるようになります。 スーパーユーザーが所有するプロセスにシグナルを送信することはできません。

また、 admin ユーザを使用して、配置上の他のユーザにこれら 2 つのロールを付与することもできます。

クエリをキャンセルする機能を他のデータベースユーザに公開するには、 admin ユーザから pg_signal_backend ロールを付与します。 次のようなコマンドを使用します。

GRANT pg_signal_backend TO joe;

ユーザー joe がバックエンドを取り消すことができるようにするには、以下のようなコマンドを使用して、 ibm-cloud-base-user 役割を持つすべてのユーザーに pg_signal_backend を付与します。

GRANT pg_signal_backend TO "ibm-cloud-base-user";

この特権により、ユーザーはデータベースへのすべての接続を終了できます。

特定のモニター・ユーザー mary をセットアップするには、以下のようなコマンドを使用します。

GRANT pg_monitor TO mary;

以下のようなコマンドを使用して、 ibm-cloud-base-user 役割を持つすべてのユーザーに pg_signal_backend を付与します。

GRANT pg_monitor TO "ibm-cloud-base-user";

UIで管理者パスワードを設定する

IBM Cloud Dashboardのリソースリストからインスタンスを選択し、UIから管理者パスワードを設定します。 次に、 「設定」 を選択します。 次に、データベース管理者パスワードの変更セクションに新しいパスワードを入力し、パスワードの変更をクリックします。

CLIでadminパスワードを設定する

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 に属するいずれかのユーザーが作成したリソースには、admin ユーザーを含め、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 に属するいずれかのユーザーが作成したリソースには、admin ユーザーを含め、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 を介したユーザーの作成を完全にバイパスし、PostgreSQL で psql を使用してユーザーを直接作成できます。 これにより、PostgreSQL'sネイティブの 役割とユーザーの管理を使用することができます。 psql で作成されたユーザー/ロールは、作成したオブジェクトに対する権限と同様に、すべての権限を手動で設定する必要があります。

PostgreSQL 内で直接作成されたユーザーは、_サービス資格情報_には表示されませんが、必要に応じて追加することができます。

これらのユーザーは、_サービス資格情報_に追加された場合でも、IAM の制御と統合されないことに注意してください。

追加のユーザーおよび接続ストリング

Databases for PostgreSQL デプロイメントへのアクセスは、 admin ユーザに限定されません。 UIの_サービス資格情報_、Cloud Databases CLIプラグイン、または Cloud Databases API でユーザを追加します。

デプロイメント上のすべてのユーザーは、パブリック・エンドポイントまたはプライベート・エンドポイントの接続ストリングなどの接続ストリングを使用できます。

ユーザーを作成するときには、特定のデータベースの役割と特権をユーザーに割り当てます。 これらの特権には、ログイン、データベースの作成、他のユーザーの作成などの権限があります。

UIでユーザーを作成する

  1. ご使用のサービスのサービス・ダッシュボードに移動します。
  2. サービス資格情報をクリックして、サービス資格情報を開きます。
  3. **「新規資格情報」**をクリックします。
  4. 新規資格情報にわかりやすい名前を選びます。
  5. オプション新しいクレデンシャルがパブリックまたはプライベートのエンドポイントを使用するかどうかを指定する。 指定したエンドポイントを使用して接続文字列を生成するには、 インライン構成パラメーターの追加フィールドで { "service-endpoints": "public" } / { "service-endpoints": "private" } のいずれかを使用します。 エンドポイントの使用は適用されません。単に、どのホスト名が接続ストリング内に含まれるかを制御します。 プライベート・エンドポイントはデフォルトで生成される。
  6. **「追加」**をクリックして新規資格情報をプロビジョンします。 ユーザー名とパスワード、および PostgreSQL データベース内の関連データベース・ユーザーは自動生成されます。

新しい資格情報が表に表示されます。接続文字列は JSON として_「資格情報の表示」_のクリックしてコピーできるフィールドに表示されます。

CLIからユーザーを作成する

IBM Cloud CLI と Cloud Databases プラグインを使用してサービスを管理する場合は、cdb user-create を使用して新規ユーザーを作成できます。 例えば、"example-deployment "用の新規ユーザーを作成するには、以下のコマンドを使用する:

ibmcloud cdb user-create example-deployment <NEW_USER_NAME> <NEW_PASSWORD>

タスクが終了したら、ibmcloud cdb deployment-connections コマンドを使用して、新規ユーザーの接続ストリングを取得できます。

API を使用したユーザーの作成

サービスの_「概要」パネルの「デプロイメントの詳細」_に表示される_基本エンドポイント_は、API を介してこのデプロイメントにアクセスするための基本 URL を提供します。 ユーザーを作成および管理するには、その基本 URL に /users エンドポイントを付けて使用します。

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」が接続文字列に入力された_サービス資格情報_が生成されます。

既存のユーザーの資格情報を生成するときに、そのユーザーが存在するか検査されたり、そのユーザーが作成されたりすることはありません。