Integrations6 min read

外部データ接続

PostgreSQL と BigQuery に接続して、スプレッドシートと並行して外部データをクエリします

概要

外部データ接続を使用すると、ModelMonkey から直接データベースをクエリできます。データを手動でエクスポートしたり、複雑なインポートスクリプトを記述したりする代わりに、ModelMonkey に PostgreSQL または BigQuery データベースからデータを取得し、スプレッドシートのデータと組み合わせるよう指示できます。

接続後は、「Google Sheets の売上データと PostgreSQL の顧客属性データを比較して」や「先月のすべての注文を取得して、データベースのユーザープロファイルと結合して」といった質問ができます。

Tip

認証情報は Google Cloud KMS を使用したエンタープライズグレードのエンベロープ暗号化で保護されています。ModelMonkey は平文のパスワードを保存しません。

サポートされているデータソース

ModelMonkey は現在、2 つの外部データソースをサポートしています。

PostgreSQL
インターネット経由でアクセス可能な任意の PostgreSQL データベースに接続できます。セルフホスト型の PostgreSQL、Amazon RDS、Google Cloud SQL、Azure Database for PostgreSQL、その他のマネージド PostgreSQL サービスが含まれます。

Google BigQuery
サービスアカウントを使用して Google BigQuery データセットに接続します。大規模な分析ワークロードやデータウェアハウスのクエリに最適です。

どちらの接続タイプも、本番データへの誤った変更を防ぐため、読み取り専用クエリのみをサポートしています。

接続の作成

新しい外部データ接続を作成するには:

  1. ModelMonkey のサイドバーから「External Data Connections」パネルを開きます
  2. 「New Connection」ボタンをクリックします
  3. データソースの種類 (PostgreSQL または BigQuery) を選択します
  4. 接続情報を入力します
  5. 接続をテストして動作を確認します
  6. 接続を保存します

セットアップウィザードが各ステップをガイドし、保存前に設定を検証します。

PostgreSQL 接続の設定

PostgreSQL データベースに接続するには、次の情報が必要です:

必須フィールド

  • Connection Name: この接続を識別するためのわかりやすい名前 (例: "Production Analytics DB")
  • Host: データベースサーバーのホスト名または IP アドレス
  • Port: PostgreSQL のポート番号 (デフォルト: 5432)
  • Database: 接続するデータベース名
  • Username: データベースのユーザー名
  • Password: データベースのパスワード

任意フィールド

  • Schema: 使用するデフォルトスキーマ (デフォルト: "public")
  • SSL Mode: SSL 接続の処理方法
    • Disable: SSL なし (本番環境には推奨しません)
    • Allow: 利用可能な場合は SSL を使用
    • Prefer: SSL を優先し、使用できない場合は非 SSL にフォールバック (デフォルト)
    • Require: 常に SSL を使用

Warning

セキュリティのため、クエリする必要のあるテーブルへのアクセスのみに制限した読み取り専用のデータベースユーザーを使用してください。

text
Connection Name: Production Analytics
Host: analytics-db.example.com
Port: 5432
Database: analytics
Schema: public
SSL Mode: Require
Username: readonly_user

PostgreSQL 設定の例

BigQuery 接続の設定

Google BigQuery に接続するには、適切な権限を持つサービスアカウントが必要です:

必須フィールド

  • Connection Name: この接続を識別するためのわかりやすい名前
  • Project ID: Google Cloud のプロジェクト ID (Google Cloud Console で確認できます)
  • Service Account JSON: BigQuery アクセス権を持つサービスアカウントの JSON キーファイル

任意フィールド

  • Dataset ID: クエリするデフォルトのデータセット
  • Location: データのロケーション (US、EU、または特定のリージョン)

必要な IAM ロール
サービスアカウントには次の権限が必要です:

  • BigQuery Data Viewer: テーブルのメタデータとデータの読み取り
  • BigQuery Job User: クエリの作成と実行
  • BigQuery Read Session User: Storage API 経由でのデータ読み取り

Tip

上記に記載した権限のみを持つ、ModelMonkey 専用のサービスアカウントを作成してください。個人の認証情報や過度な権限を持つサービスアカウントは使用しないでください。

BigQuery サービスアカウントの作成

BigQuery アクセス用のサービスアカウントを作成するには:

  1. Google Cloud Console (console.cloud.google.com) にアクセスします
  2. 「IAM & Admin」→「Service Accounts」に移動します
  3. 「Create Service Account」をクリックします
  4. "modelmonkey-readonly" のような名前を入力します
  5. 次のロールを付与します:
    • BigQuery Data Viewer
    • BigQuery Job User
    • BigQuery Read Session User
  6. 「Done」をクリックしてアカウントを作成します
  7. 新しいサービスアカウントをクリックし、「Keys」タブに移動します
  8. 「Add Key」→「Create new key」→「JSON」をクリックします
  9. JSON ファイルをダウンロードして ModelMonkey にアップロードします

この JSON ファイルは安全に保管してください。このファイルにより BigQuery データへのアクセスが可能になります。

Warning

サービスアカウントの JSON ファイルを共有したり、バージョン管理にコミットしたりしないでください。漏洩した場合は、Google Cloud Console からキーをすぐに削除してください。

接続のテスト

接続を保存する前に、ModelMonkey はデータベースに到達できることを検証します:

テストで確認される項目

  • ホストへのネットワーク接続
  • 認証情報による認証
  • データベースへのクエリ権限

