Openflow Connector for Google Driveを設定する

注釈

コネクタには、 コネクタ利用規約 が適用されます。

このトピックでは、Openflow Connector for Google Driveを設定する手順について説明します。

前提条件

  1. Googleドライブ用Openflowコネクタ を確認してください。

  2. Openflowを設定した ことを確認します。

認証情報を取得する

コネクタを設定するには、Snowflake OpenflowプロセッサーがGoogleからデータを読み取るための特定の権限とアカウント設定が必要です。このアクセス権は、サービスアカウントと、そのサービスアカウントとしてOpenflowが認証するためのキーを設定することで提供されます。詳細については、次をご参照ください。

Googleドライブの管理者として、以下の手順を実行します。

前提条件

以下の要件を満たしていることを確認します。

  • スーパー管理者権限を持つGoogleユーザーがいる

  • 以下のロールを持つGoogleクラウドプロジェクトがある:

    • 組織ポリシー管理者

    • 組織管理者

サービスアカウントのキー作成を有効にする

Googleはデフォルトでサービスアカウントのキー作成を無効にしています。Openflowがサービスアカウント JSON を使用するには、このキー作成ポリシーをオフにする必要があります。

  1. 組織ポリシー管理者ロールを持つスーパー管理者アカウントで Google Cloud Console にログインします。

  2. 組織内のプロジェクトではなく、組織に関連付けられたプロジェクトであることを確認します。

  3. Organization Policies をクリックします。

  4. Disable service account key creation ポリシーを選択します。

  5. Manage Policy をクリックし、適用をオフにします。

  6. Set Policy をクリックします。

サービスアカウントとキーを作成する

  1. Google Cloud Console を開き、サービスアカウントを作成するアクセス権が付与されたユーザーを使用して認証します。

  2. あなたが組織のプロジェクトに参加していることを確認します。

  3. 左のナビゲーションで、 IAM & Admin の下にある、 Service Accounts タブを選択します。

  4. Create Service Account をクリックします。

  5. サービスアカウント名を入力し、 Create and Continue をクリックします。

  6. Done をクリックします。サービスアカウントが一覧表示されたテーブルで、 OAuth 2 Client ID 列を探します。クライアント ID をコピーします。これは、次のセクションでドメイン全体の委任を設定するために必要になります。

  7. 新しく作成したサービスアカウントで、そのサービスアカウントが一覧表示されているテーブルの下のメニューをクリックし、 Manage keys を選択します。

  8. Add keyCreate new key の順に選択します。

  9. デフォルトの JSON を選択したまま、 Create をクリックします。

キーは.jsonファイルとしてブラウザーのDownloadsディレクトリにダウンロードされます。

一覧表示されたスコープに対してサービスアカウントにドメイン全体の委任を付与する

  1. Google Adminアカウントにログインします。

  2. Admin から Google Apps selector を選択します。

  3. 左のナビゲーションで、 Security を展開し、 AccessData control の順で選択し、 API Controls をクリックします。

  4. API Controls 画面で Manage domain wild delegation を選択します。

  5. Add new をクリックします。

  6. 「サービスアカウントとキーを作成する」セクションで取得した OAuth 2 クライアント ID と、以下のスコープを入力します。

  7. Authorize をクリックします。

Snowflakeアカウントを設定する

