设置 Openflow Connector for Google Drive

备注

使用该连接器需遵守 连接器条款

本主题介绍 Openflow Connector for Google Drive 的设置步骤。

先决条件

  1. 确保您已查看 Openflow Connector for Google Drive

  2. 确保您已 设置 Openflow

获取凭据

设置该连接器需要特定的权限和账户设置,以使 Snowflake Openflow 处理器能够从 Google 读取数据。这种访问权限的授予在一定程度上需要设置服务账户和密钥,以便 Openflow 能够以该服务账户进行身份验证。有关更多信息,请参阅:

  • 配置对 Google Cloud Search API 的访问权限 (https://developers.google.com/cloud-search/docs/guides/project-setup#create_service_account_credentials)

  • 将全域权限委派给服务账户 (https://developers.google.com/identity/protocols/oauth2/service-account#delegatingauthority)

作为 Google 云端硬盘管理员,请执行以下步骤:

先决条件

确保您满足以下要求:

  • 您有拥有超级管理员权限的 Google 用户

  • 您有具有以下角色的 Google Cloud 项目:

    • 组织策略管理员

    • 组织管理员

启用服务账户密钥创建

默认情况下,Google 会禁用服务账户密钥创建。要使 Openflow 使用服务账户 JSON,必须关闭此密钥创建策略。

  1. 使用具有组织策略管理员角色的超级管理员账户登录 Google Cloud Console (https://console.cloud.google.com/)。

  2. 确保您参与的是与组织相关的项目,而不是组织中的项目。

  3. 点击 Organization Policies

  4. 选择 Disable service account key creation 策略。

  5. 点击 Manage Policy 并关闭强制执行。

  6. 点击 Set Policy

创建服务账户和密钥

  1. 打开 Google Cloud Console (https://console.cloud.google.com/),使用被授予服务账户创建访问权限的用户进行身份验证。

  2. 确保您参与组织的项目。

  3. 在左侧导航栏的 IAM & Admin 下方,选择 Service Accounts 选项卡。

  4. 点击 Create Service Account

  5. 输入服务账户名称,然后点击 Create and Continue

  6. 点击 Done。在列出服务账户的表中,找到 OAuth 2 Client ID 列。复制客户端 ID,因为稍后在下一部分中设置全域委派时需要该 ID。

  7. 在新建的服务账户上,点击表下方的菜单,其中列出了该服务账户的服务账户,然后选择 Manage keys

  8. 选择 Add key,然后选择 Create new key

  9. 保留默认选择 JSON 并点击 Create

密钥将以 .json 文件的形式下载到浏览器的 Downloads 目录。

为服务账户授予所列作用域的全域委派

  1. 登录您的 Google 管理员账户。

  2. Google Apps selector 中选择 Admin

  3. 在左侧导航栏中,依次展开 SecurityAccess 并选择 Data control,然后点击 API Controls

  4. 在 API Controls 屏幕上,选择 Manage domain wild delegation

  5. 点击 Add new

  6. 输入从“Create Service Account and Key”部分获取的 OAuth 2 客户端 ID,以及以下作用域:

    • https://www.googleapis.com/auth/drive (https://www.googleapis.com/auth/drive)

    • https://www.googleapis.com/auth/drive.metadata.readonly (https://www.googleapis.com/auth/drive.metadata.readonly)

    • https://www.googleapis.com/auth/admin.directory.group.member.readonly (https://www.googleapis.com/auth/admin.directory.group.member.readonly)

    • https://www.googleapis.com/auth/admin.directory.group.readonly (https://www.googleapis.com/auth/admin.directory.group.readonly)

    • https://www.googleapis.com/auth/drive.file (https://www.googleapis.com/auth/drive.file)

    • https://www.googleapis.com/auth/drive.metadata (https://www.googleapis.com/auth/drive.metadata)

  7. 点击 Authorize

设置 Snowflake 账户

作为 Snowflake 账户管理员,手动或使用下面附带的脚本执行以下任务:

  1. 创建新角色或使用现有角色并授予 数据库权限

  2. 创建类型为 SERVICE 的新 Snowflake 服务用户。

  3. 向该 Snowflake 服务用户授予您在前面步骤中创建的角色。

  4. 为第 2 步中创建的 Snowflake SERVICE 用户配置 密钥对身份验证

  5. Snowflake 强烈建议执行此步骤。配置 Openflow 支持的密钥管理器(例如 AWS、Azure 和 Hashicorp),并将公钥和私钥存储在密钥存储库中。

    备注

    如果您出于任何原因不希望使用密钥管理器,则您有责任根据组织的安全策略保护用于密钥对身份验证的公钥和私钥文件。

    1. 配置密钥管理器后,确定如何对其进行身份验证。在 AWS 中,建议您使用与 Openflow 关联的 EC2 实例角色,因为这样就无需保留其他密钥。

    2. 在 Openflow 中,从右上角的汉堡菜单中配置与此密钥管理器关联的参数提供商。导航到 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 云端硬盘文件和权限并使其保持最新状态

设置连接器

作为数据工程师,执行以下任务以安装和配置连接器:

安装连接器

  1. 导航到 Openflow“Overview”页面。在 Featured connectors 部分中,选择 View more connectors

  2. 在 Openflow 连接器页面上,找到连接器并选择 Add to runtime

  3. Select runtime 对话框中,从 Available runtimes 下拉列表中选择您的运行时。

  4. 选择 Add

    备注

    在安装连接器之前,请确保在 Snowflake 中为连接器创建了数据库和架构,用于存储引入的数据。

  5. 使用您的 Snowflake 账户凭据对部署进行身份验证,并在系统提示时选择 Allow,以允许运行时应用程序访问您的 Snowflake 账户。连接器安装过程需要几分钟才能完成。

  6. 使用您的 Snowflake 账户凭据进行运行时身份验证。

此时将显示 Openflow 画布,其中添加了连接器进程组。

配置连接器

  1. 右键点击导入的进程组并选择 Parameters

  2. 根据 Google 云端硬盘源参数Google 云端硬盘目标参数Google 云端硬盘引入参数 中的描述,输入所需的参数值。

Google 云端硬盘源参数

参数

描述

Google 委派用户

服务账户使用的用户

GCP 服务账户 JSON

从 Google Cloud Console 下载的服务账户 JSON,允许在连接器中访问 Google APIs

Google 云端硬盘目标参数

参数

描述

目标数据库

用于永久保存数据的数据库。它必须已经存在于 Snowflake 中

目标架构

用于永久保存数据的架构。它必须已经存在于 Snowflake 中

Snowflake 账户标识符

Snowflake 账户名称格式为 [organization-name]-[account-name],数据永久保存在其中

Snowflake 身份验证策略

对 Snowflake 进行身份验证的策略。可能的值:SNOWFLAKE_SESSION_TOKEN – 当我们在 SPCS 上运行流时;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 云端硬盘引入参数

参数

描述

Google 云端硬盘 ID

可供关注内容和更新的 Google 共享云端硬盘

Google 文件夹名称

或者,可以设置 Google 云端硬盘文件夹标识符(人类可读的文件夹名称),据此筛选传入的文件。如果需要所有文件类型,则选择“Set Empty String”。设置后,仅检索提供的文件夹或子文件夹中的文件。如果为空或未设置,则不应用任何文件夹筛选,而是检索云端硬盘下的所有文件。

Google 域名

Google 群组和云端硬盘所在的 Google Workspace 域名。

要引入的文件扩展名

以逗号分隔的列表,用于指定要引入的文件扩展名。如果可能,连接器会尝试先将文件转换为 PDF 格式。尽管如此,系统仍会基于原始文件扩展名执行扩展名检查。如果 Cortex Parse Document 不支持某些指定的文件扩展名,则连接器将忽略这些文件、在事件日志中记录警告消息,并继续处理其他文件。

Snowflake 文件哈希表名

内部表,用于存储文件内容哈希值,以防止在内容未变更时执行更新操作。

  1. 右键点击平面并选择 Enable all Controller Services

  2. 右键点击导入的进程组并选择 Start。连接器开始数据引入。

用例 2:使用连接器定义引入文件,并使用 Cortex 执行处理

使用预定义的流定义以执行以下操作:

  • 为组织 Google 云端硬盘内的公共文档创建 AI 助手。

  • 使您的 AI 助手遵守组织 Google 云端硬盘中指定的访问控制。

设置连接器

作为数据工程师,执行以下任务以安装和配置连接器:

安装连接器

  1. 导航到 Openflow“Overview”页面。在 Featured connectors 部分中,选择 View more connectors

  2. 在 Openflow 连接器页面上,找到连接器并选择 Add to runtime

  3. Select runtime 对话框中,从 Available runtimes 下拉列表中选择您的运行时。

  4. 选择 Add

    备注

    在安装连接器之前,请确保在 Snowflake 中为连接器创建了数据库和架构,用于存储引入的数据。

  5. 使用您的 Snowflake 账户凭据对部署进行身份验证,并在系统提示时选择 Allow,以允许运行时应用程序访问您的 Snowflake 账户。连接器安装过程需要几分钟才能完成。

  6. 使用您的 Snowflake 账户凭据进行运行时身份验证。

此时将显示 Openflow 画布,其中添加了连接器进程组。

配置连接器

  1. 右键点击导入的进程组并选择 Parameters

  2. 根据 Google 云端硬盘 Cortex Connect 源参数Google 云端硬盘 Cortex Connect 目标参数Google 云端硬盘 Cortex Connect 引入参数 中的描述,输入所需的参数值。

Google 云端硬盘 Cortex Connect 源参数

参数

描述

Google 委派用户

服务账户使用的用户

GCP 服务账户 JSON

从 Google Cloud Console 下载的服务账户 JSON,允许在连接器中访问 Google APIs

Google 云端硬盘 Cortex Connect 目标参数

参数

描述

目标数据库

用于永久保存数据的数据库。它必须已经存在于 Snowflake 中

目标架构

用于永久保存数据的架构。它必须已经存在于 Snowflake 中

Snowflake 账户标识符

Snowflake 账户名称格式为 [organization-name]-[account-name],数据永久保存在其中

Snowflake 身份验证策略

对 Snowflake 进行身份验证的策略。可能的值:SNOWFLAKE_SESSION_TOKEN – 当我们在 SPCS 上运行流时;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 云端硬盘 Cortex Connect 引入参数

参数

描述

Google 云端硬盘 ID

可供关注内容和更新的 Google 共享云端硬盘

Google 文件夹名称

或者,可以设置 Google 云端硬盘文件夹标识符(人类可读的文件夹名称),据此筛选传入的文件。如果需要所有文件类型,则选择“Set Empty String”。

设置后,仅检索提供的文件夹或子文件夹中的文件。如果为空或未设置,则不应用任何文件夹筛选,而是检索云端硬盘下的所有文件。

Google 域名

Google 群组和云端硬盘所在的 Google Workspace 域名。

OCR 模式

使用 Cortex PARSE_DOCUMENT 函数解析文件时使用的 OCR 模式。该值可以是 OCRLAYOUT

要引入的文件扩展名

以逗号分隔的列表,用于指定要引入的文件扩展名。如果可能,连接器会尝试先将文件转换为 PDF 格式。尽管如此,系统仍会基于原始文件扩展名执行扩展名检查。如果 Cortex Parse Document 不支持某些指定的文件扩展名,则连接器将忽略这些文件、在事件日志中记录警告消息,并继续处理其他文件。

Snowflake 文件哈希表名

内部表,用于存储文件内容哈希值,以防止在内容未变更时执行更新操作。

Snowflake Cortex Search 服务用户角色

获分配 Cortex Search 服务使用权限的角色的标识符。

  1. 右键点击平面并选择 Enable all Controller Services

  2. 右键点击导入的进程组并选择 Start。连接器开始数据引入。

  3. 查询 Cortex Search 服务

用例 3:自定义连接器定义

自定义连接器定义以执行以下操作:

  • 使用 Document AI 处理引入的文件。

  • 对引入的文件执行自定义处理。

设置连接器

作为数据工程师,执行以下任务以安装和配置连接器:

安装连接器

  1. 导航到 Openflow“Overview”页面。在 Featured connectors 部分中,选择 View more connectors

  2. 在 Openflow 连接器页面上,找到连接器并选择 Add to runtime

  3. Select runtime 对话框中,从 Available runtimes 下拉列表中选择您的运行时。

  4. 选择 Add

    备注

    在安装连接器之前,请确保在 Snowflake 中为连接器创建了数据库和架构,用于存储引入的数据。

  5. 使用您的 Snowflake 账户凭据对部署进行身份验证,并在系统提示时选择 Allow,以允许运行时应用程序访问您的 Snowflake 账户。连接器安装过程需要几分钟才能完成。

  6. 使用您的 Snowflake 账户凭据进行运行时身份验证。

此时将显示 Openflow 画布,其中添加了连接器进程组。

配置连接器

  1. 自定义连接器定义。

    1. 移除以下进程组:

      • 检查内容是否重复

      • Snowflake 暂存区和解析 PDF

      • 更新 Snowflake Cortex

    2. 将任何自定义处理附加到 处理 Google 云端硬盘元数据 进程组的输出。每个 FlowFile 代表一项 Google 云端硬盘文件更改。FlowFile 属性可以在 Fetch Google Drive Metadata 文档中查看。

  2. 填充进程组参数。遵循 用例 1 的进程:仅使用连接器定义引入文件。请注意,修改连接器定义后,可能并不需要所有参数。

运行流

  1. 运行流。

    1. 启动进程组。该流将在 Snowflake 中创建所有必需的对象。

    2. 右键点击导入的进程组并选择 Start

  2. 查询 Cortex Search 服务

查询 Cortex Search 服务

您可以使用 Cortex Search 服务构建聊天和搜索应用程序,以便与 Google 云端硬盘中的文档聊天或查询文档。

安装和配置连接器并开始从 Google 云端硬盘引入内容后,您就可以查询 Cortex Search 服务。有关使用 Cortex Search 的更多信息,请参阅 查询 Cortex Search 服务

筛选器响应

要将 Cortex Search 服务的响应限制为 Google 云端硬盘中特定用户可以访问的文档,可以在查询 Cortex Search 时指定一个包含用户 ID 或电子邮件地址的筛选器。例如,filter.@contains.user_idsfilter.@contains.user_emails。连接器创建的 Cortex Search 服务名称是 search_service 并位于 Cortex 架构中。

在 SQL 工作表中运行以下 SQL 代码,利用从 Google 云端硬盘引入的文件查询 Cortex Search 服务。

替换以下内容:

  • 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

字符串

Google 云端硬盘文档根目录中文件的完整路径。示例:folder_1/folder_2/file_name.pdf

web_url

字符串

在浏览器中显示原始 Google 云端硬盘文件的 URL。

last_modified_date_time

字符串

项目最近一次修改的日期和时间。

chunk

字符串

与 Cortex Search 查询匹配的文档中的一段文本。

user_ids

数组

可访问文档的 Microsoft 365 用户 IDs ID 的数组。它还包括分配给文档的所有 Microsoft 365 组的用户 IDs。要查找特定用户 ID,请参阅 获取用户 (https://learn.microsoft.com/en-us/graph/api/user-get?view=graph-rest-1.0&tabs=http)。

user_emails

数组

可访问文档的 Microsoft 365 用户电子邮件 IDs 的数组。它还包括分配给文档的所有 Microsoft 365 组的用户电子邮件 IDs。

示例:向 AI 助手查询人力资源 (HR) 信息

您可以使用 Cortex Search 查询 AI 助手,为员工聊天提供最新版本的 HR 信息,如入职、行为规范、团队流程和组织政策等。使用响应筛选器,您还可以允许 HR 团队成员查询员工合同,同时遵守 Google 云端硬盘中配置的访问控制。

SQL 工作表 中运行以下内容,利用从 Google 云端硬盘引入的文件查询 Cortex Search 服务。选择数据库为应用程序实例名称,架构为 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
语言: 中文