このページでは、AlloyDB for PostgreSQL が提供するデータベースに接続する方法について説明します。
ネットワーキング: AlloyDB インスタンスは、Virtual Private Cloud(VPC)のパブリック IP またはプライベート IP を使用します。さまざまな手法により、VPC の外部で実行されているアプリケーションからの安全な接続を許可できます。
認可: AlloyDB Auth Proxy を使用すると、Identity and Access Management(IAM)を使用して、データにアクセスできるユーザーを制御できます。VPC のファイアウォールを使用すると、AlloyDB リソースへのアクセスをさらに調整できます。
認証: 標準の PostgreSQL ユーザー認証手法を使用してインスタンスにログインします。AlloyDB は、標準の PostgreSQL ユーザーロールを使用した IAM ベースの認証もサポートしています。
ネットワーキング
AlloyDB インスタンスに多くのノードが含まれていても、アプリケーションは単一の静的 IP アドレスを介してインスタンスに接続します。このアドレスは、インスタンスのクラスタを最初に設定するときに指定する VPC のプライベート アドレスか、VPC の外部からの直接接続を許可するパブリック IP のいずれかです。
プライベート IP
プライベート IP を使用して AlloyDB を構成すると、インスタンスは VPC 内のプライベート IP アドレスを取得します。
プライベート IP アドレスは、アプリケーションへの接続に次の 2 つの方法で影響します。
プロジェクトの VPC 内の他の場所で実行されているアプリケーションは、追加の手順やリソースなしでインスタンス(またはインスタンスを表すプロキシ)に接続できます。
たとえば、psql クライアントをインスタンスに接続するでは、VPC 内の Compute Engine VM で
psql
コマンドライン プログラムを実行して AlloyDB インスタンスに接続する方法について説明します。VPC の外部で実行されるアプリケーションには、AlloyDB インスタンスに接続するための中間サービスが必要です。解決策としては、インスタンスの VPC 内の VM でプロキシ サービスを実行するか、他のGoogle Cloud プロダクトを使用して、アプリケーションと VPC の間に永続的な接続を確立します。
詳細については、VPC の外部からクラスタに接続するをご覧ください。
プライベート IP 経由の接続では、インターネットを経由する必要がないため、通常はレイテンシが小さく、攻撃ベクトルが制限されます。
AlloyDB のプライベート IP の詳細については、プライベート IP の概要をご覧ください。
パブリック IP
パブリック IP を使用して AlloyDB を構成すると、インスタンスは、パブリック インターネットでアクセス可能な受信接続用のパブリック IP アドレスを取得します。必要に応じて、承認済み外部ネットワークを使用して、インスタンスにアクセスできる IP アドレス範囲を CIDR 形式で指定できます。
クライアントとインスタンス間の安全な接続を確保するには、AlloyDB 言語コネクタでパブリック IP を使用することをおすすめします。
インスタンスにパブリック IP と承認済み外部ネットワークを追加する方法については、パブリック IP を使用して接続するをご覧ください。
AlloyDB は、インスタンスへのアウトバウンド接続もサポートしています。Database Migration Service またはセルフマネージド pglogical
設定を使用して、外部ソースから AlloyDB にデータを直接移行するために、アウトバウンドのパブリック IP を有効にできます。AlloyDB は、postgres_fdw
や oracle_fdw
などの外部データ ラッパーを使用して外部データソースに接続することもサポートしています。
アウトバウンド パブリック IP の有効化の詳細については、インスタンスにアウトバウンド接続を追加するをご覧ください。
承認
AlloyDB クラスタへのアクセスは、AlloyDB 言語コネクタ、AlloyDB Auth Proxy、または VPC ファイアウォール ルールを使用して制御できます。
AlloyDB 言語コネクタ
AlloyDB 言語コネクタは、AlloyDB クラスタへの接続時に TLS 1.3 と IAM 認可を使用して自動 mTLS を提供するクライアント ライブラリです。
これらのライブラリは、それぞれのプログラミング言語から直接使用できます。外部プロセスを必要とせずに AlloyDB Proxy と同じ機能を提供します。これにより、セキュリティが向上し、AlloyDB に接続するための構成要件が削減されます。
詳細については、AlloyDB 言語コネクタの概要をご覧ください。
IAM と AlloyDB Auth Proxy でアクセスを制御する
IP アドレスを使用してインスタンスに直接接続することもできますが、本番環境では AlloyDB Auth Proxy を使用することをおすすめします。IAM ベースのアクセス制御と、プロキシとクラスタ間のエンドツーエンドの暗号化を提供します。
詳細については、AlloyDB Auth Proxy についてをご覧ください。
ファイアウォール ルールで VPC アクセスを制限する
他のクラウドベースのプロジェクトと同様に、アプリケーションが接続元の IP 範囲またはサブネットワークにのみネットワーク アクセスを制限するように、VPC のファイアウォール ルールを調整する必要があります。これは、VPC の外部からクラスタに接続するで詳しく説明されているように、外部アプリケーションで特に重要です。
VPC のファイアウォールの構成の詳細については、VPC ファイアウォール ルールをご覧ください。
認証
AlloyDB は、2 種類のデータベース ユーザーをサポートしています。それぞれがデータベースで独自の方法で認証します。
標準の PostgreSQL ユーザーロールは、ユーザー名とパスワードを使用して認証します。これらのアカウントは、通常の PostgreSQL ユーザー管理手法を使用して管理します。詳細については、AlloyDB ユーザーロールを管理するをご覧ください。
IAM ユーザー アカウントとサービス アカウントは、OAuth 2.0 トークンを使用してデータベース ユーザーとして認証されます。これらのアカウントは、Google Cloud IAM システムを使用して管理します。詳細については、IAM 認証を管理するをご覧ください。
AlloyDB インスタンスで認証されると、アプリケーションはインスタンスを通常の PostgreSQL サーバーのように扱うことができます。インスタンスへのネットワーキング ルートと認可ルートを確立したら、標準の PostgreSQL 手法を使用してインスタンスにログインし、データにアクセスできます。これは、psql
などのツールで手動でログインする場合でも、PostgreSQL コード ライブラリを使用してプログラムでデータベースに接続する場合でも同じです。
通常、新しい AlloyDB クラスタで初めて認証を行う場合は、クラスタの作成時に指定したパスワードを使用して、postgres
ユーザーとしてプライマリ インスタンスにログインします。そこから、アプリケーションで使用する管理者権限のないデータベース ユーザーを作成する必要があります。
次のステップ
psql
コマンドライン シェルを使用して AlloyDB インスタンスに接続する方法を学習する。これには、VPC 内に VM を設定してpsql
をインストールする手順が含まれます。データベースを作成する方法を学習する。
AlloyDB Auth Proxy をインストールして使用し、AlloyDB インスタンスとの安全な接続を確立する方法について学びます。
AlloyDB 言語コネクタを使用して接続する方法について学習する。