API リクエストを認証する

Google Distributed Cloud(GDC)エアギャップ アプライアンス上の Vertex AI は、認証を必要とする API とサービスを提供します。認証とは、トークンを使用してサービスにアクセスするための ID を証明する方法です。

トークンは、呼び出し元が適切な認証情報を提供し、トークンと正常に交換されたことを確認するデジタル オブジェクトです。トークンには、リクエストを行うアカウントの ID と、そのアカウントに許可されている特定のアクセスに関する情報が含まれています。

このページでは、Vertex AI API に対する認証をプログラムで行う方法について説明します。ユーザーとして Vertex AI API にアクセスするか、サービス アカウントを使用してアクセスするかに応じて、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 は、出力に表示される認証トークンの値に置き換えます。