テスト結果
テストが成功すると、以下が表示されます:

  • サーバーのバージョン情報
  • 利用可能なスキーマ (PostgreSQL)
  • アクセス可能なテーブル数

テストが失敗した場合、何が問題だったかを説明する具体的なエラーメッセージが表示されます。よくある問題には以下が含まれます:

  • ホスト名またはポート番号が正しくない
  • ユーザー名またはパスワードが間違っている
  • ファイアウォールが接続をブロックしている
  • データベースの権限が不足している

セキュリティと認証情報の管理

ModelMonkey はエンタープライズグレードのセキュリティを使用してデータベースの認証情報を保護します:

エンベロープ暗号化
認証情報は、各接続に対して生成される固有のデータ暗号化キー (DEK) を使用して暗号化されます。DEK 自体は保存前に Google Cloud KMS によって暗号化されます。この二重暗号化により、認証情報が平文で保存されることはありません。

SSRF 保護
ModelMonkey は、プライベート IP 範囲、localhost、およびクラウドメタデータエンドポイントへの接続をブロックします。これにより、悪意のある入力が提供された場合でも、潜在的なセキュリティの脆弱性を防ぎます。

セキュアなメモリ処理
復号化された認証情報はセキュアなメモリバッファに保持され、不要になると自動的に消去されます。

読み取り専用アクセス
BigQuery 接続は明示的に読み取り専用として設定されます。PostgreSQL の場合、SELECT のみの権限を持つデータベースユーザーを使用することを推奨します。

接続の使用方法

接続がアクティブになると、自然言語で ModelMonkey に問いかけるだけでクエリを実行できます:

リクエストの例

  • 「PostgreSQL データベースから売上上位 10 件の顧客を表示して」
  • 「Google Sheets の売上データと外部データベースの顧客属性データを比較して」
  • 「先月のすべての注文を取得して、ユーザープロファイルと結合して」
  • 「BigQuery の分析データのトレンドを分析して」

ModelMonkey は自動的に以下を実行します:

  1. 外部データベースに安全に接続する
  2. リクエストを SQL に変換する
  3. クエリを実行する
  4. スプレッドシートに書き込み可能な結果を返す

1 つのリクエストで複数のソースのデータを組み合わせることができ、スプレッドシートのデータと外部データベースのレコードを結合できます。

Tip

リクエストで接続名を参照してください。たとえば、「Production Analytics 接続から」と指定すると、ModelMonkey がクエリするデータベースを特定しやすくなります。

接続の管理

接続の表示
すべての接続は「External Data Connections」パネルに表示されます。各接続には以下が表示されます:

  • 接続名
  • プロバイダーの種類 (PostgreSQL または BigQuery)
  • ホストまたはプロジェクト情報
  • アクティブ/非アクティブのステータス
  • 作成日

接続ステータス

  • Active: 接続はクエリに使用可能です
  • Inactive: 接続は存在しますが無効になっています

接続の削除
接続を削除するには:

  1. 接続カードのメニューアイコン (3 つのドット) をクリックします
  2. 「Delete」を選択します
  3. 削除を確認します

接続を削除すると、接続と暗号化された認証情報が完全に削除されます。この操作は取り消せません。

トラブルシューティング

接続テストが失敗する

  • ホスト名が正しく、公開アクセス可能であることを確認してください
  • データベースのポートがファイアウォールで開放されていることを確認してください
  • ユーザー名とパスワードが正しいことを確認してください
  • BigQuery の場合、サービスアカウントに必要なロールがあることを確認してください

クエリがエラーを返す

  • データベースユーザーがクエリするテーブルに対して SELECT 権限を持っていることを確認してください
  • テーブル名とスキーマ名が正しいことを確認してください
  • BigQuery の場合、サービスアカウントが指定されたデータセットにアクセスできることを確認してください

接続がタイムアウトする

  • データベースが ModelMonkey のサーバーをブロックするファイアウォールの内側にある可能性があります
  • クラウドプロバイダーが IP 許可リストを必要としているか確認してください
  • 直接アクセスができない場合は、データベースプロキシや VPN の使用を検討してください

「SSRF Attempt Detected」エラー

  • プライベート IP アドレスや localhost には接続できません
  • データベースには公開アクセス可能なホスト名を使用してください
  • クラウドホスト型データベース (RDS、Cloud SQL など) は通常、パブリックエンドポイントを提供しています

ベストプラクティス

専用の読み取り専用ユーザーを使用する
SELECT 権限のみを持つ ModelMonkey 専用のデータベースユーザーを作成してください。これにより、認証情報が漏洩した場合の影響範囲を最小限に抑えられます。

SSL/TLS を有効にする
本番環境の PostgreSQL 接続では、常に SSL モード「Require」を使用してください。BigQuery 接続は常に暗号化されています。

テーブルアクセスを制限する
ModelMonkey がクエリする必要のあるテーブルとスキーマのみにアクセスを許可してください。スーパーユーザーや管理者アカウントの使用は避けてください。

わかりやすい接続名を使用する
接続名を明確にしてください (例: "Production Analytics"、"Staging Orders DB")。これにより、リクエストで簡単に参照できます。

定期的に接続を見直す
定期的に接続を監査し、不要になったものは削除してください。アクティブな接続が少ないほど、セキュリティの攻撃対象領域が小さくなります。