Vertex AI API リクエストを認証する

このページでは、Google Distributed Cloud(GDC)エアギャップ環境で Vertex AI サービスへの呼び出しを認証する方法について説明します。エアギャップ アプリケーション内の Vertex AI API へのリクエストを保護するには、トークン認証を設定する必要があります。このプロセスでは、ID を提供してやり取りを承認することで、API リクエストを検証します。

このページは、AI 機能を有効にするためにアプリケーションと開発環境の設定を担当する、アプリケーション オペレーター グループ内のアプリケーション開発者を対象としています。詳細については、GDC エアギャップ環境のドキュメントの対象読者をご覧ください。

始める前に

プロジェクトが Vertex AI 用に設定されている必要があります。詳細については、Vertex AI 用にプロジェクトを設定するをご覧ください。

  • 開発環境で認証を設定する前に、ローカル トラストストアを更新してください。

Vertex AI サービスに対する認証

Vertex AI サービスとのやり取りは、認証トークンを介して行われます。トークンは、有効な認証情報を提供した後に ID と認可を確認するデジタル オブジェクトです。トークンには、アカウントに関する特定の情報と、サービスやリソースにアクセスして操作するための権限が含まれています。

認証を設定する方法は 2 つあります。

ユーザー アカウントで認証する

ユーザー アカウントの認証トークンを取得する手順は次のとおりです。

  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 は、出力に表示される認証トークンの値に置き換えます。