Snowflakeアカウント管理者として、以下のタスクを手動で、または下記に含まれるスクリプトを使用して実行します。

  1. 新しいロールを作成するか、既存のロールを使用して データベース権限 を付与します。

  2. タイプを SERVICE として、新しいSnowflakeサービスユーザーを作成します。

  3. Snowflakeサービスユーザーに、前の手順で作成したロールを付与します。

  4. ステップ2のSnowflake SERVICE ユーザーを key-pair auth で構成します。

  5. Snowflakeではこの手順を強く推奨します。Openflowがサポートするシークレットマネージャ(AWS、Azure、Hashicorpなど)を構成し、公開キーと秘密キーを秘密ストアに格納します。

    注釈

    何らかの理由でシークレットマネージャを使用したくない場合は、組織のセキュリティポリシーに従って、キーペア認証に使用する公開キーと秘密キーファイルを保護する責任があります。

    1. シークレットマネージャを構成したら、その認証方法を決定します。AWS 上では、Openflowに関連付けられた EC2 インスタンスロールが推奨されます。こうすることで、他の秘密を永続化する必要がなくなるからです。

    2. Openflowで、右上のハンバーガーメニューから、このシークレットマネージャに関連付けられたParameter Providerを構成します。 Controller Settings » Parameter Provider に移動し、パラメーターの値をフェッチします。

    3. この時点で、すべての認証情報を関連するパラメーターパスで参照することができるため、機密性の高い値をOpenflow内で永続化する必要はありません。

  6. 他のSnowflakeユーザーが、コネクタによって取り込まれた生の取り込みドキュメントやとテーブルへのアクセスを必要とする場合は(Snowflakeでのカスタム処理のためなど)、それらのユーザーにステップ1で作成したロールを付与します。

  7. コネクタが使用するウェアハウスを指定します。まずは最小のウェアハウスサイズから始め、複製するテーブルの数や転送するデータ量に応じて異なるサイズを試してみてください。テーブル数が大きい場合は、通常、ウェアハウスのサイズを大きくするよりも、 マルチクラスターウェアハウス を使用した方がスケーリングが向上します。

設定例

--The following script assumes you'll need to create all required roles, users, and objects.
--However, you may want to reuse some that are already in existence.

--Create a Snowflake service user to manage the connector
USE ROLE USERADMIN;
CREATE USER <openflow_service_user> TYPE=SERVICE COMMENT='Service user for Openflow automation';

--Create a pair of secure keys (public and private). For more information, see
--key-pair authentication. Store the private key for the user in a file to supply
--to the connector’s configuration. Assign the public key to the Snowflake service user:
ALTER USER <openflow_service_user> SET RSA_PUBLIC_KEY = '<pubkey>';


--Create a role to manage the connector and the associated data and
--grant it to that user
USE ROLE SECURITYADMIN;
CREATE ROLE <openflow_connector_admin_role>;
GRANT ROLE <openflow_connector_admin_role> TO USER <openflow_service_user>;


--The following block is for USE CASE 2 (Cortex connect) ONLY
--Create a role for read access to the cortex search service created by this connector.
--This role should be granted to any role that will use the service
CREATE ROLE <cortex_search_service_read_only_role>;
GRANT ROLE <cortex_search_service_read_only_role> TO ROLE <whatever_roles_will_access_search_service>;

--Create the database the data will be stored in and grant usage to the roles created
USE ROLE ACCOUNTADMIN; --use whatever role you want to own your DB
CREATE DATABASE IF NOT EXISTS <destination_database>;
GRANT USAGE ON DATABASE <destination_database> TO ROLE <openflow_connector_admin_role>;

--Create the schema the data will be stored in and grant the necessary privileges
--on that schema to the connector admin role:
USE DATABASE <destination_database>;
CREATE SCHEMA IF NOT EXISTS <destination_schema>;
GRANT USAGE ON SCHEMA <destination_schema> TO ROLE <openflow_connector_admin_role>;
GRANT CREATE TABLE, CREATE DYNAMIC TABLE, CREATE STAGE, CREATE SEQUENCE, CREATE CORTEX
SEARCH SERVICE ON SCHEMA <destination_schema> TO ROLE <openflow_connector_admin_role>;

--The following block is for CASE 2 (Cortex connect) ONLY
--Grant the Cortex read-only role access to the database and schema
GRANT USAGE ON DATABASE <destination_database> TO ROLE <cortex_search_service_read_only_role>;
GRANT USAGE ON SCHEMA <destination_schema> TO ROLE <cortex_search_service_read_only_role>;

--Create the warehouse this connector will use if it doesn't already exist. Grant the
--appropriate privileges to the connector admin role. Adjust the size according to your needs.
CREATE WAREHOUSE <openflow_warehouse>
WITH
   WAREHOUSE_SIZE = 'MEDIUM'
   AUTO_SUSPEND = 300
   AUTO_RESUME = TRUE;
GRANT USAGE, OPERATE ON WAREHOUSE <openflow_warehouse> TO ROLE <openflow_connector_admin_role>;
Copy

