为现有的 Apache Iceberg REST 目录启用凭据自动售卖模式,可将 Lakehouse for Apache Iceberg 配置为向授权的查询引擎或工作负载自动售卖短期、降级范围的存储令牌。
在 Lakehouse 运行时目录中,此身份验证方法可让您或查询运行时无需对底层 Cloud Storage 存储桶拥有直接读取和写入权限。
准备工作
-
启用 BigLake API。
启用 API 所需的角色
如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (
roles/serviceusage.serviceUsageAdmin),该角色包含serviceusage.services.enable权限。了解如何授予角色。
所需的角色
如需获得启用凭据自动售卖所需的权限,请让您的管理员为您授予以下 IAM 角色:
- 全部:
- 针对项目的 BigLake Admin (
roles/biglake.admin) 角色 - 您项目的 Storage Admin (
roles/storage.admin)
- 针对项目的 BigLake Admin (
-
自动预配的 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 的身份验证方法设置为最终用户凭据,您可以将其切换为凭证分发模式。
控制台
- 在 Google Cloud 控制台中,打开 Lakehouse 页面。
在您要更新的目录所在的行中,依次选择 更多目录操作 > 修改身份验证。
在身份验证对话框中,选择凭据贩售模式。 自动预配的 Apache Iceberg REST Catalog 服务账号需要对目标 Cloud Storage 存储桶具有明确的 Storage Object User 角色 (
roles/storage.objectUser)。默认情况下,创建的链接仅具有查看者访问权限。如果没有此角色,出售的凭据就没有足够的范围来执行存储写入操作。选择保存。 系统会更新您的目录,并打开目录详情页面。
在身份验证方法下,选择设置存储桶权限。
- 在对话框中,选择确认。
这会验证目录的服务账号是否具有存储桶的 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 的互操作性。对于美国区域(例如US或us-central1)或欧盟区域(例如EU或europe-west4)中的 Cloud Storage 存储分区,请分别指定US或EU,以确保目录可供相应 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。