標準認証で PostgreSQL ユーザーを管理する

このページでは、パスワードベースの PostgreSQL 標準認証方法を使用して、PostgreSQL と AlloyDB for PostgreSQL の両方のロール、ユーザー、グループを作成、管理、削除する方法について説明します。

AlloyDB で PostgreSQL ユーザーを作成する

PostgreSQL ユーザーを作成すると、最初は LOGIN 権限のみが付与されます。これらの権限の詳細については、CREATE USER をご覧ください。

任意のユーザーの権限は、ALTER ROLE コマンドを使用して変更できます。psql クライアントで新しいユーザーを作成する場合は、別のロールに関連付けるか、別の権限を付与します。

ユーザーの管理

AlloyDB ユーザーの作成と管理は、Google Cloud CLI または PostgreSQL コマンドを使用して行えます。以降のセクションでは、どちらの方法でも実行できる一般的なユーザー管理タスクについて説明します。

始める前に

PostgreSQL コマンドを使用してクラスタ上のユーザーを管理するには、次のものが必要です。

  • psql クライアントへのアクセス
  • postgres データベース ユーザー、または適切な管理権限を持つ別のユーザーロールへのアクセス

Google Cloud コンソールまたは Google Cloud CLI を使用してクラスタ上のユーザーを管理するには、そのクラスタにプライマリ インスタンスが必要です。クラスタにプライマリ インスタンスがない場合は、ユーザーを管理する前に作成する必要があります。

データベース ユーザーを作成する

ユーザー名とパスワードを使用してデータベースで直接認証を行うデータベース ユーザー(組み込み認証)を作成するには、このセクションの手順に沿って操作します。

代わりに、Identity and Access Management(IAM)を使用して認証するデータベース ユーザーを作成するには、IAM 認証を管理するをご覧ください。

Console

  1. [クラスタ] ページに移動します。

    [クラスタ] に移動

  2. ユーザーを追加するクラスタの名前をクリックします。

  3. [ユーザー] をクリックします。

  4. [ユーザー アカウントを追加] をクリックします。

  5. [組み込み認証] は選択したままにします。

    IAM を使用してデータベース クラスタを認証してログインする場合は、追加の手順を完了してプロジェクトを準備し、新しいユーザーに適切な権限を付与する必要があります。詳細については、IAM 認証を管理するをご覧ください。

  6. 新しいユーザーのユーザー名とパスワードを入力します。

  7. [追加] をクリックします。

psql

CREATE USER USERNAME WITH PASSWORD PASSWORD;

データベース ユーザーの作成と定義方法の詳細については、CREATE USER をご覧ください。

ユーザーを作成したら、psql クライアントで ALTER ROLE コマンドを使用して権限を変更できます。

gcloud

gcloud alloydb users create コマンドを使用します。

gcloud alloydb users create USERNAME \
--password=PASSWORD \
--cluster=CLUSTER_ID \
--region=REGION_ID

次の変数を置き換えます。

  • USERNAME: ユーザーのユーザー名。USERNAME は、SQL 識別子のルールに従う必要があります。特殊文字を使用しないか、二重引用符で囲みます。例: db_user_1

  • PASSWORD: ユーザーのパスワード。パスワードなしでユーザーを作成するには、この引数を省略します。

  • CLUSTER_ID: ユーザーを追加するクラスタの ID。

  • REGION_ID: クラスタが存在するリージョンの ID。例: us-central1

ユーザーを作成したら、gcloud alloydb users set-roles コマンドを使用して権限を変更できます。

また、ユーザーの作成時にロールまたはスーパーユーザー権限を付与することもできます。これを行うには、次のセクションで説明するように、--db-roles または --superuser 引数を含めます。

データベース ユーザーにロールを付与する

Console

データベース ユーザーにロールを付与するには、Google Cloud コンソールではなく、psql または gcloud CLI を使用します。

psql

GRANT ROLE to USERNAME;

次の変数を置き換えます。

  • USERNAME: ユーザーのユーザー名。
  • ROLE: ユーザーに付与するロール。たとえば、ユーザーにスーパーユーザー権限を付与するには、alloydbsuperuser を付与します。

gcloud

gcloud alloydb users set-roles コマンドを使用して、ユーザーに付与するすべてのロールを指定します。

gcloud alloydb users set-roles USERNAME \
--db-roles=ROLES \
--cluster=CLUSTER_ID \
--region=REGION_ID

次の変数を置き換えます。

  • USERNAME: ユーザーのユーザー名。

  • ROLES: ユーザーに付与するすべてのロールのカンマ区切りのリスト。既存のロールと新しいロールを含むすべてのロールを一覧表示してください。

    ユーザーに割り当てられている既存のロールのリストを取得するには、次のコマンドを実行します。

    gcloud alloydb list users --cluster=CLUSTER_ID --region=REGION_ID

    次の変数を置き換えます。

    • CLUSTER_ID: ユーザーを含むクラスタの ID。

    • REGION_ID: クラスタが存在するリージョンの ID。例: us-central1

    ユーザーにスーパーユーザー権限を付与するには、psql を使用してそのユーザーに alloydbsuperuser ロールを手動で付与するか、--superuser=true 引数を指定して gcloud alloydb users set-superuser コマンドを実行します。

    gcloud alloydb users set-superuser USERNAME \
    --superuser=true \
    --cluster=CLUSTER_ID \
    --region=REGION_ID

    次の変数を置き換えます。

    • CLUSTER_ID: ユーザーを含むクラスタの ID。

    • REGION_ID: クラスタが存在するリージョンの ID。例: us-central1

