驗證 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 改為輸出畫面顯示的驗證權杖值。