標準認証で 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 認証を管理するをご確認ください。

コンソール

  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 引数を指定します。詳細は次のセクションをご確認ください。

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

コンソール

データベース ユーザーにロールを付与するには、 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 users list --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 アカウントを使用して接続するをご覧ください。

コンソール

  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

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

コンソール

ユーザーからロールを取り消すには、 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 users list --cluster=CLUSTER_ID --region=REGION_ID
  • CLUSTER_ID: 該当のユーザーを含むクラスタの ID。

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

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

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

コンソール

  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

データベース ユーザーを削除する

コンソール

  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

次のステップ