PGAdapter の概要

このページでは、PGAdapter の概要について説明します。PGAdapter を起動する方法については、PGAdapter の起動をご覧ください。

PGAdapter は、Spanner の PostgreSQL Interface をサポートするサイドカー プロキシです。これはアプリケーションと同じマシンで実行され、PostgreSQL ワイヤ プロトコルをサポートする localhost にエンドポイントを公開します。PostgreSQL ワイヤ プロトコルを Spanner ワイヤ プロトコル(gRPC)に変換します。このプロキシをローカルで実行すると、PostgreSQL クライアント(psql など)が PostgreSQL 言語の Spanner データベースに接続できます。

次の図は、psql が PGAdapter を介して Spanner に接続する方法を示しています。

psql は PGAdapter を介して Spanner に接続する

PGAdapter は、シンプルなクエリモードと拡張クエリモードをサポートし、Spanner の PostgreSQL Interface がサポートしているあらゆるデータ型をサポートします。

PGAdapter の実行環境

PGAdapter は、次のいずれかの方法で実行できます。

  • スタンドアロン。PGAdapter は JAR ファイルとして提供され、JVM でスタンドアロンで実行されます。
  • Docker。PGAdapter は Docker イメージとしてもパッケージ化されています。
  • Cloud Run。PGAdapter は、Cloud Run にサイドカー プロキシとしてデプロイできます。
  • サイドカー プロキシサイドカー プロキシとしての一般的な用途は、Kubernetes クラスタです。
  • プロセス。Java アプリケーション コードでは、この JAR ファイルを使用して PGAdapter インスタンスを作成し、起動できます。

これらのメソッドの詳細については、PGAdapter を起動するをご覧ください。

PGAdapter による承認

PGAdapter は、起動時に指定した認証情報を調べることで、接続に使用するサービス アカウントや他の Identity and Access Management(IAM)プリンシパルを決定します。そのプリンシパルに付与された IAM 権限により、接続しているアプリケーションがデータベースに対して持つ権限が決まります。

きめ細かなアクセス制御が使用されている場合、PGAdapter を起動するとき、必要に応じてデータベース ロールを指定できます。データベース ロールを指定すると、PGAdapter はクエリと DML ステートメントのリクエストを送信するときにきめ細かいアクセス制御を使用します。これには IAM 権限 spanner.databases.useRoleBasedAccess が必要で、public 以外のデータベース ロールの場合は spanner.databaseRoles.use 権限が必要です。データベース ロールに付与された権限により、接続しているアプリケーションが実行できるオペレーションが決まります。データベース ロールを指定しない場合は、IAM プリンシパルに付与されたデータベース レベルの権限が使用されます。DDL ステートメントを実行するには、プリンシパルに spanner.databases.updateDdl 権限が必要です。

詳細については、きめ細かいアクセス制御IAM を使用したアクセス制御をご覧ください。

次のステップ