驗證 Vertex AI API 要求

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

本頁面適用於應用程式運算子群組中的應用程式開發人員,負責設定應用程式和開發環境,以啟用 AI 功能。詳情請參閱 GDC air-gapped 的目標對象說明文件

事前準備

您必須為專案設定 Vertex AI。詳情請參閱「設定 Vertex AI 專案」。

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

驗證 Vertex AI 服務

與 Vertex AI 服務互動時,需要使用驗證權杖。權杖是數位物件,可驗證您的身分和授權。您必須提供有效憑證,系統才會核發權杖。權杖會攜帶帳戶的特定資訊,以及存取和操作服務與資源的權限。

設定驗證的方式有兩種:

使用使用者帳戶進行驗證

以下指南會逐步說明如何取得使用者帳戶的驗證權杖:

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

  2. 將「準備 IAM 權限」中列出的相應角色授予使用者帳戶,即可存取要使用的 Vertex AI 服務或 Generative 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 替換為輸出內容顯示的驗證權杖值。