このページでは、AlloyDB for PostgreSQL が PostgreSQL ユーザーロールをどのように処理するかについて説明します。
AlloyDB のユーザーロールについて
AlloyDB データベースは、ロールの標準 PostgreSQL コンセプトを使用します。ロールは、データベース ユーザー、ユーザーのグループ、またはその両方として機能できます。
ユーザーロールには、ユーザーがシステムにログインできるようにする LOGIN
権限があります。グループロールには、さまざまな権限を持つメンバーロールがあり、すべてのメンバーに一度に付与または取り消すことができます。
AlloyDB の事前定義された PostgreSQL ロール
PostgreSQL には、さまざまな権限を持つ一連の事前定義ロールがあります。AlloyDB では、この PostgreSQL の事前定義ロールのセットに複数のユーザーロールとグループロールが追加されます。
次の表に、AlloyDB で事前定義されている PostgreSQL ロールを示します。
ロール名 | 権限 |
---|---|
alloydbsuperuser |
CREATEROLE 、CREATEDB 、LOGIN 。 |
postgres |
CREATEROLE 、CREATEDB 、LOGIN 。 |
alloydbimportexport |
CREATEROLE と CREATEDB 。 |
alloydbagent |
CREATEROLE と CREATEDB 。 |
alloydbreplica |
REPLICATION |
alloydbiamuser |
デフォルトでは、このロールには権限がありません。 |
以降のセクションでは、AlloyDB 固有の最も一般的なロールについて説明します。
alloydbsuperuser
グループロール
alloydbsuperuser
ロールは、データベース システムの初期設定と他のスーパーユーザー タスクの実行を行うための事前定義ロールです。このロールには次の権限があります。
- スーパーユーザー権限が必要な拡張機能を作成する
- イベント トリガーを作成する
- レプリケーション ユーザーを作成する
- レプリケーション パブリケーションとサブスクリプションを作成する
AlloyDB はマネージド サービスであるため、ユーザーに PostgreSQL superuser
ロールを付与することはできません。代わりに、alloydbsuperuser
ロールを付与することで、任意のデータベース ユーザーロールに AlloyDB スーパーユーザー権限を付与できます。
postgres
ユーザーロール
postgres
ユーザーは alloydbsuperuser
ロールの一部です。AlloyDB クラスタを作成するときに、postgres
ユーザーロールにパスワードを割り当てます。次に、postgres
ユーザーロールを使用してシステムにログインし、データベースや追加のロールなどを作成します。
alloydbimportexport
ユーザーロール
AlloyDB クラスタを作成すると、インポート / エクスポート オペレーションに必要な最小限の権限を持つデフォルト ユーザー alloydbimportexport
が作成されます。
これらのオペレーションを実行する独自のユーザーを作成することもできます。カスタム alloydbimportexport
ユーザーを作成しない場合は、インポート オペレーションとエクスポート オペレーションにデフォルトの alloydbimportexport
ユーザーが使用されます。
alloydbimportexport
ユーザーはシステム ユーザーです。alloydbimportexport
ユーザーを直接使用して PostgreSQL データベースにログインしたり、他のオペレーションを実行したりすることはできません。
alloydbiamuser
グループロール
alloydbiamuser
グループロール内のデータベース ユーザーは、標準の PostgreSQL パスワードベースの認証ではなく、Identity and Access Management を使用して AlloyDB インスタンスで認証します。
AlloyDB では、GRANT
PostgreSQL コマンドや同様の方法を使用して、このロールをユーザーに付与することはできません。代わりに、AlloyDB 管理ツールを使用して、Identity and Access Management ベースのデータベース ユーザーを作成、管理できます。詳細については、IAM 認証を管理するをご覧ください。
AlloyDB で他の PostgreSQL ユーザーを作成する
他の PostgreSQL ユーザーまたはロールを作成できます。これらのユーザーには、postgres
ユーザーと同じ特権セット(CREATE ROLE
、CREATEDB
、LOGIN
)が付与されます。これらの権限の詳細については、CREATE ROLE
をご覧ください。
任意のユーザーの権限は、ALTER ROLE
コマンドを使用して変更できます。psql
クライアントで新しいユーザーを作成する場合は、別のロールに関連付けるか、別の権限を割り当てることができます。
ユーザーの管理
AlloyDB ユーザーロールの作成と管理は、Google Cloud CLI または PostgreSQL コマンドを使用して行えます。以降のセクションでは、どちらの方法でも実行できる一般的なユーザー管理タスクについて説明します。
始める前に
PostgreSQL コマンドを使用してクラスタ上のユーザーを管理するには、次のものが必要です。
psql
クライアントへのアクセスpostgres
データベース ユーザーまたは適切な管理者権限を持つ別のユーザーロールへのアクセス
Google Cloud コンソールまたは Google Cloud CLI を使用してクラスタ上のユーザーを管理するには、そのクラスタにプライマリ インスタンスが必要です。クラスタにプライマリ インスタンスがない場合は、ユーザーを管理する前にプライマリ インスタンスを作成する必要があります。
データベース ユーザーを作成する
ユーザー名とパスワードを使用してデータベースで直接認証を行うデータベース ユーザー(組み込み認証)を作成するには、このセクションの手順に沿って操作します。
代わりに、Identity and Access Management を使用して認証を行うデータベース ユーザーを作成するには、IAM 認証を管理するをご覧ください。
[クラスタ] ページに移動します。
ユーザーを追加するクラスタの名前をクリックします。
[ユーザー] をクリックします。
[ユーザー アカウントを追加] をクリックします。
[組み込み認証] は選択したままにします。
代わりに [Cloud IAM] を選択して、IAM を使用して認証するデータベース ユーザーを作成できます。この選択では、プロジェクトを準備して新しいデータベース ユーザーに適切な権限を付与するための追加の手順が必要です。詳細については、IAM 認証を管理するをご覧ください。
新しいユーザーのユーザー名とパスワードを入力します。
[追加] をクリックします。
CREATE USER USERNAME WITH PASSWORD 'PASSWORD ';
データベース ユーザーの作成と定義方法の詳細については、CREATE
USER
をご覧ください。
ユーザーロールを作成したら、psql
クライアントの ALTER
ROLE
コマンドを使用して権限を変更できます。
gcloud alloydb users create
コマンドを使用します。
gcloud alloydb users create USERNAME \
--password=PASSWORD \
--cluster=CLUSTER_ID \
--region=REGION_ID
次のように置き換えます。
USERNAME
: 新しいユーザーロールのユーザー名。PASSWORD
: 新しいユーザーロールのパスワード。パスワードなしでユーザーを作成するには、この引数を省略します。CLUSTER_ID
: 新しいユーザーロールを追加するクラスタの ID。REGION_ID
: クラスタが配置されているリージョンの ID(例:us-central1
)。
ユーザーロールを作成したら、gcloud alloydb users set-roles
コマンドを使用して権限を変更できます。
ユーザーの作成時に、ロールまたはスーパーユーザー権限を付与することもできます。これを行うには、次のセクションで説明するように、--db-roles
または --superuser
引数を含めます。
データベース ユーザーにロールを付与する
データベース ユーザーにロールを付与するには、Google Cloud コンソールではなく、psql
または gcloud CLI を使用します。
GRANT ROLE to USERNAME ;
ユーザーにスーパーユーザー権限を付与するには、そのユーザーに alloydbsuperuser
ロールを付与します。
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
)。
ユーザーにスーパーユーザー権限を付与するには、前述のコマンドを使用してそのユーザーに alloydbsuperuser
ロールを手動で付与するか、--superuser=true
引数を指定して gcloud alloydb users set-superuser
コマンドを実行します。
gcloud alloydb users set-superuser USERNAME \
--superuser=true \
--cluster=CLUSTER_ID \
--region=REGION_ID
データベース ユーザーのパスワードを変更する
標準の PostgreSQL データベース ユーザーに新しいパスワードを設定するには、このセクションの手順を行います。
IAM ベースのユーザーはパスワードを使用して認証しないため、IAM ベースのユーザーのパスワードを変更または設定することはできません。詳細については、IAM アカウントを使用して接続するをご覧ください。
[クラスタ] ページに移動します。
パスワードを変更するデータベース ユーザーを含むクラスタの名前をクリックします。
[ユーザー] をクリックします。
パスワードを変更するユーザーの行で、
[このユーザーのアクションを開く] をクリックします。[パスワードの変更] を選択します。
パスワードを指定します。
このユーザーの新しいパスワードを設定するには、[パスワード] フィールドにパスワードを入力します。
このユーザーにパスワードを設定しない場合は、[パスワードなし] チェックボックスをオンにします。
[OK] をクリックします。
ALTER USER USERNAME WITH PASSWORD 'PASSWORD ';
ユーザーのパスワードの変更の詳細については、ALTER ROLE
をご覧ください。
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 を使用します。
1 つ以上のロールから以前に付与された権限を取り消したり、ロールに対するユーザーのメンバーシップを取り消したりできます。
REVOKE ROLE FROM USERNAME ;
ユーザーのスーパーユーザー権限を削除するには、そのユーザーから alloydbsuperuser
ロールを取り消します。
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
)。
スーパーユーザー権限を取り消すには、前述のコマンドを使用してユーザーの alloydbsuperuser
ロールを手動で削除するか、--superuser=false
引数を指定して gcloud alloydb users set-superuser
コマンドを実行します。
データベース ユーザーのリストを表示する
[クラスタ] ページに移動します。
ユーザーを表示するクラスタの名前をクリックします。
[ユーザー] をクリックします。
\du
コマンドは、グループ メンバーシップを含むすべてのデータベース ユーザーのテーブルを出力します。
\du
gcloud alloydb users list
コマンドを使用します。
gcloud alloydb users list \
--cluster=CLUSTER_ID \
--region=REGION_ID
次のように置き換えます。
CLUSTER_ID
: ユーザーを一覧表示するクラスタの ID。REGION_ID
: クラスタが配置されているリージョンの ID(例:us-central1
)。
データベース ユーザーの削除
[クラスタ] ページに移動します。
ユーザーを削除するクラスタの名前をクリックします。
[ユーザー] をクリックします。
削除するユーザーの行で、
[このユーザーの操作を開く] をクリックします。[削除] を選択します。
[ユーザー アカウントを削除しますか?] ダイアログで、[削除] をクリックします。
ユーザーを削除する前に、そのユーザーが所有するすべてのオブジェクトを削除するか、ユーザーの所有権の割り当てを変更して、他のオブジェクトにロールが付与されている権限をすべて取り消す必要があります。
DROP ROLE USERNAME ;
gcloud alloydb users delete
コマンドを使用します。
gcloud alloydb users delete USERNAME \
--cluster=CLUSTER_ID \
--region=REGION_ID
次のように置き換えます。
USERNAME
: 削除するユーザーロール。CLUSTER_ID
: ユーザーロールを削除するクラスタの ID。REGION_ID
: クラスタが配置されているリージョンの ID(例:us-central1
)。