ユースケース1: コネクタ定義を使用してファイルのみを取り込む

コネクタ定義を使用して、次を行います。

  • 取り込んだファイルにカスタム処理を実行する

  • Google Driveのファイルと権限を取り込み、最新の状態に保つ

コネクタを設定する

データエンジニアとして、以下のタスクを実行してコネクタをインストールおよび構成します。

コネクタをインストールする

  1. Openflowの概要ページに移動します。 Featured connectors セクションで、 View more connectors を選択します。

  2. Openflowのコネクタページでコネクタを探し、 Add to runtime を選択します。

  3. Select runtime ダイアログで、 Available runtimes ドロップダウンリストからランタイムを選択します。

  4. Add を選択します。

    注釈

    コネクタをインストールする前に、コネクタが取り込んだデータを格納するためのデータベースとスキーマをSnowflakeで作成したことを確認します。

  5. Snowflakeアカウント認証情報でデプロイメントを認証し、Snowflakeアカウントへのランタイムアプリケーションのアクセスを許可するよう求められたられたら、 Allow を選択します。コネクタのインストールプロセスは数分で完了します。

  6. Snowflakeアカウント認証情報でランタイムを認証します。

コネクタプロセスグループが追加されたOpenflowキャンバスが表示されます。

コネクタを構成する

  1. インポートしたプロセスグループを右クリックし、 Parameters を選択します。

  2. Google DriveソースパラメーターGoogle Drive宛先パラメーターGoogle Drive取り込みパラメーター の説明に従って、必要なパラメーター値を入力します。

Google Driveソースパラメーター

パラメーター

説明

Google委任ユーザー

サービスアカウントで使用するユーザー

GCP サービスアカウント JSON

Google Cloud Consoleからダウンロードしたサービスアカウント JSON コネクタのGoogle APIs へのアクセスを許可します。

Google Drive宛先パラメーター

パラメーター

説明

宛先データベース

データが永続化されるデータベース。既にSnowflakeに存在している必要があります

宛先スキーマ

データが永続化されるスキーマ。既にSnowflakeに存在している必要があります

Snowflakeアカウント識別子

データが永続化されるSnowflakeアカウント名(形式: [organization-name]- [account-name])。

Snowflake認証ストラテジー

Snowflakeへの認証のストラテジー。可能な値: SPCS 上でフローを実行している場合は SNOWFLAKE_SESSION_TOKEN、 秘密キーを使ったアクセスを設定したい場合は KEY_PAIR

Snowflake秘密キー

認証に使用される RSA 秘密キー。RSA キーは、 PKCS8 標準に従って書式設定され、標準的な PEM ヘッダーとフッターを持つ必要があります。Snowflake秘密キーファイルまたはSnowflake秘密キーのどちらかが定義されている必要があります。

Snowflake秘密キーファイル

Snowflakeへの認証に使用される RSA 秘密キーを含むファイル。 PKCS8 標準に従って書式設定され、標準的な PEM ヘッダーとフッターを持ちます。ヘッダー行は -----BEGIN PRIVATE で始まります。 Reference asset チェックボックスを選択し、秘密キーファイルをアップロードします。

Snowflake秘密キーパスワード

Snowflake秘密キーファイルに関連付けられたパスワード

Snowflakeロール

クエリ実行時に使用されるSnowflakeロール

Snowflakeのユーザー名

Snowflakeインスタンスへの接続に使用するユーザー名

Snowflakeウェアハウス

クエリの実行に使用されるSnowflakeウェアハウス

Google Drive取り込みパラメーター

パラメーター

説明

Google Drive ID

コンテンツや更新を確認できるGoogle Shared Drive

Googleフォルダー名

オプションで、Google Driveのフォルダー識別子(人間が読めるフォルダー名)を設定して、受信ファイルを以下の基準でフィルターできます。すべてのファイルタイプを希望する場合は、「空の文字列を設定する」を選択します。設定すると、プロバイダーが指定したフォルダーまたはサブフォルダー内のファイルのみが検索されます。空白または未設定の場合、フォルダーフィルターは適用されず、ドライブの下にあるすべてのファイルが取得されます。

Googleドメイン

Google GroupsとDriveドライブが存在するGoogle Workspace Domain。

