このページでは、パスワードベースの 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 認証を管理するをご確認ください。
コンソール
[クラスタ] ページに移動します。
ユーザーを追加するクラスタの名前をクリックします。
[ユーザー] をクリックします。
[ユーザー アカウントを追加] をクリックします。
[組み込み認証] は選択したままにします。
IAM を使用してデータベース クラスタを認証してログインする場合は、追加の手順を完了してプロジェクトを準備し、新しいユーザーに適切な権限を付与する必要があります。詳細については、IAM 認証を管理するをご覧ください。
新しいユーザーのユーザー名とパスワードを入力します。
デフォルトの
alloydbsuperuser
以外のロールをユーザーに割り当てるには、次の操作を行います。- [ロール] にロールの名前を入力します。
- ロールを追加するには、Enter キーまたは Tab キーを押します。
そのユーザーに対して削除するロールの [x] を選択します。
詳しくは、事前定義ロールをご覧ください。
[追加] をクリックします。
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 アカウントを使用して接続するをご覧ください。
コンソール
[クラスタ] ページに移動します。
該当のデータベース ユーザーを含むクラスタの名前をクリックします。
[ユーザー] をクリックします。
該当のユーザーの行で、
[このユーザーに対する操作を開きます] をクリックします。[パスワードの変更] を選択します。
パスワードを指定します。
このユーザーの新しいパスワードを設定するには、[パスワード] フィールドにパスワードを入力します。
このユーザーにパスワードを設定しない場合は、[パスワードなし] チェックボックスをオンにします。
[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
コマンドを実行します。
データベース ユーザーのリストを表示する
コンソール
[クラスタ] ページに移動します。
ユーザーを表示するクラスタの名前をクリックします。
[ユーザー] をクリックします。
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
データベース ユーザーを削除する
コンソール
[クラスタ] ページに移動します。
該当のデータベース ユーザーを含むクラスタの名前をクリックします。
[ユーザー] をクリックします。
該当のユーザーの行で、
[このユーザーに対する操作を開きます] をクリックします。[削除] を選択します。
[ユーザー アカウントを削除しますか?] ダイアログで、[削除] をクリックします。
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