凭证分发概览

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

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

凭证分发的工作方式

使用凭据贩售时,查询处理顺序会略有变化,以便在读取数据之前强制执行政策:

  1. 请求:用户向受支持的引擎(例如 Apache Spark 或 BigQuery)提交 SQL 查询。
  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)。默认情况下,此服务账号创建时仅具有查看者权限。如果没有对象管理员访问权限,供应商提供的凭据无法执行存储写入操作。(注意:如果通过控制台界面进行配置,点击设置存储桶权限即可验证此角色。对于 gcloud、Terraform 或 API 设置,必须手动授予此角色)。
  • 查询引擎服务账号:运行查询引擎作业(例如 Managed Service for Apache Spark、Managed Service for Apache Spark 或 Dataflow)的服务账号需要项目级 BigLake Editor 角色 (roles/biglake.editor),才能获取具有写入范围的出售凭据。

后续步骤