データベース ユーザーのパスワードを変更する

標準の PostgreSQL データベース ユーザーに新しいパスワードを設定するには、このセクションの手順を行います。

IAM ユーザーはパスワードを使用して認証しないため、IAM ベースのユーザーのパスワードを変更または設定することはできません。詳細については、IAM アカウントを使用して接続するをご覧ください。

Console

  1. [クラスタ] ページに移動します。

    [クラスタ] に移動

  2. データベース ユーザーを含むクラスタの名前をクリックします。

  3. [ユーザー] をクリックします。

  4. ユーザーを表す行で、 [このユーザーに対する操作を開きます] をクリックします。

  5. [パスワードの変更] を選択します。

  6. パスワードを指定します。

    • このユーザーの新しいパスワードを設定するには、[パスワード] フィールドにパスワードを入力します。

    • このユーザーにパスワードを設定しない場合は、[パスワードなし] チェックボックスをオンにします。

  7. [OK] をクリックします。

psql

ALTER USER USERNAME WITH PASSWORD PASSWORD;

ユーザーのパスワードの変更の詳細については、ALTER ROLE をご覧ください。

gcloud

gcloud alloydb users set-password コマンドを次のように使用します。

gcloud alloydb users set-password USERNAME \
--password=PASSWORD \
--cluster=CLUSTER_ID \
--region=REGION_ID

次の変数を置き換えます。

  • USERNAME: ユーザーのユーザー名。

  • PASSWORD: ユーザーに割り当てる新しいパスワード。

  • CLUSTER_ID: ユーザーが属するクラスタの ID。

  • REGION_ID: クラスタが存在するリージョンの ID。例: us-central1

データベース ユーザーからロールを取り消す

Console

ユーザーからロールを取り消すには、Google Cloud コンソールではなく、psql または gcloud CLI を使用します。

psql

1 つ以上のロールから以前に付与された権限を取り消したり、ユーザーのロールのメンバーシップを取り消したりできます。

REVOKE ROLE FROM USERNAME;

ユーザーのスーパーユーザー権限を削除するには、そのユーザーから alloydbsuperuser ロールを取り消します。

gcloud

Google Cloud CLI でロールを取り消すには、gcloud alloydb users set-roles コマンドを使用して、ユーザーに付与するすべてのロールを指定し、ユーザーから取り消すロールを省略します。

gcloud alloydb users set-roles USERNAME \
--db-roles=ROLES \
--cluster=CLUSTER_ID \
--region=REGION_ID

次の変数を置き換えます。

  • USERNAME: ユーザーのユーザー名。

  • ROLES: ユーザーに付与するすべてのロールのカンマ区切りのリスト。既存のロールと新しいロールを含むすべてのロールを一覧表示してください。

    ユーザーに割り当てられている既存のロールのリストを取得するには、次のコマンドを実行します。

    gcloud alloydb list users --cluster=CLUSTER_ID --region=REGION_ID
  • CLUSTER_ID: ユーザーを含むクラスタの ID。

  • REGION_ID: クラスタが存在するリージョンの ID。例: us-central1

スーパーユーザー権限を取り消すには、psql を使用してユーザーの alloydbsuperuser ロールを手動で削除するか、--superuser=false 引数を指定して gcloud alloydb users set-superuser コマンドを実行します。

データベース ユーザーのリストを表示する

Console

  1. [クラスタ] ページに移動します。

    [クラスタ] に移動

  2. ユーザーを表示するクラスタの名前をクリックします。

  3. [ユーザー] をクリックします。

psql

\du コマンドは、グループ メンバーシップを含むすべてのデータベース ユーザーのテーブルを出力します。

\du

gcloud

gcloud alloydb users list コマンドを使用します。

gcloud alloydb users list \
--cluster=CLUSTER_ID \
--region=REGION_ID

次のように置き換えます。

  • CLUSTER_ID: ユーザーを含むクラスタの ID。

  • REGION_ID: クラスタが存在するリージョンの ID。例: us-central1

データベース ユーザーの削除

Console

  1. [クラスタ] ページに移動します。

    [クラスタ] に移動

  2. ユーザーを含むクラスタの名前をクリックします。

  3. [ユーザー] をクリックします。

  4. ユーザーを表す行で、 [このユーザーに対する操作を開きます] をクリックします。

  5. [削除] を選択します。

  6. [ユーザー アカウントを削除しますか?] ダイアログで、[削除] をクリックします。

psql

ユーザーを削除する前に、そのユーザーが所有するすべてのオブジェクトを削除するか、ユーザーの所有権の割り当てを変更して、他のオブジェクトにユーザーが付与されている権限をすべて取り消す必要があります。

DROP ROLE USERNAME;

gcloud

gcloud alloydb users delete コマンドを使用します。

gcloud alloydb users delete USERNAME \
--cluster=CLUSTER_ID \
--region=REGION_ID

次のように置き換えます。

  • USERNAME: ユーザーのユーザー名。

  • CLUSTER_ID: ユーザーが属するクラスタの ID。

  • REGION_ID: クラスタが存在するリージョンの ID。例: us-central1

次のステップ