AlloyDB for PostgreSQL に接続する
BigQuery 管理者は、接続を作成して AlloyDB データにアクセスできます。この接続により、データ アナリストは AlloyDB のデータにクエリを実行できます。
AlloyDB に接続するには、次の手順を行います。
始める前に
- BigQuery Connection API を有効にします。
-
AlloyDB 接続の作成に必要な権限を取得するには、プロジェクトで BigQuery 接続管理者(
roles/bigquery.connectionAdmin
)IAM ロールを付与するように管理者へ依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
AlloyDB 接続を作成する
ベスト プラクティスとして、AlloyDB に接続するときは、接続を使用してデータベース認証情報を処理します。接続は暗号化され、BigQuery Connection のサービスに安全に保存されます。ユーザー認証情報がソース内の他のデータに対して有効であれば、その接続を再利用できます。たとえば、1 つの接続を使用して、AlloyDB インスタンス内の同じデータベースに複数回クエリを実行できます。
AlloyDB 接続は、次のいずれかの方法で作成します。
コンソール
[BigQuery] ページに移動します。
[エクスプローラ] ペインで、
[データを追加] をクリックします。[データを追加] ダイアログで、[外部データソースへの接続] をクリックします。
[外部データソース] ペインで、次の情報を入力します。
- [接続タイプ] で AlloyDB を選択します。
- [接続 ID] に、接続リソースの識別子を入力します。文字、数字、アンダースコアを使用できます。例:
bq_alloydb_connection
- [データのロケーション] で、外部データソースのリージョンと互換性のある BigQuery ロケーション(またはリージョン)を選択します。
- 省略可: [わかりやすい名前] に、わかりやすい接続名を入力します(例:
My connection resource
)。後で修正が必要になった場合、わかりやすい名前だと接続リソースを簡単に識別できます。 - 省略可: [説明] に、この接続リソースの説明を入力します。
- 省略可: 暗号化。顧客管理の暗号鍵(CMEK)を使用して認証情報を暗号化するには、[顧客管理の暗号鍵(CMEK)] を選択し、顧客管理の暗号鍵を選択します。選択しない場合、認証情報は Google が所有し、Google が管理するデフォルトの鍵によって保護されます。
- [データベース名] に、データベースの名前を入力します。
- [データベース ユーザー名] に、データベースのユーザー名を入力します。
- [データベース パスワード] に、データベースのパスワードを入力します。
- 省略可: パスワードを表示するには、 [パスワードを表示] をクリックします。
[AlloyDB インスタンス] に、//alloydb.googleapis.com プレフィックスを付けて AlloyDB プライマリ インスタンスまたはリード インスタンスの接続 URI を入力します。
- サンプル URI:
//alloydb.googleapis.com/projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_NAME/instances/INSTANCE_ID
- サンプル URI:
[接続を作成] をクリックします。
[接続へ移動] をクリックします。
[接続情報] ペインで、次の手順で使用するサービス アカウント ID をコピーし、適切な IAM 権限を付与します。
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 を入力します。- サンプル 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 のロールと権限について詳しくは、事前定義ロールと権限をご覧ください。
次のオプションのいずれかを選択します。
コンソール
[BigQuery] ページに移動します。
接続は、プロジェクトで外部接続というグループに一覧表示されます。
[エクスプローラ] ペインで、[プロジェクト名] > [外部接続] > [接続] の順にクリックします。
[詳細] ペインで、[共有] をクリックして接続を共有します。次に、以下の操作を行います。
[接続の権限] ダイアログで、プリンシパルを追加または編集して、他のプリンシパルと接続を共有します。
[保存] をクリックします。
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 データのクエリ方法を確認する。