将 Looker (Google Cloud Core) 连接到您的数据库

如需查询数据,请将 Looker (Google Cloud Core) 实例连接到数据库。 本指南介绍了如何使用受支持的方言以及如何配置特定的连接选项。

对于使用专用连接的实例,您可能需要完成额外配置才能访问数据库。具体配置取决于您所使用的 Looker (Google Cloud Core) 实例的网络设置。

设置数据库连接

Looker (Google Cloud Core) 必须连接到数据库才能启用数据探索。请参阅支持的方言列表,了解 Looker (Google Cloud Core) 支持哪些方言。

如果您拥有以下任一权限,则可以在 Looker (Google Cloud Core) 实例中创建数据库连接:

您可以按照 Looker (Google Cloud Core) 实例中动态显示的设置 Looker 指南来连接数据库,也可以按照特定于方言的文档页面中列出的步骤操作。大多数设置对于大多数数据库方言都是通用的。如需了解 Looker 连接设置窗口中的常见字段,请参阅将 Looker 连接到您的数据库文档页面。

如果您想使用以下任一选项设置 Looker (Google Cloud Core) 连接,则需要执行其他步骤:

使用应用默认凭证连接到 BigQuery 数据库

在设置与 BigQuery 标准 SQL 数据库的连接时,Looker (Google Cloud Core) 实例可以使用应用默认凭证 (ADC) 进行身份验证。使用 ADC 时,连接将使用 Looker (Google Cloud Core) 项目的服务账号的凭据向数据库进行身份验证。

如需将 ADC 与 BigQuery 数据库搭配使用,请在 Looker 实例的连接设置页面的身份验证字段中选择应用默认凭证。如需了解完整流程,请参阅将 Looker 连接到 BigQuery 数据库的相关文档。

如果您的 Looker (Google Cloud Core)实例将永久性派生表与 BigQuery 数据集搭配使用,您还必须向 Looker 服务账号授予 BigQuery Data Editor Identity and Access Management (IAM) 角色。

如果您要连接到与 Looker (Google Cloud Core)实例位于不同项目中的 BigQuery 数据库,则需要进行一些额外的设置。请参阅将应用默认凭证与不同 Google Cloud 项目中的 BigQuery 数据库搭配使用部分。

服务账号模拟

如果您想使用 Looker (Google Cloud Core)项目服务账号以外的服务账号向 BigQuery 数据库进行身份验证,可以在模拟服务账号字段中输入其他服务账号或以逗号分隔的服务账号链,从而创建委托请求流。Looker (Google Cloud Core) 服务账号会自动用作链中的第一个服务账号,无需添加到该字段中。链中的最后一个服务账号(也称为模拟服务账号)是向数据库进行身份验证的服务账号。

使用服务账号模拟时,请执行以下操作:

BigQuery 政策标记和动态数据遮盖

当 Looker (Google Cloud Core)使用 ADC 或服务账号连接到 BigQuery 时,BigQuery 不会收到单个 Looker 用户凭证。由于 BigQuery 只能看到所有查询的一个身份,因此内置的 BigQuery 列级安全性(政策标记和数据遮盖)无法对每个 Looker 用户应用不同的访问权限或遮盖规则。

如需使用 Looker (Google Cloud Core)和 BigQuery 实现动态数据遮盖,请考虑以下架构选项之一:

  • 应用层脱敏(支持 ADC 和服务账号):维护使用 ADC 或服务账号的单个数据库连接,并通过使用由从身份提供方映射的用户属性驱动的 LookML CASE WHEN 语句,在 LookML 语义层内应用数据脱敏逻辑。
  • 数据库层级遮盖(需要 OAuth):将 Looker 到 BigQuery 的连接配置为使用 OAuth 而不是 ADC。OAuth 会将每个最终用户的个人凭证直接传递给 BigQuery,从而让 BigQuery 能够原生评估并强制执行每个用户的政策标记和数据遮盖规则。

将应用默认凭证与不同 Google Cloud 项目中的 BigQuery 数据库搭配使用

对于位于 Looker (Google Cloud Core) 实例所在项目之外的 BigQuery 标准 SQL 数据库,使用 ADC 的步骤与在同一项目中设置连接的步骤相同。不过,在 Looker (Google Cloud Core) 实例中设置连接之前,Looker (Google Cloud Core) 项目的服务账号必须具有以下 IAM 角色:

如果 Looker (Google Cloud Core)服务账号在包含 BigQuery 数据集的项目中还没有 IAM 角色,请在授予该项目中的角色时使用服务账号的电子邮件地址。如需查找服务账号的邮箱,请前往 Google Cloud 控制台中的 IAM 页面,然后选中包括 Google 提供的角色授权复选框。电子邮件地址的格式为 service-<project number>@gcp-sa-looker.。使用该电子邮件地址向服务账号授予适当的角色。

授予适当的角色后,请按照使用 ADC 的步骤操作。

现在,您可以将 ADC 与此 BigQuery 标准 SQL 数据库搭配使用。连接设置页面中指定的服务账号所关联的项目将用于结算,并作为默认项目。

