IAM 認証を管理する

このページでは、Identity and Access Management(IAM)を介したデータベース認証を許可するように AlloyDB for PostgreSQL インスタンスを準備する方法について説明します。

IAM 認証は、すべての AlloyDB クラスタがサポートする標準の PostgreSQL ユーザーによるデータベース認証を補完します。クラスタで IAM 認証を有効にすると、IAM または PostgreSQL のユーザーロールを使用してそのクラスタで認証できます。

デフォルトでは、AlloyDB インスタンスで IAM 認証は有効になっていません。IAM 認証を有効にするには、次の操作を行います。

AlloyDB クラスタに IAM ユーザーを追加する必要がある場合は、いつでもこの手順を繰り返します。

IAM 認証を有効または無効にする

インスタンスで IAM 認証を有効にするには、そのインスタンスの alloydb.iam_authentication フラグon に設定します。

インスタンスで IAM 認証を無効にするには、alloydb.iam_authentication をデフォルト値の off に戻します。

AlloyDB インスタンスにフラグを設定する方法については、インスタンスのデータベース フラグを構成するをご覧ください。

IAM ユーザーまたはサービス アカウントにインスタンスへのアクセス権を付与する

新しいデータベース ユーザーへの IAM アクセスを有効にするには、次の 2 つの手順が必要です。

  1. プロジェクトの IAM 設定を更新して、AlloyDB データベースに適切な IAM ユーザーまたはサービス アカウントへのアクセス権を付与します。

  2. クラスタに新しいデータベース ユーザーを作成し、ユーザー名を IAM ユーザーまたはサービス アカウントのメールアドレスに設定します。

手順 2 を繰り返して、IAM アカウントにプロジェクト内の他のクラスタへのアクセス権を付与できます。

適切なロールを持つ IAM アカウントを更新する

IAM ユーザーまたはサービス アカウントに AlloyDB インスタンスで認証する権限を付与するには、次の IAM ロールを付与します。

  • alloydb.databaseUser: ユーザーが AlloyDB インスタンスに接続できるようにします。
  • serviceusage.serviceUsageConsumer: 権限を確認する API へのアクセス権をユーザーに提供します。

これを行うには、他のユーザーにアクセス権を付与するの手順に沿って操作します。IAM プリンシパルに付与するロールを選択する手順で、alloydb.databaseUser を選択します。

IAM ユーザーまたはサービス アカウントをクラスタに追加する

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

    [クラスタ] に移動

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

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

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

  5. [Cloud IAM] を選択します。

  6. [プリンシパル] フィールドに、IAM プリンシパルを入力します。

    IAM ユーザー アカウントの場合は、ユーザー アカウントの完全なメールアドレスを指定します。例: kai@altostrat.com

    IAM サービス アカウントの場合は、.gserviceaccount.com サフィックスを除いたサービス アカウントのアドレスを指定します。たとえば、サービス アカウント my-service@my-project.iam.gserviceaccount.com を指定するには、ここで値 my-service@my-project.iam を使用します。

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

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 ユーザーまたはサービス アカウントを削除する

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

    [クラスタ] に移動

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

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

  4. 削除するユーザーを表す行で、[ このユーザーのアクションを開く] をクリックします。

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

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

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

次のステップ