サービスアカウントでPendo MCPサーバーを認証する

最終更新日:

AIエージェント、スクリプト、またはその他の自動化されたインテグレーション機能を人がログインすることなくPendo MCPサーバーに接続する必要がある場合は、Pendoサービスアカウントを使用してください。サービスアカウントはOAuthクライアント認証情報付与を利用しており、これによりアプリケーションはクライアントIDとクライアントシークレットを使って認証できます。

ユースケース

サービスアカウントは、次のような場合に使用します。

  • ログインしているユーザーがいない状態でバックグラウンドで動作するAIエージェントまたはインテグレーションを構築している。
  • サーバーサイドアプリケーションまたはスケジュールされたジョブからPendoデータをクエリしたい。
  • Claude APIやClaude CodeなどのOAuthクライアント認証情報をサポートするAIツールからPendo MCPサーバーに接続する。

ClaudeやCursorなどのインタラクティブAIクライアントを接続する場合は、代わりにOAuthを使用してください。詳細については、「Pendo MCPサーバーへの接続」を参照してください。

各サービスアカウントは単一のPendoサブスクリプションとその中のアプリケーションに限定されます。複数のサブスクリプションを利用するには、それぞれのサブスクリプションに個別のサービスアカウントを作成してください。サービスアカウントへのアクセスには、Pendoのリージョン分離の仕組みも考慮されます。例えば、米国のサブスクリプションで作成されたサービスアカウントは、同じ管理者が両方のリージョンのサブスクリプションを使用している場合でも、EUデータをクエリできません。

サービスアカウント認証情報は、サービスアカウントが閲覧できるすべてのPendoデータへのプログラムによるアクセスを許可します。訪問者向けエージェントや公開アプリケーションのように、エンドユーザーが認証情報を通じてクエリを提出できるシステムではサービスアカウントを使用しないでください。

注:サービスアカウント認証は現在、Pendo MCPサーバーでのみ機能します。現時点では、サービスアカウントトークンを他のPendo APIに対して使用することはできません。

前提条件

サービスアカウントを作成する前に、以下のものが必要です。

  • サブスクリプションに含まれるPendo APIパッケージ。これがないとサービスアカウントは利用できません。
  • サービスアカウントを作成および管理するためのサブスクリプション管理者権限。
  • 起動しているPendo MCPサーバー。まだ有効になっていない場合は、サブスクリプション管理者は[設定]>[サブスクリプション設定]>[AI アクセス]に移動して、Pendo MCP サーバー(読み取り専用ツール)を有効にする必要があります。

ステップ1. サービスアカウントを作成する

サービスアカウントはPendoインテグレーション設定で管理されます。各サブスクリプションは最大25件のサービスアカウントをサポートします。

  1. [設定]>[インテグレーション]に移動し、[サービスアカウント]タブを開きます。
  2. [+ サービスアカウントを作成]を選択します。
  3. サービスアカウントの名前と説明を入力します。
  4. サービスアカウントにアクセス権限を付与するアプリケーションを選択してください。
  5. [作成]を選択します。
  6. クライアントIDクライアントシークレットをコピーしてください。安全な場所に保管してください。このウィンドウを閉じると、クライアントシークレットを再び確認することはできません。

重要:クライアントシークレットは直ちに保存してください。このウィンドウを閉じた後、Pendoはシークレットを再び表示できないため、シークレットを紛失した場合は、シークレットをローテーションして新しいシークレットを生成する必要があります。

ステップ2. アクセストークンを要求する

OAuthクライアント認証情報付与を使用して、クライアントIDとクライアントシークレットをベアラートークンと交換します。トークンは24時間有効で、リフレッシュトークンは含まれません。現在のトークンが期限切れになったら新しいトークンを申請してください。

お使いのPendoリージョンと一致するOAuthトークンエンドポイントを使用してください。ホスト名はMCPサーバーのURLと同じ地域パターンに従います。

地域 OAuthトークンエンドポイント
米国 https://app.pendo.io/api/oauth/v1/token
US1 https://us1.app.pendo.io/api/oauth/v1/token
EU https://app.eu.pendo.io/api/oauth/v1/token
日本 https://app.jpn.pendo.io/api/oauth/v1/token
オーストラリア https://app.au.pendo.io/api/oauth/v1/token

以下のパラメータを本文に含め、application/x-www-form-urlencoded形式でエンコードしたPOSTリクエストを送信してください。

  • grant_type=client_credentials
  • client_id(サービスアカウントのクライアントID)
  • client_secret(サービスアカウントのクライアントシークレット)
  • scope=read:me

リクエストの例:

curl -X POST https://app.pendo.io/api/oauth/v1/token \
 -H"Content-Type: application/x-www-form-urlencoded"
 -d"grant_type=client_credentials"
 -d"client_id=YOUR_CLIENT_ID"
 -d"client_secret=YOUR_CLIENT_SECRET"
 -d"scope=read:me"

応答には、access_token、トークンの種類(Bearer)、秒単位の有効期限が含まれます。

ステップ3. Pendo MCPサーバに接続する

AIクライアントがPendo MCPサーバーを呼び出す際に、Authorizationヘッダーでアクセストークンを渡してください。

Authorization: Bearer YOUR_ACCESS_TOKEN

正確な設定はAIクライアントによって異なります。ベアラートークン認証を使用したカスタムMCPサーバーの追加方法や、カスタムOAuth認証情報をMCPリクエストに挿入する方法については、AIツールのドキュメントをご参照ください。

サービスアカウントをローテーションまたは削除する

クライアントIDを変更せずにサービスアカウントのシークレットをローテーションして新しいクライアントシークレットを生成することも、サービスアカウント自体を削除することも可能です。

サービスアカウントのシークレットをローテーションする

シークレットが漏洩した疑いがある場合、または定期的な認証情報管理の一環として、機密情報をローテーションします。ローテーションは、クライアントIDを保持したまま新しいクライアントシークレットを生成するので、サービスアカウントを再作成することなくインテグレーションを更新できます。

  1. [設定]>[インテグレーション]>[サービスアカウント]に移動します。
  2. 表からサービスアカウントを見つけて、[シークレットをローテーション]を選択します。
  3. 新しいクライアントシークレットをコピーし、インテグレーションを更新してください。

注:シークレットをローテーションすると、以前のシークレットは直ちに無効になります。

サービスアカウントを削除する

サービスアカウントを削除すると、そのアカウントの認証情報は完全に無効になります。アカウントを使用したインテグレーションは機能しなくなります。

  1. [設定]>[インテグレーション]>[サービスアカウント]に移動します。
  2. 表の中から該当するサービスアカウントを見つけ、削除アイコンを選択してください。
  3. 削除を確認してください。

トラブルシューティング

問題が発生した場合は、以下のチェック項目を使用してサービスアカウントの設定をトラブルシューティングしてください。

トークンリクエストが認証エラーを返す

以下の点を確認してください。

  • クライアントIDとクライアントシークレットがサービスアカウント作成時にコピーした値と一致する。
  • リクエスト本文はapplication/x-www-form-urlencodedとしてエンコードされている。
  • 正しいリージョンのトークンのエンドポイントを使用している。
  • サービスアカウントは削除されていない。

MCPリクエストが認証エラーを返す

以下の点を確認してください。

  • トークンの有効期限が切れていない。24時間以上経過した場合は、新しいトークンをリクエストしてください。
  • AuthorizationヘッダーはBearerプレフィックスを含む。
  • サービスアカウントには、クエリしているデータにアクセスするために必要なアプリケーション役割が備わっている。
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています