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」と入力します。
- [特徴量データソース] の [Google Cloud AlloyDB] をクリックします。 
- [AlloyDB: BigQuery フェデレーション] ソリューション カードをクリックします。 
- [外部データソース] ダイアログで、次の情報を入力します。 - [接続タイプ] で [AlloyDB] を選択します。
- [接続 ID] に、接続リソースの識別子を入力します。文字、数字、アンダースコアを使用できます。例: bq_alloydb_connection
- [データ ロケーション] で、外部データソースのリージョンと互換性のある BigQuery ロケーション(またはリージョン)を選択します。
- (省略可)[わかりやすい名前] に、わかりやすい接続名を入力します(例: My connection resource)。後で修正が必要になった場合、わかりやすい名前だと接続リソースを簡単に識別できます。
- (省略可)[説明] に、この接続リソースの説明を入力します。
- 省略可: 暗号化。顧客管理の暗号鍵(CMEK)を使用して認証情報を暗号化するには、[顧客管理の暗号鍵(CMEK)] を選択し、顧客管理の暗号鍵を選択します。選択しない場合、認証情報はデフォルトの Google Cloud-powered encryption keyによって保護されます。
- [データベース名] に、データベースの名前を入力します。
- [データベース ユーザー名] に、データベースのユーザー名を入力します。
- [データベース パスワード] に、データベースのパスワードを入力します。- 省略可: パスワードを表示するには、 [パスワードを表示] をクリックします。
 
- [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: Cloud de Confiance by S3NS プロジェクト 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.s3ns-system.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: 実際の Cloud de Confiance プロジェクト ID。
- SERVICE_ACCOUNT_ID:- service-PROJECT_NUMBER@gcp-sa-bigqueryconnection.s3ns-system.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 データのクエリ方法を確認する。