驗證 Vertex AI API 要求

本頁面說明如何驗證 Google Distributed Cloud (GDC) 實體隔離方案中的 Vertex AI 服務呼叫。您必須設定權杖驗證,確保實體隔離應用程式向 Vertex AI API 發出的要求安全無虞。這項程序會提供您的身分並授權互動,藉此驗證 API 要求。

本頁面適用於應用程式開發人員,他們隸屬於應用程式營運團隊,負責設定應用程式和開發環境,以啟用 AI 功能。詳情請參閱「GDC 實體隔離方案說明文件的目標對象」。

事前準備

如要驗證 API 要求及設定服務帳戶,請向管理員要求必要權限。此外,請確認您已為 Vertex AI 設定專案。詳情請參閱「設定 Vertex AI 專案」。

  • 在開發環境中設定驗證機制之前,請務必更新本機信任存放區。

要求 IAM 角色

請與 IAM 專案管理員聯絡,要求在專案命名空間中取得下列角色:

  • IAM 專案管理員 (project-iam-admin):在專案命名空間中建立服務帳戶及管理角色繫結。
  • AI OCR 開發人員 (ai-ocr-developer):驗證對 OCR API 的要求。
  • AI 語音開發人員 (ai-speech-developer):驗證對 Speech-to-Text API 的要求。
  • AI 文字嵌入開發人員 (ai-text-embedding-developer):驗證對 Text-Embedding-Gecko 模型的要求。
  • AI 文字嵌入 Multilingual Developer (ai-text-embedding-multilingual-developer):驗證對 Text-Multilingual-Embedding 模型的請求。
  • AI Translation 開發人員 (ai-translation-developer):驗證 Vertex AI Translation API 的要求。
  • Vertex AI 預測使用者 (vertex-ai-prediction-user):驗證傳送至線上預測模型的預測要求。

如要進一步瞭解這些角色,請參閱「準備 IAM 權限」。

向 Vertex AI 服務驗證

與 Vertex AI 服務的互動是透過驗證權杖完成。權杖是數位物件,可在您提供有效憑證後驗證您的身分和授權。權杖會攜帶帳戶的特定資訊,以及帳戶存取及操作服務和資源的權限。

設定驗證的方法有兩種:

使用使用者帳戶進行驗證

以下說明如何取得使用者帳戶的驗證權杖:

  1. 記下要使用的 API 端點。

  2. 如要存取想使用的 Vertex AI 服務或生成式 AI 模型,請為使用者帳戶授予「準備 IAM 權限」中列出的相應角色。

  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 替換為輸出內容顯示的驗證權杖值。