Google Distributed Cloud(GDC)エアギャップ アプライアンス上の Vertex AI は、認証を必要とする API とサービスを提供します。認証とは、トークンを使用してサービスにアクセスするための ID を証明する方法です。
トークンは、呼び出し元が適切な認証情報を提供し、トークンと正常に交換されたことを確認するデジタル オブジェクトです。トークンには、リクエストを行うアカウントの ID と、そのアカウントに許可されている特定のアクセスに関する情報が含まれています。
このページでは、Vertex AI API に対する認証をプログラムで行う方法について説明します。ユーザーとして Vertex AI API にアクセスするか、サービス アカウントを使用してアクセスするかに応じて、API リクエストの認証トークンを取得する手順について説明します。
認証トークンを取得するには、次のいずれかのオプションを選択します。
ユーザー アカウント
ユーザー権限で認証トークンを取得する手順は次のとおりです。
IAM 権限を準備するに記載されている対応するロールをユーザー アカウントに付与して、使用する Vertex AI サービスへのアクセス権を取得します。
API とやり取りする必要があるユーザー アカウントで GDC エアギャップ アプライアンスにログインします。
gdcloud auth login認証トークンを取得します。
gdcloud auth print-identity-token --audiences=https://ENDPOINTENDPOINTは、組織で使用するサービス エンドポイントに置き換えます。詳細については、サービス ステータスとエンドポイントをご覧ください。認証トークンの使用目的に応じて、次のようにオーディエンス パスのサービス エンドポイントの後にポートを含める必要がある場合があります。
- リクエストにクライアント ライブラリを使用する場合は、オーディエンス パスのサービス エンドポイントの後にポート
:443を含める必要があります。したがって、コマンドの--audiencesパスはhttps://ENDPOINT:443にする必要があります。 - リクエストに gRPC、
curl、またはプログラムによる REST 呼び出しを使用する場合は、ポートを含めないでください。したがって、コマンドの--audiencesパスはhttps://ENDPOINTにする必要があります。
- リクエストにクライアント ライブラリを使用する場合は、オーディエンス パスのサービス エンドポイントの後にポート
出力に認証トークンが表示されます。次の例のように、作成したコマンドライン リクエストのヘッダーにトークンを追加します。
-H "Authorization: Bearer TOKEN"
TOKEN は、出力に表示される認証トークンの値に置き換えます。
サービス アカウント
サービス アカウントで認証トークンを取得する手順は次のとおりです。
Vertex AI サービスへのアクセスに使用するサービス アカウントを設定します。
IAM 権限を準備するに記載されている対応するロールをサービス アカウントに付与して、使用するサービスへのアクセス権を取得します。
google-authクライアント ライブラリをインストールします。pip install google-auth次のコードを 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"にする必要があります。
- リクエストにクライアント ライブラリを使用する場合は、オーディエンス パスのサービス エンドポイントの後にポート
Python スクリプトを保存します。
Python スクリプトを実行してトークンを取得します。
python SCRIPT_NAMESCRIPT_NAMEは、Python スクリプトに付けた名前(token.pyなど)に置き換えます。
出力に認証トークンが表示されます。次の例のように、作成したコマンドライン リクエストのヘッダーにトークンを追加します。
-H "Authorization: Bearer TOKEN"
TOKEN は、出力に表示される認証トークンの値に置き換えます。