このページでは、サービスプリンシパルを作成および使用し、提供された REST API を使用して AppDynamics Cloud テナントへの安全なアクセスを提供する方法について説明します。 


サービスプリンシパルは、データ取り込みを除くすべての API を使用できます。エージェントプリンシパルは、データを取り込むことしかできません。 

サービスプリンシパルの作成

サービスプリンシパルを作成するには、会社の管理者であり、クラウドテナントを所有している必要があります。

OAuth2 トークンの生成に使用するサービスプリンシパルを作成する必要があります。 

  1. アカウント管理ポータルに Company Administrator としてログインします。
  2. Access Management > Service Principals にアクセスします。このオプションは、アカウントにテナントが関連付けられている場合にのみ表示されます。
  3. アカウントに複数のテナントが関連付けられている場合は、ドロップダウンからテナントを選択します。
  4. Create をクリックして、そのテナントの新しいサービスプリンシパルを作成します。 
    Create Service Principals
  5. 使用目的を表すわかりやすい [Name] を入力します。
  6. わかりやすい [Description] を入力します。
  7. [Authentication Type] を選択します。 
    1. [Basic]:認証情報は、トークンリクエストの一部として基本認証ヘッダーで渡されます。
    2. [Post]:認証情報は、トークンリクエストの一部としてリクエスト本文で渡されます。 
  8. [Create] をクリックして [Client ID] と [Secret] を取得します。 

    このタイミングでしか、シークレットを表示、コピー、またはダウンロードできません。モーダルを閉じる場合は、シークレットをローテーションして新しいものを生成する必要があります。

    シークレットが侵害されたと思われる場合は、シークレットを取り消すか、サービスプリンシパルを削除して、そのシークレットで新しいトークンが生成されないようにすることができます。

  9. secret.csv ファイルを [Download] する、または [Client ID] と [Secret] を [Copy] します。  
  10. ダイアログを閉じます。

アクセストークンの入手

クラウドテナントへの API アクセスコール用のアクセストークンを生成して使用します。アクセストークンは 1 時間有効で、有効期間中は再利用できます。アクセストークンは JSON Web トークン(JWT)オープン業界標準を使用するため、それらを復号化しても機密情報は表示されません。

UI または REST API を使用して、発行されたアクセストークンを表示または取り消すことはできません。

トークンの生成

アプリケーションのアプリケーション プリンシパル トークン リクエストは、標準の OAuth2 リクエスト形式に準拠します。アプリケーション プリンシパルの作成 時に選択した認証方法によって、トークンリクエストでクライアント資格情報を提供する方法が決まります。

この URL を使用して、tenantId を取得できます。tenantName はクラウドテナントの名前です。 

curl "https://observe-tenant-lookup-api.saas.appdynamics.com/tenants/lookup/{tenantName}.observe.appdynamics.com" 
CODE


[Basic] 認証を使用するクライアント構成の場合、クライアント資格情報は基本認証ヘッダーで送信されます。例:

curl -X "POST" "https://{tenantName}.observe.appdynamics.com/auth/{tenantId}/default/oauth2/token" \
     -H 'Content-Type: application/x-www-form-urlencoded; charset=utf-8' \
     -u '{client_id}:{client_secret}' \
     --data-urlencode "grant_type=client_credentials"
CODE


クライアント構成で [Post] 認証が使用されている場合、クライアント資格情報はリクエスト本文で送信されます。例:

curl -X "POST" "https://{tenantName}.observe.appdynamics.com/auth/{tenantId}/default/oauth2/token" \
     -H 'Content-Type: application/x-www-form-urlencoded; charset=utf-8' \
     --data-urlencode "grant_type=client_credentials" \
     --data-urlencode "client_id={client_id}" \
     --data-urlencode "client_secret={client_secret}"
CODE


資格情報を渡すために使用する方法はすべて、標準の OAuth 2 トークン応答を返します。例:

{
  "access_token": "{JWT accessToken}",
  "expires_in": 3599,
  "scope": "introspect_tokens revoke_tokens",
  "token_type": "bearer"
}
CODE


