この方法は、すべての AlloyDB クラスタがサポートする標準の PostgreSQL ユーザーロールによるデータベース認証を補完します。クラスタで IAM ベースの認証を有効にすると、IAM または PostgreSQL のユーザーロールを使用してそのクラスタで認証できます。
デフォルトでは、AlloyDB インスタンスで IAM ベースの認証は有効になっていません。IAM ログインを有効にして、IAM ベースのデータベース ユーザーを個別に設定できます。
IAM ユーザーまたはサービス アカウントが接続する必要があるすべてのインスタンスで、IAM 認証を手動で有効にする必要があります。
データベース ユーザーとしてログインする必要がある IAM ユーザーまたはサービス アカウントごとに、次の手順を完了する必要があります。
IAM 管理者ツールを使用して、そのユーザーまたはサービス アカウントに
alloydb.databaseUser
ロールとserviceusage.serviceUsageConsumer
ロールを付与します。Google Cloud CLI を使用して、AlloyDB クラスタのユーザーまたはサービス アカウントに対応するデータベース ユーザーを作成します。
postgres
などのデータベース管理者アカウントを使用して、適切なデータベース テーブルに対する新しいデータベース ユーザーのアクセス権限を付与します。
後半の手順は、AlloyDB クラスタに IAM ユーザーを追加する必要がある場合はいつでも必要な回数だけ繰り返すことができます。
このページの残りの部分では、これらの手順について詳しく説明します。
IAM 認証を有効または無効にする
インスタンスで IAM 認証を有効にするには、そのインスタンスの alloydb.iam_authentication
フラグを on
に設定します。
インスタンスで IAM 認証を無効にするには、alloydb.iam_authentication
をデフォルト値の off
に戻します。
AlloyDB インスタンスにフラグを設定する方法については、インスタンスのデータベース フラグを構成するをご覧ください。
IAM ユーザーまたはサービス アカウントにインスタンスへのアクセス権を付与する
新しいデータベース ユーザーへの IAM 認証アクセスを有効にするには、次の 2 つの手順が必要です。
プロジェクトの IAM 設定を更新して、AlloyDB データベースに適切な IAM ユーザーまたはサービス アカウントへのアクセス権を付与します。
クラスタに新しいデータベース ユーザーを作成し、ユーザー名を IAM ユーザーまたはサービス アカウントのメールアドレスに設定します。
必要に応じて 2 番目の手順を繰り返して、IAM で定義されたアカウントにプロジェクト内の他のクラスタへのアクセス権を付与できます。
適切なロールを持つ IAM アカウントを更新する
IAM ユーザーまたはサービス アカウントに AlloyDB インスタンスで認証する権限を付与するには、次の IAM ロールを付与します。
alloydb.databaseUser
serviceusage.serviceUsageConsumer
これを行うには、他のユーザーにアクセス権を付与するの手順に沿って操作します。IAM プリンシパルに付与するロールを選択する手順で、alloydb.databaseUser
を選択します。
IAM ユーザーまたはサービス アカウントをクラスタに追加する
コンソール
[クラスタ] ページに移動します。
ユーザーを追加するクラスタの名前をクリックします。
[ユーザー] をクリックします。
[ユーザー アカウントを追加] をクリックします。
[Cloud IAM] を選択します。
[プリンシパル] フィールドに、IAM プリンシパルを入力します。
IAM ユーザー アカウントの場合は、ユーザー アカウントの完全なメールアドレスを指定します。例:
kai@altostrat.com
IAM サービス アカウントの場合は、
.gserviceaccount.com
サフィックスを除いたサービス アカウントのアドレスを指定します。たとえば、サービス アカウントmy-service@my-project.iam.gserviceaccount.com
を指定するには、ここで値my-service@my-project.iam
を使用します。[追加] をクリックします。
gcloud
IAM ユーザーまたはサービス アカウントに基づいて PostgreSQL データベース ユーザーを作成するには、gcloud alloydb users create
コマンドを使用します。
gcloud alloydb users create USERNAME \
--cluster=CLUSTER \
--region=REGION \
--type=IAM_BASED
次のように置き換えます。
USERNAME
: 新しいデータベース ユーザーとして追加する IAM ユーザーの ID。IAM ユーザー アカウントの場合は、ユーザー アカウントの完全なメールアドレスを指定します。例:
kai@altostrat.com
IAM サービス アカウントの場合は、
.gserviceaccount.com
サフィックスを除いたサービス アカウントのアドレスを指定します。たとえば、サービス アカウントmy-service@my-project.iam.gserviceaccount.com
を指定するには、ここで値my-service@my-project.iam
を使用します。CLUSTER
: このデータベース ユーザー アカウントを作成するクラスタの ID。REGION
: クラスタが存在するリージョンの ID。例:us-central1
IAM ユーザーに適切なデータベース権限を付与する
デフォルトでは、IAM ユーザーがデータベース インスタンスに追加されると、その新しいユーザーにはデータベースに対する権限が付与されません。
ユーザーまたはサービス アカウントがデータベースに接続すると、PUBLIC にアクセス権がある任意のデータベース オブジェクトに対してクエリを実行できます。
追加のアクセス権が必要な場合は、GRANT
PostgreSQL ステートメントを使用して、より多くの権限を付与できます。
GRANT SELECT ON TABLE_NAME TO "USERNAME";
次のように置き換えます。
USERNAME
: ユーザーのメールアドレス。住所は二重引用符で囲む必要があります。TABLE_NAME
: ユーザーにアクセス権を付与するテーブルの名前。
クラスタから IAM ユーザーまたはサービス アカウントを削除する
コンソール
[クラスタ] ページに移動します。
ユーザーを削除するクラスタの名前をクリックします。
[ユーザー] をクリックします。
削除するユーザーの行で、
[このユーザーの操作を開く] をクリックします。[削除] を選択します。
[ユーザー アカウントを削除しますか?] ダイアログで、[削除] をクリックします。
gcloud
gcloud alloydb users delete
コマンドを使用します。
gcloud alloydb users delete USERNAME \
--cluster=CLUSTER \
--region=REGION
次のように置き換えます。
USERNAME
: クラスタから削除する IAM ユーザーの ID。IAM ユーザー アカウントの場合は、ユーザー アカウントの完全なメールアドレスを指定します。例:
kai@altostrat.com
IAM サービス アカウントの場合は、
.gserviceaccount.com
サフィックスを除いたサービス アカウントのアドレスを指定します。たとえば、サービス アカウントmy-service@my-project.iam.gserviceaccount.com
を指定するには、ここで値my-service@my-project.iam
を使用します。CLUSTER
: このユーザーを削除するクラスタの ID。REGION
: クラスタが存在するリージョンの ID。例:us-central1