このページでは、AlloyDB Auth Proxy を設定して使用し、AlloyDB インスタンスへの承認済みの暗号化された接続を確立する方法について説明します。Auth Proxy のコンセプトの概要については、AlloyDB Auth Proxy についてをご覧ください。
AlloyDB Auth Proxy を使用するには、いくつかの 1 回限りの設定手順を実行し、Auth Proxy クライアントを起動して、そのクライアントを使用してデータベースに接続します。
- 設定手順:
- クライアント ホストに Auth Proxy クライアントをダウンロードします。
- 認可に使用する Identity and Access Management(IAM)プリンシパルを選択し、必要な権限があることを確認し、クライアントホストで認証情報を使用できるようにします。
- 接続する AlloyDB インスタンスの接続 URI を収集します。
- クライアント ホストで Auth Proxy クライアントを起動します。
- Auth Proxy クライアントへのローカル接続を開いて、アプリケーションをデータベースに接続します。
始める前に
-
クライアント ホストは次の要件を満たしている必要があります。
接続するインスタンスが存在する Virtual Private Cloud(VPC)ネットワークへのネットワーク アクセス権が必要です。この Virtual Private Cloud(VPC)ネットワーク内のクライアント ホスト(Compute Engine インスタンスなど)には、本質的にこの可視性があります。外部ネットワーク(オンプレミス ネットワークまたは別の VPC ネットワーク)のクライアント ホストには、AlloyDB インスタンスの VPC ネットワークが Cloud VPN トンネルまたは Dedicated Interconnect または Partner Interconnect の VLAN アタッチメントを使用して外部ネットワークに接続されている場合、この可視性があります。
クライアント ホストに送信ファイアウォール ポリシーがある場合は、AlloyDB インスタンスの IP アドレスのポート
5433
への送信接続を許可し、すべての IP アドレスへのポート443
(標準 HTTPS ポート)への送信接続を許可する必要があります。Compute Engine インスタンスをクライアント ホストとして使用している場合は、AlloyDB Admin API を使用できるように
https://www.googleapis.com/auth/cloud-platform
アクセス スコープが必要です。必要に応じて、このスコープを含めるようにアクセス スコープを変更します。
Auth Proxy クライアントをダウンロードする
Auth Proxy クライアントをダウンロードするマシンは、VPC ネットワーク内から AlloyDB インスタンスに接続するか、外部から接続するかによって異なります。
プライベート サービス アクセスを使用してクラスタに接続する場合は、クラスタへのプライベート サービス アクセス権を持つ VPC ネットワーク内で実行されている Compute Engine 仮想マシン(VM)インスタンスに Auth Proxy クライアントをダウンロードできます。
VPC の外部からクラスタに接続する場合、クラスタをインストールするマシンは、使用する外部接続戦略によって異なります。たとえば、アプリケーションにローカルな macOS マシンまたは Windows マシンに Auth Proxy クライアントをインストールし、AlloyDB VPC ネットワーク内で実行されている SOCKS サーバーを接続中継として使用できます。詳細については、VPC の外部からクラスタに接続するをご覧ください。
Linux
64 ビット(AMD)
Auth Proxy クライアントをダウンロードします。
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.12.1/alloydb-auth-proxy.linux.amd64 -O alloydb-auth-proxy
Auth Proxy クライアントを実行可能にします。
chmod +x alloydb-auth-proxy
32 ビット(AMD)
Auth Proxy クライアントをダウンロードします。
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.12.1/alloydb-auth-proxy.linux.386 -O alloydb-auth-proxy
Auth Proxy クライアントを実行可能にします。
chmod +x alloydb-auth-proxy
64 ビット(ARM)
Auth Proxy クライアントをダウンロードします。
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.12.1/alloydb-auth-proxy.linux.arm64 -O alloydb-auth-proxy
Auth Proxy クライアントを実行可能にします。
chmod +x alloydb-auth-proxy
32 ビット(ARM)
Auth Proxy クライアントをダウンロードします。
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.12.1/alloydb-auth-proxy.linux.arm -O alloydb-auth-proxy
Auth Proxy クライアントを実行可能にします。
chmod +x alloydb-auth-proxy
macOS
M1
Auth Proxy クライアントをダウンロードします。
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.12.1/alloydb-auth-proxy.darwin.arm64
Auth Proxy クライアントを実行可能にします。
chmod +x alloydb-auth-proxy
64 ビット
Auth Proxy クライアントをダウンロードします。
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.12.1/alloydb-auth-proxy.darwin.amd64
Auth Proxy クライアントを実行可能にします。
chmod +x alloydb-auth-proxy
32 ビット
Auth Proxy クライアントをダウンロードします。
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.12.1/alloydb-auth-proxy.darwin.386
Auth Proxy クライアントを実行可能にします。
chmod +x alloydb-auth-proxy
Windows
64 ビット
https://storage.googleapis.com/alloydb-auth-proxy/v1.12.1/alloydb-auth-proxy-x64.exe を右クリックして [名前を付けてリンク先を保存] を選択し、Auth Proxy クライアントをダウンロードします。ファイル名を alloydb-auth-proxy.exe
に変更します。
32 ビット
https://storage.googleapis.com/alloydb-auth-proxy/v1.12.1/alloydb-auth-proxy-x86.exe を右クリックして [名前を付けてリンク先を保存] を選択し、Auth Proxy クライアントをダウンロードします。ファイル名を alloydb-auth-proxy.exe
に変更します。
Docker イメージ
便宜上、Auth Proxy クライアントを含む複数のコンテナ イメージは Container Registry で入手できます。
次のコマンドを使用して、最新のイメージをローカルマシンに Docker で pull できます。
docker pull gcr.io/alloydb-connectors/alloydb-auth-proxy:latest
その他の OS
ここに記載されていないその他のオペレーティング システムの場合は、Auth Proxy クライアントをソースからコンパイルできます。
IAM プリンシパルを選択し、認可の準備を行う
AlloyDB Auth Proxy は、次のタイプの IAM プリンシパルを使用して、クライアントと AlloyDB インスタンス間の接続を承認できます。
ユーザー管理のサービス アカウント。アプリケーションの IAM サービス アカウントを作成し、そのアカウントを使用して接続を承認できます。
本番環境での認可には、サービス アカウントを使用することを強くおすすめします。
ユーザー アカウント。独自の IAM ユーザー アカウントを使用して接続を承認できます。
独自のユーザー アカウントを使用すると、gcloud CLI を使用して AlloyDB リソースを管理し、
psql
などのツールを使用してデータベースを開発し、アプリケーション コードをすべて同じホストで開発する開発環境で便利です。Compute Engine のデフォルトのサービス アカウント。クライアント ホストが Compute Engine インスタンスの場合は、Compute Engine のデフォルトのサービス アカウントを使用して接続を承認できます。
使用する IAM プリンシパルを選択したら、必要な IAM 権限があることを確認し、クライアントホストでその認証情報を使用できるようにする必要があります。
必要な IAM 権限
接続の認可に使用する IAM プリンシパルには、roles/alloydb.client
(Cloud AlloyDB クライアント)と roles/serviceusage.serviceUsageConsumer
(Service Usage コンシューマ)の事前定義ロールによって提供される権限が必要です。
Cloud AlloyDB クライアントのロールを IAM プリンシパルに割り当てるには:
Google Cloud プロジェクトで Cloud Resource Manager API を有効にする必要があります。
Google Cloud プロジェクトで
roles/owner
(オーナー)の基本 IAM ロール、または次の権限を付与するロールが必要です。resourcemanager.projects.get
resourcemanager.projects.getIamPolicy
resourcemanager.projects.setIamPolicy
最小権限の原則に従ってこれらの権限を取得するには、管理者に
roles/resourcemanager.projectIamAdmin
(プロジェクト IAM 管理者)ロールの付与を依頼してください。
クライアント ホストで IAM 認証情報を使用できるようにする
クライアントホストで IAM 認証情報を使用できるようにする方法は、接続の認可に使用している IAM プリンシパルの種類によって異なります。
ユーザー管理のサービス アカウント
ユーザー管理のサービス アカウントに IAM 認証情報を提供するには、JSON 形式のサービス アカウント キーを作成し、クライアントホストにダウンロードします。Auth Proxy クライアントを起動するときに、
--credentials-file
フラグを使用して鍵ファイルの場所を指定します。ユーザー アカウント
ユーザー アカウントの IAM 認証情報を指定するには、クライアントホストに Google Cloud CLI をインストールし、
gcloud init
コマンドを実行してユーザー アカウントを使用して初期化します。Auth Proxy クライアントを起動すると、ユーザー管理のサービス アカウント認証情報を指定しない場合、ユーザー アカウントの認証情報が自動的に検出されて使用されます。Compute Engine のデフォルトのサービス アカウント
クライアント ホストとして Compute Engine インスタンスを使用している場合、Compute Engine のデフォルトのサービス アカウントの認証情報はすでにホストにあります。Auth Proxy クライアントを起動すると、ユーザー管理のサービス アカウントとユーザー アカウントの認証情報を使用できない場合、これらの認証情報が自動的に検出されて使用されます。
AlloyDB インスタンスの接続 URI を収集します。
Auth Proxy クライアントを起動するときに、次の接続 URI 形式を使用して、接続する AlloyDB インスタンスを識別します。
projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
すべてのインスタンスの接続 URI のリストを表示するには、gcloud CLI の alloydb instances list
コマンドを使用します。
接続する各インスタンスのインスタンス接続 URI を収集します。
Auth Proxy クライアントを起動する
Auth Proxy クライアントを起動するときに、接続する AlloyDB インスタンスに関する情報と、必要に応じて、これらの接続の承認に使用する認証情報も指定します。
起動すると、Auth Proxy クライアントは次の処理を行います。
- 構成した IAM プリンシパルの認証情報と IAM 権限を使用して、AlloyDB インスタンスへの接続を承認します。特定の順序のステップに沿って認証情報を検索します。
- インスタンスでパブリック IP が有効になっている場合、ソース ネットワークへのパブリック IP 接続を自動的に承認します。
- 各インスタンスの Auth Proxy サーバーにプライベート TLS 1.3 接続を構成します。
- ローカル クライアントの接続リクエストのリッスンを開始します。
デフォルトでは、Auth Proxy クライアントは IP アドレス 127.0.0.1 で TCP 接続をリッスンします。ポート番号は 5432 から始まり、最初の AlloyDB インスタンス以降はインスタンスごとに 1 つずつ増加します。Auth Proxy クライアントの起動時に、別のリスナー アドレスとポートを指定できます。
コマンドライン
./alloydb-auth-proxy INSTANCE_URI... \
[ --credentials-file PATH_TO_KEY_FILE \ ]
[ --token OAUTH_ACCESS_TOKEN \ ]
[ --port INITIAL_PORT_NUMBER \ ]
[ --address LOCAL_LISTENER_ADDRESS \ ]
[ --auto-iam-authn ] \
[ --psc] \
[ --public-ip]
次のように置き換えます。
INSTANCE_URI
: 接続先の AlloyDB インスタンスのインスタンスの接続 URI。次の形式で指定します。projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
Auth Proxy クライアントがインスタンスに使用するデフォルトのローカル リスナー ポートをオーバーライドするには、URI に
port
クエリ パラメータを追加します。"projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID?port=PORT"
省略可:
PATH_TO_KEY_FILE
: 接続認可に使用するユーザー管理サービス アカウントの JSON キーファイルのパス。省略可:
OAUTH_ACCESS_TOKEN
: 接続認証に使用する OAuth2 トークンの値。省略可:
INITIAL_PORT_NUMBER
: ローカル TCP 接続をリッスンするときに、デフォルトのポート5432
の代わりに使用する開始ポート番号。省略可:
LOCAL_LISTENER_ADDRESS
: ローカル TCP 接続をリッスンするときに、デフォルトの127.0.0.1
の代わりに使用するリスナー アドレス。
オプションの --auto-iam-authn
フラグを使用すると、インスタンスへの自動認証が可能です。これは、Auth Proxy クライアントを実行している IAM アカウントに関連付けられているデータベース ユーザーでのみ機能します。詳細については、Auth Proxy を使用して自動的に認証するをご覧ください。
省略可能な --psc
フラグを使用すると、Auth Proxy は Private Service Connect が有効になっているインスタンスに接続できます。Private Service Connect で DNS を設定する方法については、DNS マネージド ゾーンと DNS レコードを構成するをご覧ください。
オプションの --public-ip
フラグを使用すると、Auth Proxy はインスタンスのパブリック IP アドレスを使用して、パブリック IP が有効になっているインスタンスに接続できます。パブリック IP の詳細については、パブリック IP を使用して接続するをご覧ください。
Docker コンテナ
docker run
コマンドを使用して Auth Proxy クライアントを起動します。
Compute Engine インスタンスによって提供される認証情報を使用する場合は、次のようなコマンドを使用できます。
docker run \
--publish 127.0.0.1:PORT:PORT \
gcr.io/alloydb-connectors/alloydb-auth-proxy:latest \
--address 0.0.0.0 \
--port PORT \
INSTANCE_URI
次のように置き換えます。
PORT
: Auth Proxy クライアントへのローカル接続に使用するポート。デフォルト値は5432
です。INSTANCE_URI
: 接続先の AlloyDB インスタンスのインスタンス接続 URI。次の形式で指定します。projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
Auth Proxy クライアントがインスタンスに使用するデフォルトのローカル リスナー ポートをオーバーライドするには、URI に
port
クエリ パラメータを追加します。"projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID?port=PORT"
Auth Proxy クライアントがローカルホストの外部に公開されないように、常に --publish
フラグに 127.0.0.1
接頭辞を指定します。
--address
フラグの 0.0.0.0
値は、Docker コンテナの外部からリスナーにアクセスできるようにするために必要です。
ローカル JSON ファイルに保存した認証情報を指定するには、docker run
コマンドを実行するときに --volume
フラグと --credentials-file
フラグを指定します。
docker run \
--volume PATH_TO_KEY_FILE:/key.json \
--publish 127.0.0.1:PORT:PORT \
gcr.io/alloydb-connectors/alloydb-auth-proxy:latest \
--address 0.0.0.0 \
--port PORT \
--credentials-file=/key.json \
INSTANCE_URI
PATH_TO_KEY_FILE
は、接続認可に使用するユーザー管理サービス アカウントの JSON キーファイルのパスに置き換えます。
起動例
次の例は、Auth Proxy クライアントを開始するさまざまな方法を示しています。次のインスタンス接続 URI の例を使用します。
projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary
projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool
基本的な起動
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary"
この例では、Auth Proxy クライアントは通常の認可手順の順序に沿って接続を認可し、127.0.0.1:5432
の myprimary
インスタンスへのローカル接続のリッスンを開始します。
ユーザー管理のサービス アカウントを使用した起動
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \\
--credentials-file "myappaccount/key.json"
この例では、Auth Proxy クライアントは myappaccount/key.json
に保存されているユーザー管理のサービス アカウントの JSON キーを使用して接続を承認し、127.0.0.1:5432
の myprimary
インスタンスへのローカル接続のリッスンを開始します。
起動時に複数のインスタンスに接続する
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool"
この例では、Auth Proxy クライアントは通常の認可手順の順序に沿って接続を認可し、127.0.0.1:5432
の myprimary
インスタンスと 127.0.0.1:5433
の myreadpool
インスタンスへのローカル接続のリッスンを開始します。
カスタムポートでの起動リッスン
Auth Proxy クライアントにカスタム ポートを使用すると、他の PostgreSQL 接続用にポート 5432
を予約する必要がある場合に便利です。
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary?port=5000" \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool?port=5001"
この例では、Auth Proxy クライアントは通常の認可手順の順序に沿って接続を認可し、127.0.0.1:5000
の myprimary
インスタンスと 127.0.0.1:5001
の myreadpool
インスタンスへのローカル接続のリッスンを開始します。
これらのカスタムポートは連続しているため、次の起動コマンドを使用して同じ効果を得ることができます。
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool" \
--port 5000
カスタム IP アドレスでの起動リスニング
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \
--address "0.0.0.0"
この例では、Auth Proxy クライアントは通常の認可手順の順序に沿って接続を認証し、0.0.0.0:5432
の myprimary
インスタンスへのローカル接続のリッスンを開始します。
AlloyDB Auth Proxy を使用してアプリケーションをデータベースに接続する
次の例は、AlloyDB Auth Proxy を使用してアプリケーションをデータベースに接続する方法を示しています。
psql
の例は、コマンドライン ツールを接続する例を示しています。
いくつかのプログラミング言語では、AlloyDB Auth Proxy を使用して AlloyDB インスタンスに接続することは、Cloud SQL Auth Proxy を使用して Cloud SQL for PostgreSQL に接続することと同じです。そのため、ここでの言語の例は Cloud SQL for PostgreSQL の場合と同じです。
これらの例は、Auth Proxy クライアントのデフォルトの起動に基づいており、127.0.0.1:5432
でローカル TCP 接続をリッスンします。
psql
psql -h 127.0.0.1 -p 5432 -U DB_USER
DB_USER
は、接続するデータベース ユーザー(postgres
など)に置き換えます。
DB_USER
ユーザーのパスワードを入力するよう求められます。
Python
このスニペットをウェブ アプリケーションのコンテキストで表示するには、GitHub の README をご覧ください。
Java
このスニペットをウェブ アプリケーションのコンテキストで表示するには、GitHub の README をご覧ください。
Node.js
このスニペットをウェブ アプリケーションのコンテキストで表示するには、GitHub の README をご覧ください。
Go
このスニペットをウェブ アプリケーションのコンテキストで表示するには、GitHub の README をご覧ください。
C#
このスニペットをウェブ アプリケーションのコンテキストで表示するには、GitHub の README をご覧ください。
Ruby
このスニペットをウェブ アプリケーションのコンテキストで表示するには、GitHub の README をご覧ください。
PHP
このスニペットをウェブ アプリケーションのコンテキストで表示するには、GitHub の README をご覧ください。