取り込むファイルの拡張子

取り込むファイルの拡張子を指定するコンマ区切りリスト。コネクタは、可能であれば最初にファイルを PDF 形式に変換しようとします。それにもかかわらず、元のファイル拡張子に対して拡張子チェックが実行されます。指定されたファイル拡張子の一部がCortex Parse Documentでサポートされていない場合、コネクタはそれらのファイルを無視し、イベントログに警告メッセージを記録して、他のファイルの処理を続行します。

Snowflakeファイルのハッシュテーブル名

ファイルコンテンツのハッシュを格納するために使用される内部テーブルで、コンテンツが変更されていない場合にそのコンテンツが更新されないようにします。

  1. プレーンを右クリックし、 Enable all Controller Services を選択します。

  2. インポートしたプロセスグループを右クリックし、 Start を選択します。コネクタがデータの取り込みを開始します。

ユースケース2: コネクタ定義を使用してファイルを取り込み、Cortexで処理を実行する

事前定義されたフロー定義を使用して、次を行います。

  • 組織のGoogle Drive内の公開ドキュメント用に AI アシスタントを作成します。

  • AI アシスタントが組織のGoogle Driveで指定されたアクセス制御を順守できるようにします。

コネクタを設定する

データエンジニアとして、以下のタスクを実行してコネクタをインストールおよび構成します。

コネクタをインストールする

  1. Openflowの概要ページに移動します。 Featured connectors セクションで、 View more connectors を選択します。

  2. Openflowのコネクタページでコネクタを探し、 Add to runtime を選択します。

  3. Select runtime ダイアログで、 Available runtimes ドロップダウンリストからランタイムを選択します。

  4. Add を選択します。

    注釈

    コネクタをインストールする前に、コネクタが取り込んだデータを格納するためのデータベースとスキーマをSnowflakeで作成したことを確認します。

  5. Snowflakeアカウント認証情報でデプロイメントを認証し、Snowflakeアカウントへのランタイムアプリケーションのアクセスを許可するよう求められたられたら、 Allow を選択します。コネクタのインストールプロセスは数分で完了します。

  6. Snowflakeアカウント認証情報でランタイムを認証します。

コネクタプロセスグループが追加されたOpenflowキャンバスが表示されます。

コネクタを構成する

  1. インポートしたプロセスグループを右クリックし、 Parameters を選択します。

  2. Google Drive Cortex ConnectソースパラメーターGoogle Drive Cortex Connect宛先パラメーター および Google Drive Cortex Connect取り込みパラメーター の説明に従って、必要なパラメーター値を入力します。

Google Drive Cortex Connectソースパラメーター

パラメーター

説明

Google委任ユーザー

サービスアカウントで使用するユーザー

GCP サービスアカウント JSON

Google Cloud Consoleからダウンロードしたサービスアカウント JSON コネクタのGoogle APIs へのアクセスを許可します。

Google Drive Cortex Connect宛先パラメーター

パラメーター

説明

宛先データベース

データが永続化されるデータベース。既にSnowflakeに存在している必要があります

宛先スキーマ

データが永続化されるスキーマ。既にSnowflakeに存在している必要があります

Snowflakeアカウント識別子

データが永続化されるSnowflakeアカウント名(形式: [organization-name]- [account-name])。

Snowflake認証ストラテジー

Snowflakeへの認証のストラテジー。可能な値: SPCS 上でフローを実行している場合は SNOWFLAKE_SESSION_TOKEN、 秘密キーを使ったアクセスを設定したい場合は KEY_PAIR

Snowflake秘密キー

認証に使用される RSA 秘密キー。RSA キーは、 PKCS8 標準に従って書式設定され、標準的な PEM ヘッダーとフッターを持つ必要があります。Snowflake秘密キーファイルまたはSnowflake秘密キーのどちらかが定義されている必要があります。

Snowflake秘密キーファイル

Snowflakeへの認証に使用される RSA 秘密キーを含むファイル。 PKCS8 標準に従って書式設定され、標準的な PEM ヘッダーとフッターを持ちます。ヘッダー行は -----BEGIN PRIVATE で始まります。 Reference asset チェックボックスを選択し、秘密キーファイルをアップロードします。

