对 API 请求进行身份验证

借助 Google Distributed Cloud (GDC) 网闸隔离设备上的 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 替换为输出显示的身份验证令牌的值。