借助 Lakehouse 运行时目录的凭证发放功能,您可以使用 Google Cloud 控制台或 Google Cloud CLI 将 Cloud Storage 访问权限委托给查询引擎,并在目录、命名空间和表级别强制执行精细的 Identity and Access Management (IAM) 政策。此外,还需要凭证分发功能,才能为压缩、快照过期和垃圾回收等后台维护任务启用自动表管理。
凭证分发的工作原理
使用凭据分发时,操作顺序会略有变化,以便在访问存储空间之前强制执行政策。下图展示了查询引擎如何从目录中获取范围缩小的存储令牌,以便直接在 Cloud Storage 中安全地读取和写入数据:
上图中显示的操作顺序如下:
- 请求:用户向受支持的引擎(例如 Apache Spark 或 BigQuery)提交 SQL 语句,例如查询、DML 或 DDL 操作。
- 元数据查找:引擎向 Lakehouse 运行时目录发送请求以解析表。
- 身份验证和政策:目录会对用户进行身份验证,并检查其对 Lakehouse 资源的 IAM 权限。
- 响应:由于启用了凭证分发,目录会向引擎返回元数据和短期有效的存储令牌(范围缩小的存储凭证)。令牌的作用域限定为与表关联的路径,并限定为所需的最低权限(例如,对于不需要写入文件的查询,授予只读权限)。
- 访问:引擎使用此令牌直接从 Cloud Storage 读取或写入特定授权文件。
- 计算:引擎处理数据或执行操作,并返回结果。
启用自动表管理 (gcp.biglake.table-management.enabled) 后,压缩、快照过期和垃圾回收等后台维护任务会使用目录自动预配的服务账号直接向 Cloud Storage 进行身份验证并更新底层数据文件。
支持的引擎
如需将凭据分发与查询引擎搭配使用,您必须在 Lakehouse 运行时目录中配置 Apache Iceberg REST 目录端点,以支持凭据分发。Apache Hive 目录端点不支持凭证发放。
- 开源引擎:Spark 和 Trino 等受支持的引擎使用目录提供的短期存储令牌。您的客户端应用必须在
X-Iceberg-Access-Delegation标头中指定对凭证发放的支持。 - BigQuery:BigQuery 使用 Cloud Storage 访问权限的供应商凭据,而不是最终用户凭据。
所需的服务账号权限
启用凭证发放后,请确保以下服务账号具有必要的角色:
- 自动预配的 Lakehouse 运行时目录服务账号:您必须向此账号授予所有关联 Cloud Storage 存储桶的 Storage Object User 角色 (
roles/storage.objectUser)。如果没有此访问权限,则所售凭据无法读取或写入存储空间。如果您使用的是 Google Cloud 控制台,点击设置存储桶权限即可验证此角色。对于 gcloud CLI、Terraform 或 API,您必须手动授予此角色。 - 查询引擎服务账号:运行查询引擎作业(例如 Managed Service for Apache Spark、Managed Service for Apache Spark 或 Dataflow)的服务账号需要 BigLake Editor 角色 (
roles/biglake.editor) 才能获取具有写入范围的已售凭据。
后续步骤
- 了解如何在凭证自动售卖模式下创建目录。
- 了解如何使用Google Cloud 控制台为现有目录启用凭据发放。
- 了解如何为客户端应用配置凭据发放。