使用应用默认凭证连接到 Cloud SQL 数据库

Looker (Google Cloud Core)实例可以使用 ADC 对 Cloud SQL 数据库(Cloud SQL for PostgreSQL 或 Cloud SQL for MySQL)的连接进行身份验证。当您使用 ADC 向 Cloud SQL 数据库进行身份验证时,运行 Cloud SQL 数据库的 Google Cloud 项目就是 Looker 查询的结算项目。

对于使用 ADC 的 Cloud SQL 的 Looker 连接,ADC 会模拟服务账号或服务账号链来访问您的数据库。创建 Looker 与数据库的连接时,您可以使用 IAM 数据库用户名字段指定 ADC 将模拟的服务账号或服务账号链。您创建 Looker (Google Cloud Core) 实例时自动创建的 Looker 服务账号会自动用作链中的第一个服务账号,无需添加到该字段中。

如果您想使用 Looker 服务账号以外的服务账号向 Cloud SQL 数据库进行身份验证,可以创建一个委托请求流程,方法是在 IAM 数据库用户名字段中输入另一个服务账号或以逗号分隔的服务账号链。

链中的最后一个服务账号(也称为模拟服务账号)是向数据库进行身份验证的账号,此账号必须作为用户添加到 Cloud SQL 数据库中。如果您将 Looker 服务账号用作链中的最后一个服务账号(方法是将 IAM 数据库用户名字段留空),则必须将 Looker 服务账号添加为 Cloud SQL 数据库的用户。

以下是使用 ADC 将 Cloud SQL for PostgreSQL 或 Cloud SQL for MySQL 数据库连接到 Looker 的常规步骤:

  1. 将模拟的服务账号添加到 Cloud SQL 数据库。
  2. 在 Cloud SQL 数据库上设置服务账号模拟。
  3. 连接到数据库,以便为 Cloud SQL for PostgreSQL 或 Cloud SQL for MySQL 运行其他配置命令。
  4. 创建与数据库的 Looker 连接。

将模拟服务账号添加到 Cloud SQL 数据库

创建 Looker 与数据库的连接时,您可以使用 IAM 数据库用户名字段指定 ADC 将模拟的服务账号或服务账号链,以便对数据库执行操作。模拟链中的最后一个服务账号被视为模拟的服务账号。

如需将 ADC 与 Cloud SQL 搭配使用,您必须将模拟的服务账号添加到 Cloud SQL 数据库:

  • 在默认情况下,如果您将 IAM 数据库用户名字段留空,ADC 将会模拟 Looker 服务账号。在这种情况下,Looker 服务账号是被模拟的服务账号,因此您需要将 Looker 服务账号添加到 Cloud SQL 数据库。如需了解 Looker 服务账号以及查看 Looker 服务账号电子邮件地址的过程,请参阅创建 Looker (Google Cloud Core) 实例文档页面。
  • 如果您指定了 Looker 服务账号以外的服务账号,或者在 IAM 数据库用户名字段中指定了服务账号链,则必须将模拟链中的最后一个服务账号添加到 Cloud SQL 数据库。

如需向 Cloud SQL 数据库添加服务账号,您必须拥有 Cloud SQL Admin IAM 角色。

按照适用于您的数据库方言的“将 IAM 用户或服务账号添加到数据库实例”过程,将模拟的服务账号添加到 Cloud SQL 数据库:

在 Cloud SQL 数据库中设置服务账号模拟

在数据库中创建 Cloud SQL 用户后,您必须执行以下步骤,为 Cloud SQL 数据库设置服务模拟:

  1. 按照启用 Cloud SQL Admin API 的步骤操作。
  2. 确保链中的所有服务账号(包括 Looker 服务账号)都具有适当的 IAM 权限。
  3. 按照在 Google Cloud 控制台中授予单个角色的过程操作。向您添加到 Cloud SQL 数据库的模拟服务账号授予以下 Cloud SQL 角色:

    如果您指定了 Looker 服务账号以外的服务账号,或者在 IAM 数据库用户名字段中指定了服务账号链,请向该链中的每个服务账号授予以下权限:

Cloud SQL for MySQL 的其他配置命令

对于 Cloud SQL for MySQL,您必须连接到数据库实例,并在 Cloud SQL for MySQL 数据库上运行以下命令:

GRANT ALL on DATABASE_NAME.* to 'DATABASE_USER'@'%'

替换以下内容:

  • DATABASE_NAME:您的数据库的名称。
  • DATABASE_USER:您添加到 Cloud SQL 数据库的模拟服务账号的截断服务账号用户名。服务账号将采用 service-<project number>@gcp-sa-looker. 格式。移除 @ 及其后面的所有内容,以截断用户名。截断后,用户名将类似于 service-<project number>。

例如,如果服务账号用户名为 service-12345678901@gcp-sa-looker.,数据库名称为 looker-test,则命令如下所示:

GRANT ALL on looker-test.* to 'service-12345678901'@'%'

Cloud SQL for PostgreSQL 的其他配置命令

