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