启用凭证自动发放

为现有的 Apache Iceberg REST 目录启用凭据自动售卖模式,可将 Lakehouse for Apache Iceberg 配置为向授权的查询引擎或工作负载自动售卖短期、降级范围的存储令牌。

在 Lakehouse 运行时目录中,此身份验证方法可让您或查询运行时无需对底层 Cloud Storage 存储桶拥有直接读取和写入权限。

准备工作

  1. 验证是否已为您的 Google Cloud 项目启用结算功能

  2. 启用 BigLake API。

    启用 API 所需的角色

    如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (roles/serviceusage.serviceUsageAdmin),该角色包含 serviceusage.services.enable 权限。了解如何授予角色

    启用 API

所需的角色

如需获得启用凭据自动售卖所需的权限,请让您的管理员为您授予以下 IAM 角色:

  • 全部:
  • 自动预配的 Apache Iceberg REST Catalog 服务账号:目标 Cloud Storage 存储桶上的 Storage Object User (roles/storage.objectUser)。启用凭据自动售卖后,请向目录的自动预配 Apache Iceberg REST Catalog 服务账号明确授予存储桶的 Storage Object User 角色 (roles/storage.objectUser)。

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

启用凭据自动发放

如果 Apache Iceberg REST Catalog 的身份验证方法设置为最终用户凭据,您可以将其切换为凭证分发模式

控制台

  1. 在 Google Cloud 控制台中,打开 Lakehouse 页面。

前往 Lakehouse

  1. 在您要更新的目录所在的行中,依次选择 更多目录操作 > 修改身份验证

    1. 在身份验证对话框中,选择凭据贩售模式。 自动预配的 Apache Iceberg REST Catalog 服务账号需要对目标 Cloud Storage 存储桶具有明确的 Storage Object User 角色 (roles/storage.objectUser)。默认情况下,创建的链接仅具有查看者访问权限。如果没有此角色,出售的凭据就没有足够的范围来执行存储写入操作。

    2. 选择保存。 系统会更新您的目录,并打开目录详情页面。

  2. 身份验证方法下,选择设置存储桶权限

    1. 在对话框中,选择确认

这会验证目录的服务账号是否具有存储桶的 Storage Object User 角色 (roles/storage.objectUser)。

gcloud

使用 gcloud biglake iceberg catalogs create 命令

gcloud biglake iceberg catalogs create \
    CATALOG_NAME \
    --project PROJECT_ID \
    --catalog-type gcs-bucket \
    --credential-mode vended-credentials \
    [--primary-location LOCATION]

替换以下内容:

  • CATALOG_NAME:目录的名称。此名称通常与 Lakehouse Iceberg REST 目录使用的 Cloud Storage 存储桶 ID 匹配,例如,如果您的存储桶为 gs://bucket-id,则目录名称可能为 bucket-id。从 BigQuery 查询这些表时,此名称还用作目录标识符。
  • PROJECT_ID: Google Cloud项目 ID。
  • LOCATION:(可选)目录的主区域,用于确保与 BigQuery 的互操作性。对于美国区域(例如 USus-central1)或欧盟区域(例如 EUeurope-west4)中的 Cloud Storage 存储分区,请分别指定 USEU,以确保目录可供相应 BigQuery 多区域查询。如需了解详情,请参阅存储分区和目录区域

    创建目录后,请向目录的自动配置 Apache Iceberg REST Catalog 服务账号明确授予存储桶的 Storage Object User 角色 (roles/storage.objectAdmin)。

REST

如需使用 REST API 启用凭据自动售卖模式,请向 UpdateIcebergCatalog 端点发出 PATCH 请求:

PATCH /iceberg/v1/restcatalog/extensions/projects/PROJECT_ID/catalogs/CATALOG_ID?updateMask=icebergCatalog.credentialMode

请求正文必须包含 IcebergCatalog JSON 载荷,并将 credentialMode 设置为 VENDED_CREDENTIALS

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • CATALOG_ID:Lakehouse 运行时目录的 ID。