返されたアクセストークンを、承認ヘッダー内の許可された API へのリクエストでベアラタイプとして使用できます。例:

curl "https://{tenantName}.observe.appdynamics.com/{someAPI}" \
     -H 'Authorization: Bearer {accessToken}'
CODE

サービスプリンシパルの管理

サービスプリンシパルはクラウドテナント固有です。選択したクラウドテナントで実行する管理は、別のテナントに伝達されません。言い換えれば、複数のクラウドテナントがあり、それぞれに機能するコードを記述したい場合は、必要な機能を実行するために、システムコードでクラウドテナントごとにサービスプリンシパルとシークレットを作成して維持する必要があります。

サービスプリンシパルを作成するには、会社の管理者であり、クラウドテナントを所有している必要があります。

[Company Administrator] としてアカウント管理ポータルにログインし、[Access Management >][Service Principals] に移動します。 

Service Principals

サービスプリンシパルの表示、編集、および削除

  1. [Tenant Name]Drop down menu を選択して、そのテナントのサービスプリンシパルのリストを表示します。 
  2. (オプション)選択したテナント内のサービスプリンシパルを [Search] します。
  3. 優先するサービスプリンシパルのボックスをオンにします。

表示するには:

View をクリックして次のものを表示します。

  • Name
  • Description
  • Authentication Type
  • Client ID

編集するには:

  1. Edit をクリックし、[Details] ページを開きます。
  2. [Name] または [Description] あるいはその両方を編集します。
  3. [Authentication Type] を更新します。 
    1. [Basic]:認証情報は、トークンリクエストの一部として基本認証ヘッダーで渡されます。
    2. [Post]:認証情報は、トークンリクエストの一部としてリクエスト本文で渡されます。 
  4. [Save] をクリックします。

削除するには:

  1. サービスプリンシパルの行を選択して、実行可能なオプションを表示します。
  2. をクリックします。
  3. [Delete] をクリックして確認します。

サービスプリンシパルを削除すると、それを使用するすべての統合がすぐに失敗し、元に戻すことはできません。 統合を元に戻すには、新しいクライアント ID とシークレットを作成する必要があります。

シークレットのローテーションまたは取り消し

シークレットをローテーションすると、2 つのシークレットが一定期間有効になります。シークレットをローテーションすると、システムは認証サーバーにコールを送信し、新しいシークレットを提供し、古いシークレットを非推奨にします。古いシークレットは、その期限の前に取り消さない限り、30 日間有効です。

  1. [Tenant Name]Drop down menu を選択して、そのテナントのサービスプリンシパルのリストを表示します。 
  2. 優先するサービスプリンシパルのボックスをオンにします。
  3. View をクリックします。
    • [Rotate] をクリックしてコピーまたはダウンロードする新しいシークレットを生成して表示します.

      シークレットをローテーションしても、古い方のシークレットは無効になりません。古いシークレットは、その期限の前に取り消さない限り、最大 30 日間有効です。

    • [Revoke Old Secret ] をクリックしてシークレットを取り消します。
      失効したアクセストークンを使用したコールは、401 Unauthorized error HTTP ステータスコードにより認証に失敗します。 

使用例

開発エンジニアとして、クラウド接続を作成するためのアプリケーションを実装します。統合はシステムで数週間実行されていて、いくつかの接続が成功しています。会社のセキュリティポリシーでは、90 日ごとに統合シークレットをローテーションする必要があります。現在のシークレットが外部の第三者によって使用されないようにする必要がありますが、統合が引き続き機能することを許可する必要があります。

アカウント管理から [Cloud Tenant Service Principal Details] ページにすぐにアクセスし、シークレットをローテーションして新しいものを生成します。統合の古いシークレットを新しいシークレットに置き換え、アプリケーションを再起動します。古いシークレットは不要になったので、取り消したいとします。[Cloud Tenant Service Principal Details] ページに戻ると、シークレットを取り消すことができることがわかります。