对 API 请求进行身份验证

Google Distributed Cloud (GDC) 空气隔离设备上的 Vertex AI 提供需要进行身份验证的 API 和服务。身份验证是指您使用令牌证明自己的身份以访问服务的方式。

令牌是数字对象,用于验证调用方提供了适当的凭据,并且已成功换取令牌。令牌包含有关请求账号的身份及其获授权的特定访问权限的信息。

本页面介绍了如何以编程方式向 Vertex AI API 进行身份验证。本页面介绍了如何获取 API 请求的身份验证令牌,具体取决于您是以用户身份还是通过服务账号访问 Vertex AI API。

选择以下选项之一以获取身份验证令牌:

用户账号

请按照以下步骤获取具有用户权限的身份验证令牌:

  1. 记下您要使用的 API 的端点。

  2. 通过向您的用户账号授予准备 IAM 权限中列出的相应角色,获取对您要使用的 Vertex AI 服务的访问权限。

  3. 使用您必须与 API 交互的用户账号登录 GDC 气隙设备:

    gdcloud auth login
    
  4. 获取身份验证令牌:

    gdcloud auth print-identity-token --audiences=https://ENDPOINT
    

    ENDPOINT 替换为贵组织使用的服务端点。如需了解详情,请查看服务状态和端点

    根据身份验证令牌的预期用途,您可能需要在受众群体路径中的服务端点后添加端口,如下所示:

    • 如果您使用客户端库来发送请求,则必须在受众群体路径中的服务端点后添加端口 :443。因此,命令中的 --audiences 路径必须为 https://ENDPOINT:443
    • 如果您使用 gRPC、curl 或以编程方式发出 REST 调用来提出请求,请勿添加端口。因此,命令中的 --audiences 路径必须为 https://ENDPOINT

输出会显示身份验证令牌。将令牌添加到您发出的命令行请求的标头中,如以下示例所示:

-H "Authorization: Bearer TOKEN"

TOKEN 替换为输出显示的身份验证令牌的值。

服务账号

请按照以下步骤使用服务账号获取身份验证令牌:

  1. 记下您要使用的 API 的端点。

  2. 设置您要用于访问 Vertex AI 服务的服务账号。

  3. 向服务账号授予准备 IAM 权限中列出的相应角色,以便该服务账号能够访问您要使用的服务。

  4. 获取服务账号的服务密钥对

  5. 安装 google-auth 客户端库:

    pip install google-auth
    
  6. 将以下代码添加到 Python 脚本中:

    import os
    import google.auth
    from google.auth.transport import requests
    import requests as reqs
    
    os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "PATH_TO_SERVICE_KEY"
    os.environ["GRPC_DEFAULT_SSL_ROOTS_FILE_PATH"] = "CERT_NAME"
    
    # If you use a client library for your request,
    # you must include port :443 after the service endpoint
    # in the audience path.
    audience = "https://ENDPOINT"
    
    creds, project_id = google.auth.default()
    print(project_id)
    creds = creds.with_gdch_audience(audience)
    
    def test_get_token():
      sesh = reqs.Session()
      req = requests.Request(session=sesh)
      creds.refresh(req)
      print(creds.token)
    
    if __name__=="__main__":
      test_get_token()
    

    替换以下内容:

    • PATH_TO_SERVICE_KEY:包含服务账号密钥对的 JSON 文件的路径。
    • CERT_NAME:证书授权机构 (CA) 证书文件的名称,例如 org-1-trust-bundle-ca.cert。只有在开发环境中才需要此值。否则,请省略此字段。
    • ENDPOINT:您为组织使用的服务端点。如需了解详情,请查看服务状态和端点。根据身份验证令牌的预期用途,您可能需要在受众群体路径中的服务端点后添加端口,如下所示:

      • 如果您使用客户端库来发送请求,则必须在受众群体路径中的服务端点后添加端口 :443。因此,脚本中的 audience 路径必须为 "https://ENDPOINT:443"
      • 如果您使用 gRPC、curl 或以编程方式发出 REST 调用来提出请求,请勿添加端口。因此,脚本中的 audience 路径必须为 "https://ENDPOINT"
  7. 保存 Python 脚本。

  8. 运行 Python 脚本以获取令牌:

    python SCRIPT_NAME
    

    SCRIPT_NAME 替换为您为 Python 脚本指定的名称,例如 token.py

输出会显示身份验证令牌。将令牌添加到您发出的命令行请求的标头中,如以下示例所示:

-H "Authorization: Bearer TOKEN"

TOKEN 替换为输出显示的身份验证令牌的值。