Versions Compared

    Key

    • This line was added.
    • This line was removed.
    • Formatting was changed.
    Comment: Published by Scroll Versions from this space and version 20.5
    Sv translation
    languageen

    This page provides instructions on how to integrate the AppDynamics Controller with LDAP directory servers. 

    About LDAP Support

    You can delegate Controller UI authentication and authorization to external directory servers that comply with LDAP (Lightweight Directory Access Protocol) version 3.

    While the Controller should be able to work with any LDAPv3-compliant server, the Controller has been verified to work with these LDAP products:

    • Microsoft Active Directory for Windows Server 2008 SP2+
    • OpenLDAP 2.4+

    To configure LDAP authentication in the Controller, you need to configure connection settings to the LDAP server and the queries that return user or group data. By mapping LDAP groups to roles, you can provision permissions in the AppDynamics Controller based on LDAP groups.

    What Happens if the LDAP Server Becomes Unavailable?

    If the LDAP server configured for Controller authentication becomes unavailable for any reason, the Controller falls back to local user authentication. Given this possibility, you should provision local user accounts in AppDynamics for the administrative users who will need access if the LDAP server becomes unavailable.

    What Happens if a User Cannot be Found in the LDAP Directory?

    If a user cannot be found in the LDAP directory, the authentication failure event is logged as a warning. The user, whether it is a regular controller user or a REST client user, may still be authenticated through local authentication.

    Preparing the LDAP Directory for AppDynamics Integration

    To use an LDAP authentication provider, your AppDynamics Controller needs to be able to connect to the external LDAP server. A good practice is to create a user account in LDAP specifically for the Controller to use to authenticate itself to the server and run the queries. The Controller user only needs to have search privileges in LDAP.

    While you can map existing LDAP group definitions to roles in AppDynamics, your existing groups may not correspond directly to roles in AppDynamics. The easiest way to map LDAP groups to Controller roles is to create a group in LDAP for each role you want to be mapped in AppDynamics. LDAP groups for each role provides you with a manageable, 1-to-1 correspondence between your LDAP groups and AppDynamics roles.

    For example, a possible LDAP group scheme for mapping in AppDynamics would be:

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

    The sample group names imply having custom roles in AppDynamics targeted to specific applications, AppA and AppB.

    Naming the groups with a common prefix, as the AppDynamics- prefix in our sample, allows you to use a relatively simple LDAP group filter. A group filter for the sample groups could be:

    Code Block
    (&(objectClass=group)(cn=AppDynamics-*))
    

    Anchor
    Usingpagedresultsforlargeresultsets
    Usingpagedresultsforlargeresultsets
    Using Paged Results for Large Result Sets

    LDAP servers are sometimes configured to limit the number of entries it can return in a query response. If the results of your user or group query exceed that limit, AppDynamics reports a max_results_exceeded error.

    To avoid this error, first try to refine your query filter to produce a smaller result set. The results must include the users who will need to access the AppDynamics UI. 

    If your LDAP server supports it, you can also enable paged results in the Controller LDAP configuration. With paged results, the LDAP server divides the result set into separately transmitted blocks.

    The paged results feature applies to the behind-the-scenes interaction between the AppDynamics Controller and the backend LDAP server. It does not affect the UI view of the data.

    LDAP Authentication with a SaaS AppDynamics Controller

    Depending on your organization's security policies, it may not be possible to use LDAP authentication with the SaaS AppDynamics Controller, since doing so requires opening your firewall to permit Controller access to your corporate LDAP server.

    However, if you do want to enable LDAP authentication with SaaS AppDynamics Controller, you will need to permit access through the firewall for the IP range of 69.27.44.0/24, the IP address range assigned to AppDynamics SaaS Controllers. The firewall rule should allow incoming LDAP requests from the Controller at the LDAP port you configure.

    Before Starting

    To perform LDAP configuration, you must have:

    • An LDAP server. There is a one-to-one correspondence between an AppDynamics account and an LDAP server.
    • An account on an AppDynamics SaaS or on-premises Controller
    • Account administrator privileges on the AppDynamics Controller, as described in User Management.
    • Network connectivity between your LDAP server and the Controller. If using a SaaS Controller, the LDAP server may not be accessible to the Controller without enabling access through your network firewall. See LDAP Authentication with a SaaS AppDynamics Controller.

    Configuring LDAP Authentication

    At a high level, the steps for setting up LDAP authentication include:

    • Configure the connection to the LDAP server.
    • Configure and test the LDAP query that returns users to be provisioned in the AppDynamics Controller.
    • Configure the LDAP query that returns the LDAP groups to be mapped to AppDynamics roles.
    • Map the users or groups to roles in AppDynamics.

    Configure the Connection to the LDAP Server

    As an Administrator or Account Owner in the Controller UI, you can configure LDAP authentication by selecting LDAP in the Authentication Provider tab under Settings > Administration

    If the user or group query that you need to use will return more entries than permitted by the LDAP server and the server support paged results, configure paged results as follows:

    • Enable Paging: Check this option to have the Controller request paged results from the server when submitting user or group queries.
    • Page Size: Enter the number of entries per round-trip from the AppDynamics Controller to the LDAP server. The default is 500. 

    The page size should be the total number of entries to be returned divided by the number of round trips between the LDAP server and the Controller that are tolerable. For example, if you expect to receive 1200 results in a query and you can tolerate a maximum of two round trips, set the page size to 600 (1200 /2). See Using paged results for large result sets for more information.

    Configure the LDAP connection settings: 

    • Host: Required address of the LDAP server.
    • Port: Port on which the LDAP server listens. The default is 636 for an SSL connection and 389 if not using SSL. Required.
    • Use SSL: Enabled by default to use a secure connection to the LDAP server. Clear if not using SSL.
    • Enable Referrals: Enabled by default to support LDAP referrals. A referral is when an LDAP server forwards an LDAP client request to another LDAP server. Each referral event is referred to as a hop.
    • Maximum Referral Hops: The maximum number of referrals that AppDynamics will follow in a sequence of referrals. The default is five.
    • Bind DN: Distinguished Name of the user on the LDAP Server on whose behalf the AppDynamics application searches. Required.
    • Password: Password of the user on the LDAP server. Required. Your settings should look something like this: 

      LDAP Configuration 

    Configure Users

    In the LDAP Configuration page, configure information to find LDAP users:

    • Base DN: Location in the LDAP tree to begin recursively searching for users. Required.
    • Filter: Optional LDAP search string that filters the items matched from the base DN. See RFC2254 for information about LDAP search filters.
    • Login Attribute: The LDAP field that corresponds to the username users will enter when logging in to the AppDynamics UI. The default is uid. For Active Directory, this would typically be sAMAccountName.
    • Display Name Attribute: The LDAP field to use as the user's display name.
    • Group Membership Attribute: Optional user group membership field. Recommended for faster retrieval.
    • Email Attribute: Optional user email address. 

      Users Query

    The Test Query button checks the connection. If successful, a screen displays the first few users returned by the query. The test does not return the entire result set if the result set is large.

    Configure Groups

    Optionally, you can map LDAP groups to user roles in the AppDynamics Controller. To do this, you need to set up the LDAP query that returns the LDAP groups to map, as follows.

    • Base DN: Location in the LDAP tree to begin recursively searching for groups. Required.
    • Enable Nested Groups: Option to include nested LDAP groups to a depth of 10.
    • Filter: Optional LDAP search string that filters the items matched from the base DN. See RFC2254 for information about LDAP search filters.
    • Name Attribute: The LDAP field that contains the name of the group. Default is cn. Required.
    • Description Attribute: The LDAP field that contains a description of the group. Optional.
    • User Membership Attribute: Identifies members of the groups. Optional.
    • Referenced User Attribute: Optional child attribute of the User Membership Attribute. Disabled if the parent is empty. Identifies property of the user that the user membership attribute contains. 

      Groups Query

    The Test Query button checks the connection. If successful, the first few groups returned by the query are shown.

    You can now assign permissions in the AppDynamics Controller to users or groups.

    Assign AppDynamics Permissions to an LDAP User

    1. In Settings > Administration, click the Users tab. If LDAP is enabled and correctly configured, the AppDynamics Controller fetches the user names from the LDAP server.
    2. Select the name of the user to whom you want to assign permissions.
    3. In the Roles panel, add or delete the roles that you want to assign to this user. You can assign multiple roles to a user. 
    4. Click Save.

      LDAP User Permissions

    Assign AppDynamics Permissions to an LDAP Group

    LDAP Group configuration is optional.

    1. In Settings > Administration, click the Groups tab. If LDAP is enabled and correctly configured, AppDynamics fetches the group names in LDAP.
    2. Select the name of the group to which you want to assign permissions.
    3. In the Roles panel, add or delete the roles that you want to assign to this group. You can assign multiple roles to a group.
    4. Click Save

      Group Permissions

    Anchor
    cacherefreshfrequency
    cacherefreshfrequency
    Configuring the LDAP Cache Synchronization Frequency

    The Controller keeps information about LDAP users and groups in a local cache. It regularly connects to the LDAP server to synchronize its cache with the LDAP server.

    The Controller caches information about users and group membership. It does not cache user passwords. Accordingly, the Controller authenticates the user credentials against the LDAP server at the start of every user session.

    If a user account is removed from LDAP, the change is reflected immediately; that is, the user will not be able to log in to the Controller UI from that point. However, if the user has an existing session in the Controller UI, that session continues until the user logs out or the session expires. 

    If the user's access to the Controller is based on group membership and the user is removed from the group but maintains an account in the LDAP server, the user will be able to log in to the Controller until the next time synchronization with the LDAP server occurs. By the default synchronization frequency setting, this ability to access the Controller UI could continue for up to an hour. 

    You can modify the default synchronization frequency of one hour as described in the following procedures.  

    Configure the LDAP Synchronization Frequency

    1. Stop the Controller application server:
      • On Linux, run:

        No Format
        platform-admin.sh stop-controller-appserver
      • On Windows, run this command from an elevated command prompt, which you can open by right-clicking the Command Prompt icon in the Windows Start menu and choosing Run as administrator:

        No Format
        platform-admin.exe cli stop-controller-appserver
    2. Open the <Controller-Installation-Directory>/appserver/glassfish/domains/domain1/config/domain.xml file for editing.
    3. In the <jvm-options> element, add a system property named appdynamics.ldap.sync.frequency with the desired synchronization frequency in milliseconds.
      For example, to have the Controller synchronize to the LDAP server every 15 minutes (900000 milliseconds), add: 

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

      The default is 3600000 milliseconds (1 hour).

    4. Save the file.
    5. Restart the Controller app server:
      • On Linux, run: 

        No Format
        platform-admin.sh start-controller-appserver
      • On Windows, run the following in an elevated command prompt:

        No Format
        platform-admin.exe cli start-controller-appserver
    Sv translation
    languageja


    Appd tocbox

    On this page:

    Table of Contents
    maxLevel2
    minLevel2

    このトピックでは、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 グループフィルタを使用することができます。サンプルグループのグループフィルタは次のようになります。

    Code Block
    (&(objectClass=group)(cn=AppDynamics-*))
    

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

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

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

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

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

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

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

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

    はじめに

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

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

    LDAP認証の構成

    LDAP認証の大まかな設定手順は次のとおりです。

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

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

    コントローラ UI の管理者または Account owner は、Settings > Administration の下にある Authentication Provider タブで LDAP 認証を構成できます。

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

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

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

    LDAP接続設定の構成:

    • ホスト: 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 構成ページで、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. Security Configuration ウィンドウで、Users タブをクリックします。
      LDAPが有効で正しく構成されている場合、AppDynamics コントローラはLDAPサーバーからユーザー名を取得します。
    2. 権限を割り当てるユーザーの名前を選択します。
    3. Rolesパネルで、このユーザーに割り当てるロールにチェックマークを付けます。1人のユーザーに複数のロールを割り当てることができます。
       
    4. Save をクリックします。

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

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

    1. Security Configuration ウィンドウで、Groups タブをクリックします。
      LDAP が有効で正しく構成されている場合、AppDynamics コントローラは LDAP サーバからグループ名を取得します。
    2. 権限を割り当てるグループの名前を選択します。
    3. Rolesパネルで、このグループに割り当てるロールにチェックマークを付けます。1つのグループに複数のロールを割り当てることができます。
    4. Save をクリックします。 

    Anchor
    cacherefreshfrequency
    cacherefreshfrequency
    LDAPキャッシュ同期頻度の構成

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

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

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

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

    以下の手順で、デフォルトの同期頻度(1 時間ごと)を変更できます。  

    LDAP同期頻度の構成

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

        No Format
        platform-admin.sh stop-controller-appserver
      • Windows の場合は、管理者特権でのコマンドプロンプトから次のコマンドを実行します(Windows のスタートメニューでコマンド プロンプト アイコンを右クリックし、Run as administrator を選択)。

        No Format
        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サーバーに同期させるには、以下を追加します。

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

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

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

        No Format
        platform-admin.sh start-controller-appserver
      • Windowsの場合は、管理者特権のコマンドプロンプトで以下のコマンドを実行します。

        No Format
        platform-admin.exe cli start-controller-appserver