凭证分发概览

借助 Lakehouse 运行时目录的凭据分发功能,您可以委托存储访问权限,并对数据文件应用精细权限。作为无边界 Lakehouse 的一部分,此功能可让您在表级别为存储在 Cloud Storage 中的表管理 Identity and Access Management (IAM) 政策。

您可以使用 gcloud CLI 获取和设置这些政策,以控制对资源的访问权限。

凭证分发的工作原理

使用凭据分发时,操作顺序会略有变化,以便在访问存储空间之前强制执行政策。下图展示了查询引擎如何从目录中获取范围缩小的存储令牌,以便直接在 Cloud Storage 中安全地读取和写入数据:

凭据分发架构图,展示了查询引擎如何从 Lakehouse 运行时目录获取降级存储令牌,以安全地访问 Cloud Storage。
委托 Cloud Storage 访问权限的凭据发放工作流。

上图中显示的操作顺序如下:

  1. 请求:用户向支持的引擎提交 SQL 语句,例如查询、DML 或 DDL 操作。例如,Apache Spark 或 BigQuery。
  2. 元数据查找:引擎向 Lakehouse 运行时目录发送请求以解析表。
  3. 身份验证和政策:目录会对用户进行身份验证,并检查其对 Google Cloud 的 Lakehouse 资源的 IAM 权限。
  4. 响应:由于启用了凭证分发,目录会向引擎返回元数据和短期有效的存储令牌(范围缩小的存储凭证)。令牌的作用域限定为与表关联的路径,并限定为所需的最低权限(例如,对于不需要写入文件的查询,授予只读权限)。
  5. 访问:引擎使用此令牌直接从 Cloud Storage 读取或写入特定授权文件。
  6. 计算:引擎处理数据或执行操作,并返回结果。

支持的引擎

如需将凭据分发与查询引擎搭配使用,必须将 Lakehouse Iceberg REST 目录配置为支持凭据分发。

  • 开源引擎:Apache 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 或 Dataflow)的服务账号需要 BigLake Editor 角色 (roles/biglake.editor) 才能获取具有写入范围的已售凭证。

后续步骤