このページでは、AppDynamics コントローラと LDAP ディレクトリサーバーを統合する手順について説明します。 

LDAP サポート

コントローラUIの認証および承認を、LDAP(Lightweight Directory Access Protocol)バージョン3に準拠する外部のディレクトリサーバーに委任できます。

コントローラは、LDAPv3準拠のサーバーで動作しますが、以下のLDAP製品に対しては検証済みです。

  • Microsoft Active Directory for Windows Server 2008 SP2 以降
  • OpenLDAP 2.4 以降

コントローラでLDAP認証を構成するには、LDAPサーバーへの接続設定とユーザーまたはグループデータを返すクエリを構成する必要があります。LDAPグループをロールにマップすると、LDAPグループに基づいてAppDynamicsコントローラで権限を与えることができます。

  • LDAP サーバーが利用できなくなった場合
    コントローラの認証用に構成された LDAP サーバーを何らかの理由で利用できなくなった場合、コントローラはローカルユーザー認証にフォールバックします。この可能性があるため、LDAPサーバーを利用できなくなった場合にアクセスする必要のある管理ユーザー用に、AppDynamicsでローカルユーザーアカウントを用意しておく必要があります。

  • LDAP ディレクトリでユーザーが見つからない場合
    LDAP ディレクトリにユーザーが見つからない場合、認証エラーイベントが警告として記録されます。通常のコントローラユーザーまたはRESTクライアントユーザーのいずれの場合でも、ユーザーはローカル認証によって認証できます。

AppDynamics 統合用 LDAP ディレクトリの準備

LDAP 認証プロバイダを使用するには、AppDynamics コントローラが外部 LDAP サーバーに接続できる必要があります。明示的に LDAP でユーザーアカウントを作成し、そのアカウントを使用してコントローラがサーバーに対して自身を認証し、クエリを実行することをお勧めします。コントローラユーザーは、LDAP での検索権限のみを持つ必要があります。

既存のLDAPグループの定義をAppDynamicsのロールにマップすることは可能ですが、既存のグループがAppDynamicsのロールに直接対応していない場合があります。LDAPグループをコントローラのロールにマップする一番簡単な方法は、AppDynamicsでマップする各ロールに対してLDAPのグループを作成することです。ロールごとに LDAP グループを作成すると、LDAP グループと AppDynamics のロールを 1 対 1 で対応させることができるため、管理しやすくなります。

たとえば、AppDynamicsにおいてマッピングするためのLDAPグループスキームは次のようになります。

  • AppDynamics-AppA-ReadOnly
  • AppDynamics-AppA-Admins
  • AppDynamics-AppA-DashboardViewers
  • AppDynamics-AppB-ReadOnly
  • AppDynamics-AppB-Admins
  • AppDynamics-AppB-DashboardViewers

サンプルのグループ名は、特定のアプリケーションであるAppAとAppBを対象としたAppDynamicsのカスタムロールを持っていることを示しています。

共通のプレフィックスを使用してグループに名前を付けると(サンプルではプレフィックス AppDynamics-)、比較的シンプルな LDAP グループフィルタを使用することができます。サンプルグループのグループフィルタは次のようになります。

(&(objectClass=group)(cn=AppDynamics-
*))
CODE

大規模な結果セットに対するページングされた結果の使用

LDAPサーバーの構成が、クエリの応答で返すエントリの数を制限していることがあります。ユーザーまたはグループクエリの結果がその制限を超えると、AppDynamics で max_results_exceeded エラーが報告されます。

このエラーを回避するためには、クエリフィルタを調整し、結果セットのサイズを小さくします。AppDynamics UI にアクセスするユーザーは結果に含まれる必要があります。 

LDAPサーバーが対応していれば、コントローラのLDAP構成でページングされた結果を有効化することもできます。ページングされた結果を使用して、LDAPサーバーは個別に送信されるブロックに結果セットを分割します。

ページングされた結果の機能は、AppDynamicsコントローラとバックエンドLDAPサーバー間のバックエンドで行われるインタラクションに適用されます。データのUI表示には影響を及ぼしません。

SaaS AppDynamicsコントローラによるLDAP認証

組織のセキュリティポリシーによっては、SaaS AppDynamicsコントローラでLDAP認証を使用できない場合があります。これは、LDAP認証を使用するには、ファイアウォールを開いて、コントローラが会社のLDAPサーバーにアクセスできるようにする必要があるためです。

SaaS AppDynamics コントローラによる LDAP 認証を有効化する場合は、IP アドレス範囲 69.27.44.0/24(AppDynamics SaaS コントローラに割り当てられる)に対して、ファイアウォールを通じたアクセスを許可する必要があります。ファイアウォールのルールは、構成するLDAPポートでコントローラからのLDAPリクエストの受信を許可する必要があります。

