PGAdapter の概要

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

PGAdapter はサイドカー プロキシです。これは、メインのアプリケーションとともに実行され、Spanner の PostgreSQL Interface と Spanner 間の通信をサポートする小さなアプリケーションです。Java アプリケーションの場合は、PGAdapter を別のプロセスで実行しなくても、アプリケーションに直接リンクできます。PGAdapter は、アプリケーションと同じマシンで実行するように設計されており、PostgreSQL ワイヤ プロトコルをサポートするローカルホストのエンドポイントを公開します。PostgreSQL ワイヤ プロトコルを Spanner ワイヤ プロトコル(gRPC)に変換します。このプロキシをローカルで実行すると、PostgreSQL クライアント(psql など)が PostgreSQL 言語の Spanner データベースに接続できます。

PGAdapter は最大で 0.2 ミリ秒のレイテンシ オーバーヘッドを追加します。PostgreSQL Interface のレイテンシ レベルは GoogleSQL と同じです。

次の図は、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 によるアクセス制御をご覧ください。

次のステップ