AlloyDB for PostgreSQL に接続する
BigQuery 管理者は、接続を作成して AlloyDB データにアクセスできます。この接続により、データ アナリストは AlloyDB のデータにクエリを実行できます。
AlloyDB に接続するには、次の手順を行います。
始める前に
- BigQuery Connection API を有効にします。
-
AlloyDB 接続の作成に必要な権限を取得するには、プロジェクトで BigQuery 接続管理者(
roles/bigquery.connectionAdmin
)IAM ロールを付与するように管理者へ依頼してください。ロールの付与の詳細については、アクセス権の管理をご覧ください。
AlloyDB 接続を作成する
ベスト プラクティスとして、AlloyDB に接続するときは、接続を使用してデータベース認証情報を処理します。接続は暗号化され、BigQuery Connection のサービスに安全に保存されます。ユーザー認証情報がソース内の他のデータに対して有効であれば、その接続を再利用できます。たとえば、1 つの接続を使用して、AlloyDB インスタンス内の同じデータベースに複数回クエリを実行できます。
AlloyDB 接続は、次のいずれかの方法で作成します。
bq
次のフラグを指定して、bq mk
コマンドを実行します。
bq mk \
--connection \
--location=LOCATION \
--project_id=PROJECT_ID \
--connector_configuration '{
"connector_id": "google-alloydb",
"asset": {
"database": "DATABASE",
"google_cloud_resource": "RESOURCE_PATH"
},
"authentication": {
"username_password": {
"username": "USERNAME",
"password": {
"plaintext": "PASSWORD"
}
}
}
}' \
CONNECTION_ID
次のように置き換えます。
LOCATION
: AlloyDB のデータと一緒にする BigQuery データセットのリージョンを指定します。この接続を使用するクエリは、このリージョンから実行する必要があります。PROJECT_ID
: Google Cloud プロジェクト ID を入力します。DATABASE
: データベース名を入力します。RESOURCE_PATH
: //alloydb.googleapis.com プレフィックスを付けて AlloyDB プライマリ インスタンスの接続 URI を入力します。AlloyDB 読み取りインスタンスはサポートされていません。- サンプル URI:
//alloydb.googleapis.com/projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_NAME/instances/INSTANCE_ID
- サンプル URI:
USERNAME
: データベース ユーザーの名前を入力します。PASSWORD
: データベース ユーザーのパスワードを入力します。CONNECTION_ID
: この接続を識別する接続 ID を入力します。
API
BigQuery Connection API では、ConnectionService
内で CreateConnection
を呼び出して接続をインスタンス化できます。詳しくは、クライアント ライブラリのページをご覧ください。
サービス アカウントへのアクセスを許可する
プロジェクトで最初の接続を作成すると、サービス アカウントが自動的に作成されます。サービス アカウントの名前は BigQuery Connection Service エージェントです。サービス アカウント ID は以下の形式です。
service-PROJECT_NUMBER@gcp-sa-bigqueryconnection.iam.gserviceaccount.com
。
AlloyDB に接続するには、BigQuery がユーザーに代わってデータにアクセスできるように、新しい接続に AlloyDB へのアクセス権を付与する必要があります。このサービス アカウントには次の権限が必要です。
alloydb.instances.connect
接続に関連付けられているサービス アカウントに、この権限がすでに割り当てられている AlloyDB クライアント IAM ロールを付与できます。サービス アカウントに必要な権限がすでにある場合は、この手順を省略できます。
コンソール
[IAM と管理] ページに移動します。
[
アクセス権を付与] をクリックします。[プリンシパルを追加] ダイアログが開きます。
新しいプリンシパル フィールドに、サービス アカウントの名前( BigQuery Connection Service エージェント、または接続情報から取得したサービス アカウント ID)を入力します。
[ロールを選択] フィールドで [AlloyDB] を選択し、[AlloyDB クライアント] を選択します。
[保存] をクリックします。
gcloud
gcloud projects add-iam-policy-binding
コマンドを実行します。
gcloud projects add-iam-policy-binding PROJECT_ID --member=serviceAccount:SERVICE_ACCOUNT_ID --role=roles/alloydb.client
次の値を指定します。
PROJECT_ID
: Google Cloud プロジェクト ID。SERVICE_ACCOUNT_ID
:service-PROJECT_NUMBER@gcp-sa-bigqueryconnection.iam.gserviceaccount.com
のプロジェクト番号を置き換えて使用します。
ユーザーと接続を共有する
次のロールを付与することで、ユーザーがデータをクエリして接続を管理できます。
roles/bigquery.connectionUser
: ユーザーが接続を使用して外部データソースに接続し、クエリを実行できるようにします。roles/bigquery.connectionAdmin
: ユーザーが接続を管理できるようにします。
BigQuery での IAM のロールと権限について詳しくは、事前定義ロールと権限をご覧ください。
次のオプションのいずれかを選択します。
bq
次の set-iam-policy
コマンドを使用します。
bq set-iam-policy RESOURCE FILE_NAME
次のように置き換えます。
RESOURCE
: リソース名をproject_id.region.connection_id
またはregion.connection_id
の形式で入力します。FILE_NAME
: JSON 形式の IAM ポリシーを含むファイル名を入力します。
set-iam-policy コマンドの詳細については、IAM を使用してリソースへのアクセスを制御するをご覧ください。
API
[BigQuery Connections REST API リファレンス] セクションの projects.locations.connections.setIAM
メソッドを使用して、policy
リソースのインスタンスを指定します。
次のステップ
- さまざまな接続タイプについて確認する。
- 接続の管理について確認する。
- 連携クエリについて確認する。
- AlloyDB データのクエリ方法を確認する。