Snowflake秘密キーパスワード

Snowflake秘密キーファイルに関連付けられたパスワード

Snowflakeロール

クエリ実行時に使用されるSnowflakeロール

Snowflakeのユーザー名

Snowflakeインスタンスへの接続に使用するユーザー名

Snowflakeウェアハウス

クエリの実行に使用されるSnowflakeウェアハウス

Google Drive Cortex Connect取り込みパラメーター

パラメーター

説明

Google Drive ID

コンテンツや更新を確認できるGoogle Shared Drive

Googleフォルダー名

オプションで、Google Driveのフォルダー識別子(人間が読めるフォルダー名)を設定して、受信ファイルを以下の基準でフィルターできます。すべてのファイルタイプを希望する場合は、「空の文字列を設定する」を選択します。

設定すると、プロバイダーが指定したフォルダーまたはサブフォルダー内のファイルのみが検索されます。空白または未設定の場合、フォルダーフィルターは適用されず、ドライブの下にあるすべてのファイルが取得されます。

Googleドメイン

Google GroupsとDriveドライブが存在するGoogle Workspace Domain。

OCR モード

Cortex PARSE_DOCUMENT 関数でファイルを解析するときに使用する OCR モード。値は OCR または LAYOUT のいずれかになります。

取り込むファイルの拡張子

取り込むファイルの拡張子を指定するコンマ区切りリスト。コネクタは、可能であれば最初にファイルを PDF 形式に変換しようとします。それにもかかわらず、元のファイル拡張子に対して拡張子チェックが実行されます。指定されたファイル拡張子の一部がCortex Parse Documentでサポートされていない場合、コネクタはそれらのファイルを無視し、イベントログに警告メッセージを記録して、他のファイルの処理を続行します。

Snowflakeファイルのハッシュテーブル名

ファイルコンテンツのハッシュを格納するために使用される内部テーブルで、コンテンツが変更されていない場合にそのコンテンツが更新されないようにします。

Snowflake Cortex Search Serviceユーザーロール

Cortex Search serviceの使用権限を割り当てられたロールの識別子。

  1. プレーンを右クリックし、 Enable all Controller Services を選択します。

  2. インポートしたプロセスグループを右クリックし、 Start を選択します。コネクタがデータの取り込みを開始します。

  3. Cortex Search serviceをクエリする

ユースケース3: コネクタ定義をカスタマイズする

コネクタ定義をカスタマイズして、次を実行します。

  • Document AI で、取り込んだファイルを処理します。

  • 取り込んだファイルにカスタム処理を実行します。

コネクタを設定する

データエンジニアとして、以下のタスクを実行してコネクタをインストールおよび構成します。

コネクタをインストールする

  1. Openflowの概要ページに移動します。 Featured connectors セクションで、 View more connectors を選択します。

  2. Openflowのコネクタページでコネクタを探し、 Add to runtime を選択します。

  3. Select runtime ダイアログで、 Available runtimes ドロップダウンリストからランタイムを選択します。

  4. Add を選択します。

    注釈

    コネクタをインストールする前に、コネクタが取り込んだデータを格納するためのデータベースとスキーマをSnowflakeで作成したことを確認します。

  5. Snowflakeアカウント認証情報でデプロイメントを認証し、Snowflakeアカウントへのランタイムアプリケーションのアクセスを許可するよう求められたられたら、 Allow を選択します。コネクタのインストールプロセスは数分で完了します。

  6. Snowflakeアカウント認証情報でランタイムを認証します。

コネクタプロセスグループが追加されたOpenflowキャンバスが表示されます。

コネクタを構成する

  1. コネクタ定義をカスタマイズします。

    1. 以下のプロセスグループを削除します。

      • Check If Duplicate Content

      • Snowflake StageとParse PDF

      • Snowflake Cortexを更新する

    2. Process Google Drive Metadata プロセスグループの出力にカスタム処理を添付します。各フローファイルは、1つのGoogle Driveファイルの変更を表します。フローファイルの属性については、 Fetch Google Drive Metadata ドキュメントをご参照ください。

  2. プロセスグループのパラメーターを入力します。 ユースケース1: コネクタ定義を使用してファイルのみを取り込む の場合と同じ手順に従います。コネクタ定義を変更した後、すべてのパラメーターが必要になるとは限らないことに注意してください。