对于 Cloud SQL for PostgreSQL,您必须连接到数据库实例,并在 Cloud SQL for PostgreSQL 数据库上运行一些配置命令:

  • 按照 PostgreSQL 文档页面的用户和安全部分中的说明,向用户授予对数据库的权限。
  • 设置 Looker SQL Runner 用于从数据库中检索元数据的搜索路径,如 Looker 文档 PostgreSQL 页面的设置 search_path 部分中所述。

创建从 Looker (Google Cloud Core) 到 Cloud SQL 数据库的连接

如需创建从 Looker 到数据库的连接,请按照以下步骤操作:

  1. 在 Looker 的管理部分中,选择连接,然后点击添加连接。
  2. 从方言下拉菜单中,选择 Google Cloud PostgreSQL;对于 Cloud SQL for MySQL,选择 Google Cloud SQL。
  3. 在身份验证部分,点击应用默认凭证选项。
  4. 在 IAM 数据库用户名字段中,指定您希望 ADC 模拟以对数据库执行操作的服务账号或服务账号链:

    • 如果您希望 Looker 使用 Looker (Google Cloud Core) 项目的服务账号向 Cloud SQL 数据库进行身份验证,请将此字段留空。
    • 如果您希望 Looker 使用 Looker (Google Cloud Core) 项目的服务账号以外的服务账号向 Cloud SQL 数据库进行身份验证,则可以输入另一个服务账号或以逗号分隔的服务账号链,以创建委托请求流。
  5. 填写连接详情的其余部分。大多数设置对于大多数数据库方言都是通用的。如需了解相关信息,请参阅将 Looker 连接到您的数据库文档页面。

  6. 如需验证连接是否成功,请点击连接设置页面底部状态详情部分中的测试连接按钮。

  7. 如果 Looker 显示可以连接,请按连接以创建连接。

然后,您的数据库连接会添加到 Looker 连接管理页面上的列表中。

设置数据库连接后,您就可以设置 LookML 项目了。

使用 BigQuery 配置 OAuth 身份验证

如需为 Looker (Google Cloud Core) 实例上的 BigQuery 数据库连接配置 OAuth 身份验证,请按照以下步骤操作:

  1. 在身份验证下,选择 OAuth。Looker (Google Cloud Core) 默认使用 Looker 管理员创建 Looker (Google Cloud Core) 实例时使用的 OAuth 应用凭证。您无需手动创建或输入客户端 ID 和密钥。
  2. 在实例的 OAuth 客户端中,向已获授权的重定向 URI 字段添加一个额外的重定向 URI(或使用凭证创建一个新的 OAuth 客户端,然后添加重定向 URI)。重定向 URI 必须使用 Looker 实例的网址,后跟 /external_oauth/redirect。如需了解背景信息,请参阅为 BigQuery 生成 OAuth 凭据文档。

如果您想为此连接手动输入其他 OAuth 凭证,请启用手动配置 OAuth 凭证切换开关,然后填写 OAuth 客户端 ID 和 OAuth 客户端密钥字段。如果您手动输入 OAuth 凭据,则不会更改或更新创建 Looker (Google Cloud Core) 实例时使用的凭据。按照为 OAuth 配置 BigQuery 数据库项目文档中的步骤创建和使用不同的凭据。

Looker (Google Cloud Core) 支持的方言

下表显示了 Looker (Google Cloud Core) 对数据库方言的支持情况:

方言 是否支持?
Actian Avalanche
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
Amazon Redshift 2.1+
Amazon Redshift Serverless 2.1+
Apache Druid
Apache Druid 0.13.x - 0.17.x
Apache Druid 0.18+
Apache Hive 2.3+
Apache Hive 3.1.2+
Apache Spark 3+
ClickHouse
ClickHouse 26+
Cloudera Impala 3.1+
Cloudera Impala 3.1+ with Native Driver
Cloudera Impala with Native Driver
DataVirtuality
Databricks
Denodo 7
Denodo 8 & 9
Dremio
Dremio 11+
Dremio 26+ with Arrow Flight SQL
Exasol
Google BigQuery Legacy SQL
Google BigQuery Standard SQL
Google Cloud AlloyDB for PostgreSQL
Google Cloud PostgreSQL
Google Cloud SQL
Google Spanner
Greenplum
HyperSQL
IBM Netezza
MariaDB
Microsoft Azure PostgreSQL
Microsoft Azure SQL Database
Microsoft Azure Synapse Analytics
Microsoft SQL Server 2008+
Microsoft SQL Server 2012+
Microsoft SQL Server 2016
Microsoft SQL Server 2017+
MongoBI
MongoSQL
MySQL
MySQL 8.0.12+
Oracle
Oracle ADWC
PostgreSQL 9.5+
PostgreSQL pre-9.5
PrestoDB
PrestoSQL
SAP HANA
SAP HANA 2+
SingleStore
SingleStore 7+
Snowflake
Teradata
Trino
Vector
Vertica

数据库配置说明

以下 SQL 方言提供了相关说明:

后续步骤