对 Vertex AI API 请求进行身份验证

本页面介绍了如何在 Google Distributed Cloud (GDC) 气隙环境中对 Vertex AI 服务的调用进行身份验证。您必须设置令牌身份验证,以确保在气隙应用中向 Vertex AI API 发出的请求安全无虞。此流程通过提供您的身份信息并授权您的互动来验证您的 API 请求。

本页面面向应用运维人员群组中的应用开发者,他们负责设置应用和开发环境以启用 AI 功能。如需了解详情,请参阅 GDC 气隙环境文档的受众群体

准备工作

您必须已为 Vertex AI 设置项目。如需了解详情,请参阅为 Vertex AI 设置项目

  • 在开发环境中设置身份验证之前,请务必更新本地信任库。

向 Vertex AI 服务进行身份验证

与 Vertex AI 服务的互动是通过身份验证令牌完成的。令牌是一种数字对象,可在您提供有效凭据后验证您的身份和授权。令牌包含有关您账号的具体信息,以及该账号访问和操作服务及资源的权限。

您可以通过以下两种方式设置身份验证:

使用您的用户账号进行身份验证

以下步骤将指导您获取用户账号的身份验证令牌:

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

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

  3. 使用您要与 API 交互的用户账号登录 Distributed Cloud:

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

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

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

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

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

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

     -H "Authorization: Bearer TOKEN"
    

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

使用服务账号进行身份验证

以下指南将引导您获取服务账号的身份验证令牌:

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

  2. 设置要用于访问 Vertex AI 服务或生成式 AI 模型的服务账号。

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

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

  5. 设置以下环境变量:

    export GOOGLE_APPLICATION_CREDENTIALS=PATH_TO_SERVICE_KEY
    

    PATH_TO_SERVICE_KEY 替换为包含服务账号密钥对的 JSON 文件的路径。

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

    pip install google-auth
    
  7. 将以下代码添加到 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:您组织使用的 API 端点。如需了解详情,请查看服务状态和端点。根据身份验证令牌的预期用途,您可能需要在受众群体路径中的服务端点后添加端口,如下所示:

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

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

      python SCRIPT_NAME
    

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

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

     -H "Authorization: Bearer TOKEN"
    

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