はじめに

LDAP構成を実行するには、以下が必要です。

  • LDAPサーバー。AppDynamicsアカウントとLDAPサーバーが1対1で対応します。
  • AppDynamics SaaSまたはオンプレミスコントローラのアカウント
  • AppDynamics コントローラのアカウント管理者権限(「ルートユーザと Glassfish 管理者のパスワードの更新」を参照)
  • LDAPサーバーとコントローラ間のネットワーク接続。SaaSコントローラを使用している場合、LDAPサーバーがコントローラへアクセスするにはネットワークファイアウォールを通じたアクセスを有効にする必要が生じることがあります。LDAP Authentication with a SaaS AppDynamics Controllerを参照してください。

LDAP 認証の設定

LDAP 認証を設定する手順の概要は次のとおりです。

  • LDAPサーバーへの接続を構成します。
  • AppDynamicsコントローラにプロビジョニングするユーザーを返すLDAPクエリを構成してテストします。
  • AppDynamicsロールにマッピングするLDAPグループを返すLDAPクエリを構成します。
  • ユーザーまたはグループをAppDynamicsのロールにマッピングします。

LDAPサーバーへの接続の構成

コントローラ UI の管理者またはアカウント所有者として、[Settings > Administration] に移動し、[Authentication Provider] で [LDAP] を選択することで、LDAP 認証を構成できます。 

使用するユーザーまたはグループクエリが LDAP サーバーによって許可されている以上の数のエントリを返し、サーバーがページングされた結果をサポートしている場合、次のようにページングされた結果を構成します。

  • Enable Paging:このオプションを有効にすると、ユーザーまたはグループのクエリの送信時にサーバーからのページングされた結果がコントローラによりリクエストされるようになります。
  • Page Size:AppDynamics コントローラから LDAP サーバーへの往復あたりのエントリ数を入力します。デフォルトは 500 です。 

ページサイズは、返されるエントリの合計数をLDAPサーバーとコントローラ間の許容可能な往復数で割った数になります。たとえば、クエリで1200の結果を受け取ることが予想され、最大2往復まで許容可能な場合は、ページサイズを600(1200/2)に設定します。「大規模な結果セットに対するページングされた結果の使用」を参照してください。

LDAP接続設定の構成:

  • Host: LDAP サーバーの必須アドレス。
  • Port: LDAP サーバーがリッスンするポート。SSL 接続のデフォルトは 636、SSL を使用しない場合は 389 です。必須。
  • Use SSL: デフォルトでは、LDAP サーバーへのセキュアな接続の使用が有効になっています。SSLを使用しない場合はチェックを外します。
  • Enable Referrals: デフォルトでは、LDAP 紹介のサポートが有効になっています。紹介とは、LDAPサーバーがLDAPクライアントリクエストを別のLDAPサーバーに転送することです。各紹介イベントはホップと呼ばれます。
  • Maximum Referral Hops: AppDynamics が連続して従う紹介の最大数。デフォルトは5です。
  • Bind DN: LDAP サーバー上で識別されるユーザー名であり、AppDynamics アプリケーションでの検索に使用される名前です。必須。
  • Password: LDAP サーバー上のユーザーパスワード。必須。   

ユーザーの構成

[LDAP Configuration] ページで、LDAP ユーザー検索のための情報を構成します。

  • Base DN: ユーザーの再帰的な検索を開始する LDAP ツリーの場所。必須。
  • Filter: ベース DN からマッチする項目をフィルタリングする任意の LDAP 検索文字列。LDAP 検索フィルタに関する情報については、RFC2254 を参照してください。
  • Login Attribute: ユーザーが AppDynamics UI にログイン時に入力するユーザー名に対応する LDAP フィールド。デフォルトは uid です。Active Directory の場合は、通常 sAMAccountName です。
  • Display Name Attribute: ユーザーの表示名として使用する LDAP フィールド。
  • Group Membership Attribute: ユーザー グループ メンバーシップ フィールド(任意)。検索を高速化します。
  • Email Attribute: ユーザーの電子メールアドレス(任意)。 

接続を確認するには、[Test Query] を選択します。成功すると、クエリによって返された最初の数人のユーザーが画面に表示されます結果セットが大きい場合、テストは結果セット全体を返しません。

グループの構成

