向 BigLake 进行身份验证

本文档介绍了如何以编程方式向 BigLake 进行身份验证。如何向 BigLake 进行身份验证取决于您用于访问 API 的界面以及运行代码的环境。

如需详细了解 Google Cloud 身份验证,请参阅 身份验证方法

API 访问权限

BigLake 支持程序化访问。您可以通过以下方式访问 API:

客户端库

BigLake 客户端库为以编程方式向 BigLake 进行身份验证提供了 高级语言支持。 为了对 Google Cloud API 的调用进行身份验证,客户端库支持 应用默认凭证 (ADC); 这些库会在一组指定的位置查找凭证,并使用这些凭证 对发送到 API 的请求进行身份验证。借助 ADC,您可以在各种环境(例如本地开发或生产环境)中为您的应用提供凭据,而无需修改应用代码。

Google Cloud CLI

使用 gcloud CLI 访问 BigLake 时,您需要 使用用户账号登录 gcloud CLI,该账号会提供 gcloud CLI 命令使用的凭据。

如果您的组织的安全政策阻止用户账号获取所需的 权限,您可以使用 服务账号模拟

如需了解详情,请参阅 使用 gcloud CLI 时进行身份验证。 如需详细了解如何将 gcloud CLI 与 BigLake 搭配使用, 请参阅 gcloud biglake

REST

您可以使用 BigLake API 凭据或使用 应用 gcloud CLI 凭据进行身份验证。如需详细了解 REST 请求身份验证,请参阅 使用 REST 时进行身份验证。 如需了解凭据类型,请参阅 gcloud CLI 凭据和 ADC 凭据

为 BigLake 设置身份验证

设置身份验证的方式取决于代码在其中运行的环境。

以下是最常用的身份验证设置选项。如需了解有关身份验证的更多选项和信息,请参阅身份验证方法

对于本地开发环境

您可以通过以下方式为本地开发环境设置凭据:

客户端库或第三方工具

在本地环境中设置 应用默认凭证 (ADC)

  1. 安装 Google Cloud CLI。 安装完成后, 初始化 Google Cloud CLI,方法是运行以下命令:

    gcloud init

    如果您使用的是外部身份提供方 (IdP),则必须先 使用联合身份登录 gcloud CLI

  2. 如果您使用的是本地 shell,请为您的用户 账号创建本地身份验证凭据:

    gcloud auth application-default login

    如果您使用的是 Cloud Shell,则无需执行此操作。

    如果返回了身份验证错误,并且您使用的是外部身份提供方 (IdP),请确认您已 使用联合身份登录 gcloud CLI

    登录屏幕随即出现。在您登录后,您的凭据会存储在 ADC 使用的本地凭据文件中。

如需详细了解如何在本地环境中使用 ADC,请参阅为本地开发环境设置 ADC

从命令行发出的 REST 请求

从命令行发出 REST 请求时,您可以通过在发送该请求的命令中添加 gcloud auth print-access-token 来使用 gcloud CLI 凭据。

以下示例列出了指定项目的服务账号。您可以对任何 REST 请求使用相同的模式。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:您的 Google Cloud 项目 ID。

如需发送您的请求,请展开以下选项之一:

 

如需详细了解如何使用 REST 和 gRPC 进行身份验证,请参阅使用 REST 时进行身份验证。如需了解本地 ADC 凭据与 gcloud CLI 凭据之间的区别,请参阅 gcloud CLI 身份验证配置和 ADC 配置

服务账号模拟

在大多数情况下,您可以使用用户凭据从本地开发环境进行身份验证。如果这种方法不可行,或者您需要测试分配给服务账号的权限,则可以使用服务账号模拟。您必须拥有 iam.serviceAccounts.getAccessToken 权限,该权限包含在 Service Account Token Creator (roles/iam.serviceAccountTokenCreator) IAM 角色中。

您可以使用 gcloud config set 命令将 gcloud CLI 设置为使用服务账号模拟:

gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL

对于某些语言,您可以使用服务账号模拟创建本地 ADC 文件,供客户端库使用。只有 Go、Java、Node.js 和 Python 客户端库支持此方法,而其他语言不支持此方法。如需使用服务账号模拟设置本地 ADC 文件,请将 --impersonate-service-account 标志gcloud auth application-default login 命令结合使用:

gcloud auth application-default login --impersonate-service-account=SERVICE_ACCT_EMAIL

如需详细了解服务账号模拟,请参阅使用服务账号模拟

在 Google Cloud上

如需对 Google Cloud上运行的工作负载进行身份验证,请使用关联到代码在其中运行的计算资源(例如 Compute Engine 虚拟机 [VM] 实例)的服务账号的凭据。对于在 Google Cloud 计算资源上运行的代码,这是首选的身份验证方法。

对于大多数服务,您必须在创建将运行代码的资源时关联服务账号;您之后无法添加或替换服务账号。Compute Engine 是一个例外,它允许您随时将服务账号关联到虚拟机实例。

使用 gcloud CLI 创建服务帐号并将其关联到您的 资源:

  1. 安装 Google Cloud CLI。 安装完成后, 初始化 Google Cloud CLI,方法是运行以下命令:

    gcloud init

    如果您使用的是外部身份提供方 (IdP),则必须先 使用联合身份登录 gcloud CLI

  2. 设置身份验证:

    1. 确保您拥有 Create Service Accounts IAM 角色 (roles/iam.serviceAccountCreator) 和 Project IAM Admin 角色 (roles/resourcemanager.projectIamAdmin)。了解如何授予角色
    2. 创建服务帐号:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      SERVICE_ACCOUNT_NAME 替换为服务账号的名称。

    3. 如需提供对项目和资源的访问权限,请向服务账号授予角色:

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE

      请替换以下内容:

      • SERVICE_ACCOUNT_NAME:服务账号的名称
      • PROJECT_ID:您在其中创建服务账号的项目的 ID
      • ROLE:要授予的角色
    4. 如需向服务帐号授予其他角色,请按照上一步中的操作运行命令。
    5. 向将服务帐号关联到其他资源的正文授予所需角色。

      gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

      请替换以下内容:

      • SERVICE_ACCOUNT_NAME:服务账号的名称
      • PROJECT_ID:您在其中创建服务帐号的项目的 ID
      • USER_EMAIL:Google 账号的电子邮件地址
  3. 创建将运行代码的资源,并将服务帐号关联到该资源。例如,如果您使用 Compute Engine:

    创建 Compute Engine 实例。按如下所示的方式配置实例:
    gcloud compute instances create INSTANCE_NAME --zone=ZONE --service-account=SERVICE_ACCOUNT_EMAIL

如需详细了解如何向 Google API 进行身份验证,请参阅 身份验证方法

在本地或在其他云服务提供商上

如需在 Google Cloud 外部设置身份验证,首选方法是使用工作负载身份联合。如需了解详情,请参阅身份验证文档中的 为本地或其他云提供方设置 ADC

BigLake 的访问权限控制

向 BigLake 进行身份验证后,您必须获得授权可访问 Google Cloud 资源。BigLake 使用 Identity and Access Management (IAM) 进行授权。

如需详细了解 BigLake 的角色,请参阅 使用 IAM 进行访问权限控制。 如需详细了解 IAM 和授权,请参阅 IAM 概览

后续步骤