フローを実行する

  1. フローを実行します。

    1. プロセスグループを開始します。フローでは、Snowflake内部に必要なオブジェクトをすべて作成します。

    2. インポートしたプロセスグループを右クリックし、 開始 を選択します。

  2. Cortex Search serviceをクエリする

Cortex Search serviceをクエリする

Cortex Search サービスを使用して、Google Drive内のドキュメントとチャットしたりクエリしたりするためのチャットおよび検索アプリケーションを構築できます。

コネクタをインストールして構成し、Google Driveからコンテンツの取り込みを開始すると、Cortex Searchサービスをクエリできるようになります。Cortex Searchの使用に関する詳細については、 Cortex Search Serviceをクエリする をご参照ください。

応答をフィルターする

Cortex Searchサービスからの応答を特定のユーザーがGoogle Driveでアクセスできるドキュメントに制限するには、Cortex Searchクエリ時にユーザーのユーザー ID、またはメールアドレスを含むフィルターを指定できます。例えば、 filter.@contains.user_ids または filter.@contains.user_emails のようにします。コネクタによって作成されるCortex Searchサービスの名前は、スキーマ Cortexsearch_service です。

Googleドライブから取り込んだファイルをCortex Searchサービスにクエリするために、 SQL ワークシートで以下の SQL コードを実行します。

以下を置き換えます。

  • application_instance_name: データベースとコネクタアプリケーションインスタンスの名前。

  • user_emailID: 応答をフィルターしたいユーザーのメール ID。

  • your_question: 応答を得たい質問。

  • number_of_results: 応答で返す結果の最大数。最大値は1000で、デフォルト値は10です。

SELECT PARSE_JSON(
  SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
    '<application_instance_name>.cortex.search_service',
      '{
        "query": "<your_question>",
         "columns": ["chunk", "web_url"],
         "filter": {"@contains": {"user_emails": "<user_emailID>"} },
         "limit": <number_of_results>
       }'
   )
)['results'] AS results
Copy

columns に入力できる値の完全なリストを以下に示します。

列名

説明

full_name

String

Google Driveドキュメントルートからのファイルへのフルパス。例: folder_1/folder_2/file_name.pdf

web_url

String

Google Driveのオリジナルファイルをブラウザーで表示する URL。

last_modified_date_time

String

項目の最新変更日時。

chunk

String

Cortex Searchのクエリにマッチしたドキュメントのテキスト。

user_ids

配列

ドキュメントにアクセスできる Microsoft 365ユーザー IDs の配列。ドキュメントに割り当てられているすべてのMicrosoft 365グループのユーザー IDs も含まれます。特定のユーザー ID を探すには、 ユーザーを取得する をご参照ください。

user_emails

配列

ドキュメントにアクセスできるMicrosoft 365ユーザーのメール IDs の配列。ドキュメントに割り当てられているすべてのMicrosoft 365グループのユーザーメール IDs も含まれます。

例: AI アシスタントに人事(HR)情報をクエリする

Cortex Searchを使用して、オンボーディング、行動規範、チームプロセス、組織ポリシーなど、 HR の最新バージョンの情報とチャットする従業員向けの AI アシスタントをクエリできます。応答フィルターを使用すると、Google Driveで構成されたアクセス制御を順守しながら、 HR チームメンバーに従業員契約のクエリを許可することもできます。

Google Driveから取り込まれたファイルでCortex Searchサービスをクエリするために、 SQL ワークシート で以下を実行します。データベースをアプリケーションインスタンス名として、スキーマを Cortex として選択します。

以下を置き換えます。

  • application_instance_name: データベースとコネクタアプリケーションインスタンスの名前。

  • user_emailID: 応答をフィルターしたいユーザーのメール ID。

SELECT PARSE_JSON(
     SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
          '<application_instance_name>.cortex.search_service',
          '{
             "query": "What is my vacation carry over policy?",
             "columns": ["chunk", "web_url"],
             "filter": {"@contains": {"user_emails": "<user_emailID>"} },
             "limit": 1
          }'
     )
 )['results'] AS results
Copy