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

本页面介绍了如何对 Google Distributed Cloud (GDC) 气隙环境中的 Vertex AI 服务的调用进行身份验证。您必须设置令牌身份验证,以保护对经过网闸隔离应用中的 Vertex AI API 的请求。此过程通过提供您的身份并授权您的互动来验证您的 API 请求。

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

准备工作

如需对 API 请求进行身份验证并配置服务账号,请向管理员请求必要的权限。另请确保您已为 Vertex AI 设置项目。如需了解详情,请参阅 为 Vertex AI 设置项目。

  • 请务必先更新本地受信任证书存储区,然后再在开发环境中设置身份验证。

请求 IAM 角色

请与您的 Project IAM Admin 联系,以在项目命名空间中请求以下角色:

  • Project IAM Admin (project-iam-admin):在项目命名空间中创建服务账号并管理角色绑定。
  • AI OCR Developer (ai-ocr-developer):对 OCR API 的请求进行身份验证。
  • AI Speech Developer (ai-speech-developer):对 Speech-to-Text API 的请求进行身份验证。
  • AI Speech Chirp Developer (ai-speech-chirp-developer):对 Speech-to-Text Chirp 模型的请求进行身份验证。
  • AI 文本嵌入开发者 (ai-text-embedding-developer):对 Text-Embedding-Gecko 模型的请求进行身份验证。
  • AI Text Embedding Multilingual Developer (ai-text-embedding-multilingual-developer):对 Text-Multilingual-Embedding 模型的请求进行身份验证。
  • AI Translation Developer (ai-translation-developer):对 Vertex AI Translation API 的请求进行身份验证。
  • Vertex AI Prediction User (vertex-ai-prediction-user):对在线预测模型的预测请求进行身份验证。

如需详细了解这些角色,请参阅准备 IAM 权限。

向 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 替换为输出显示的身份验证令牌的值。