必要に応じて、LDAPグループをAppDynamicsコントローラのユーザーロールにマップできます。そのためには、マッピングする LDAP グループを返す LDAP クエリを次のように設定する必要があります。

  • Base DN:グループの再帰的な検索を開始する LDAP ツリーの場所。必須。
  • Enable Nested Groups: 深さ 10 までのネストされた LDAP グループを含めるオプション。
  • Filter: ベース DN からマッチする項目をフィルタリングする任意の LDAP 検索文字列。LDAP 検索フィルタに関する情報については、RFC2254 を参照してください。
  • Name Attribute: グループの名前を含む LDAP フィールド。デフォルトは cn です。必須。
  • Description Attribute: グループの説明を含む LDAP フィールド。オンプレミスの場合、HTTPのデフォルトは8090、HTTPSのデフォルトは8181です。
  • User Membership Attribute: グループのメンバーを識別します。オンプレミスの場合、HTTPのデフォルトは8090、HTTPSのデフォルトは8181です。
  • Referenced User Attribute: User Membership Attribute のオプションの子属性。親が空の場合は無効になります。ユーザーメンバーシップ属性に含まれるユーザーのプロパティを指定します。 

接続を確認するには、[Test Query] を選択します。確認が完了すると、クエリによって返された最初の数グループが表示されます。

これで、AppDynamicsコントローラで権限をユーザーまたはグループに割り当てられます。

AppDynamicsの権限のLDAPユーザーへの割り当て

  1. [Settings > Administration] で [Users] をクリックします。LDAPが有効で正しく構成されている場合、AppDynamics コントローラはLDAPサーバーからユーザー名を取得します。
  2. 権限を割り当てるユーザーの名前を選択します。
  3. [Roles] パネルで、このユーザーに割り当てるロールを追加または削除します。1人のユーザーに複数のロールを割り当てることができます。 
  4. Save をクリックします。

    LDAP User Permissions

AppDynamicsの権限のLDAPグループへの割り当て

LDAPグループの構成は任意です。

  1. [Settings > Administration] で [Groups] をクリックします。LDAP が有効で正しく構成されている場合、AppDynamics コントローラは LDAP サーバーからグループ名を取得します。
  2. 権限を割り当てるグループの名前を選択します。
  3. [Roles] パネルで、このグループに割り当てるロールを追加または削除します。1つのグループに複数のロールを割り当てることができます。
  4. Save をクリックします。 

    Group Permissions

LDAP キャッシュ同期頻度の設定

コントローラは、LDAP ユーザーおよびグループに関する情報をローカルキャッシュに保持します。LDAP サーバーに定期的に接続して、キャッシュを LDAP サーバーと同期させます。

コントローラは、ユーザーとグループメンバーシップに関する情報をキャッシュします。ユーザーパスワードはキャッシュされません。したがって、コントローラは、すべてのユーザーセッションの開始時に LDAP サーバーに対してユーザークレデンシャルを認証します。

ユーザーアカウントがLDAPから削除されると、変更は直ちに反映され、ユーザーはその時点からコントローラUIにログインできなくなります。ただし、ユーザーがコントローラ UI に既存のセッションを持っている場合、ユーザーがログアウトするかセッションの期限が切れるまでセッションは継続します。 

コントローラへのユーザーアクセスがグループメンバーシップに基づくユーザーがグループから削除され、その後もアカウントをLDAPサーバーに維持する場合、そのユーザーは次にLDAPサーバーとの同期が行われるまでコントローラにログインできます。同期頻度のデフォルト設定では、コントローラ UI へアクセスできる時間は最大 1 時間になります。 

LDAP同期頻度の構成

1 時間のデフォルトの同期頻度を変更するには、次の手順を実行します。

  1. コントローラのアプリケーションサーバーを停止します。
    • Linux では、次を実行します。

      platform-admin.sh stop-controller-appserver
    • Windows では、管理者特権でのコマンドプロンプトから次のコマンドを実行します(Windows の [ Start] メニューで [Command Prompt] を右クリックし、[Run as administrator] を選択)。

      platform-admin.exe cli stop-controller-appserver
  2. <Controller-Installation-Directory>/appserver/glassfish/domains/domain1/config/domain.xml ファイルを開いて編集します。
  3. <jvm-options> エレメントで、appdynamics.ldap.sync.frequency という名前のシステムプロパティをミリ秒単位の同期頻度で追加します。
    たとえば、15分(900000ミリ秒)毎にコントローラをLDAPサーバーに同期させるには、以下を追加します。

    <jvm-options>-Dappdynamics.ldap.sync.frequency=900000</jvm-options>

    デフォルトは3600000ミリ秒(1時間)です。

  4. ファイルを保存します。
  5. コントローラアプリケーションサーバーを再起動します。
    • Linux では、次を実行します。

      platform-admin.sh start-controller-appserver
    • Windows では、管理者特権でのコマンドプロンプトから次のコマンドを実行します。

      platform-admin.exe cli start-controller-appserver