API リクエストを認証する

Google Distributed Cloud(GDC)エアギャップ アプライアンスの Vertex AI では、トークンを使用してリクエストを認証することで、プログラムで API にアクセスできます。認証トークンは、ユーザー アカウントまたはサービス アカウントを使用して取得できます。

次のいずれかのオプションを選択して、認証トークンを取得します。

ユーザー アカウント

ユーザー権限を持つ認証トークンを取得する手順は次のとおりです。

  1. 使用する API のエンドポイントをメモします。

  2. IAM 権限を準備するに記載されている対応するロールをユーザー アカウントに付与して、使用する Vertex AI サービスへのアクセス権を取得します。

  3. API を操作する必要があるユーザー アカウントで GDC エアギャップ アプライアンスにログインします。

    gdcloud auth login
    
  4. 認証トークンを取得します。

    gdcloud auth print-identity-token --audiences=https://ENDPOINT
    

    ENDPOINT は、組織で使用するサービス エンドポイントに置き換えます。詳細については、サービス ステータスとエンドポイントを表示するをご覧ください。

    認証トークンの用途によっては、次のように、オーディエンス パスのサービス エンドポイントの後にポートを含める必要があります。

    • リクエストにクライアント ライブラリを使用する場合は、オーディエンス パスのサービス エンドポイントの後にポート :443 を含める必要があります。したがって、コマンドの --audiences パスは https://ENDPOINT:443 にする必要があります。
    • リクエストに gRPC、curl、またはプログラムによる REST 呼び出しを使用する場合は、ポートを含めないでください。したがって、コマンドの --audiences パスは https://ENDPOINT にする必要があります。

出力に認証トークンが表示されます。次の例のように、作成したコマンドライン リクエストのヘッダーにトークンを追加します。

-H "Authorization: Bearer TOKEN"

TOKEN は、出力に表示される認証トークンの値に置き換えます。

サービス アカウント

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

  1. 使用する API のエンドポイントをメモします。

  2. Vertex AI サービスへのアクセスに使用するサービス アカウントを設定します。

  3. サービス アカウントに、IAM 権限を準備するに記載されている対応するロールを付与して、使用するサービスにアクセスできるようにします。

  4. サービス アカウントのサービス鍵ペアを取得します。

  5. google-auth クライアント ライブラリをインストールします。

    pip install google-auth
    
  6. 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: 組織で使用するサービス エンドポイント。詳細については、サービス ステータスとエンドポイントを表示するをご覧ください。認証トークンの用途によっては、次のように、オーディエンス パスのサービス エンドポイントの後にポートを含める必要があります。

      • リクエストにクライアント ライブラリを使用する場合は、オーディエンス パスのサービス エンドポイントの後にポート :443 を含める必要があります。したがって、スクリプトの audience パスは "https://ENDPOINT:443" にする必要があります。
      • リクエストに gRPC、curl、またはプログラムによる REST 呼び出しを使用する場合は、ポートを含めないでください。したがって、スクリプトの audience パスは "https://ENDPOINT" にする必要があります。
  7. Python スクリプトを保存します。

  8. Python スクリプトを実行してトークンを取得します。

    python SCRIPT_NAME
    

    SCRIPT_NAME は、Python スクリプトに付けた名前(token.py など)に置き換えます。

出力に認証トークンが表示されます。次の例のように、作成したコマンドライン リクエストのヘッダーにトークンを追加します。

-H "Authorization: Bearer TOKEN"

TOKEN は、出力に表示される認証トークンの値に置き換えます。