コントローラが、認証情報の暗号化で使用される秘密鍵を含む Secure Credential Keystoreを作成します。

保存された認証情報

Secure Credential Storeは以下の認証情報を管理します。

  • LDAP認証ユーザーパスワード。詳細については、LDAP 認証を参照してください。

  • データベースコレクタの認証情報。データベース ユーザ パスワードやマシンユーザパスワードなど。 
  • SMTPサーバー/メールパスワード。
  • AppDynamicsアカウントアクセスキー

以下のセクションで説明するとおり、コントローラの通常のバックアップ手順の一部でCredential Storeをバックアップします。

Secure Credential Storeのバックアップ

コントローラのバックアッププランに、Secure Credential Keystore ファイル .appd.scskeystore. が含まれていることを確認します。Secure Credential Store ファイルが破損した場合は、バックアップから .appd.scskeystore ファイルを復元してください。

高可用性モードのコントローラを実行した場合、プライマリコントローラとセカンダリコントローラの両方で、同じ Secure Credential Keystore ファイルを使用する必要があります。HAデプロイ戦略を使用する場合、Secure Credential Keystoreファイルがプライマリからセカンダリに伝搬されることを確認してください。

セキュリティ侵害を受けたSecure Credential Storeの置換

以下の手順で、Secure Credential Storeの置換方法について説明します。ここでは以下が想定されています。

  • シングルテナントのコントローラインストールを利用できます。
  • アカウントアクセスキーのプレーンテキストの値を把握している。コントローラの [Settings > License] にあるアクセスキーを確認できる。

後続セクションで詳しく述べるように、手順は次のパートに分割されています。

  1. 新しいSecure Credential Storeの作成
  2. コントローラを新しいSecure Credential Storeのパスワードで更新します。
  3. アカウントアクセスキーを更新します。
  4. システムアカウントのアカウントアクセスキーを更新します。
  5. コントローラを再起動してパスワードを更新します。

新しいSecure Credential Storeの作成

  1. 既存のSecure Credential Keystoreファイルを名前変更します。
  2. Secure Credential Storeユーティリティを使用して、新しいSecure Credential Keystoreを初期化します。

    デフォルトでは、ユーティリティは次の場所にインストールされます。<controller_home>/tools/lib/scs-tool.jar

    例: 

    /controller/jre8/bin/java -jar ./scs-tool.jar generate_ks -filename '<controller_home>/.appd.scskeystore' -storepass 'MyCredentialStorePassword'

    Secure Credential Storeユーティリティが、キーストアが作成され初期化されたことを確認します。

    Successfully created and initialized new KeyStore file: /opt/appdynamics/Controller/.appd.scskeystore
    Verification - New KeyStore file: /opt/appdynamics/Controller/.appd.scskeystore is properly initialized.

コントローラの新しいSecure Credential Storeパスワードの更新

  1. コントローラをシャットダウンします。

  2. Secure Credential Keystoreの初期化に使用したパスワードを難読化します。

    /controller/jre8/bin/java -jar <controller_home>/tools/lib/scs-tool.jar obfuscate -plaintext '<Secure_Credential_Store_Password>'

    例:

    /controller/jre8/bin/java -jar /opt/appdynamics/Platform/controller/tools/lib/scs-tool.jar obfuscate -plaintext 'MyCredentialStorePassword'

    Secure Credential Store ユーティリティは、コントローラ構成で使用する難読化パスワードを書き出します。例: 

    s_gsnwR6+LDch8JBf1RamiBoWfMvjjipkrtJMZXAYEkw8=
  3. root ユーザとしてログインします。

    <controller_home>/bin/controller.sh login-db

    Windowsではcontroller.batを使用します。

  4. Secure Credential Keystoreのパスワードを、難読化された新しいパスワードに更新します。

    UPDATE global_configuration_cluster
    SET value = '<obfuscated_secure_credential_keystore_password>'
    WHERE name = 'scs.keystore.password';

アカウントアクセスキーの更新

  1. root ユーザとしてログインします。

    <controller_home>/bin/controller.sh login-db

    Windowsではcontroller.batを使用します。

  2. 対象アカウントのアカウントアクセスキーをプレーンテキストの文字列に更新します。コントローラが開始されると、このアカウントアクセスキーは暗号化されます。

    UPDATE account
    SET access_key = '<plain_text_account_access_key>',
        encryption_scheme = NULL
    WHERE id = <account_id>;

    以下のクエリを実行して、アカウント ID を取得できます。select id account_id,name account_name,access_key,encryption_scheme from account;

  3. アカウントアクセスキーのプレーンテキストの値を変更した場合のみ、エージェントユーザ用のアカウントアクセスキーを更新します。

    UPDATE user
    SET encrypted_password = SHA1('<plain_text_account_access_key>')
    WHERE account_id = <account_id>
    AND name = 'singularity-agent';

    アカウントアクセスキーのプレーンテキストの値を変更した場合は、すべてのエージェント用のアクセスキーを更新する必要があります。

    アクセスキーは、シングルテナント コントローラの「customer1」アカウントと、マルチテナント コントローラの「デフォルト」アカウントに属しています。さらに、account_id は、シングルテナント コントローラの「customer1」アカウントとマルチテナント コントローラの「デフォルト」アカウントのアカウント ID です。

  4. デフォルトのライセンスルールがある場合は、v1_license_rules API を使用してアカウントアクセスキーを更新します。 

    以前のコントローラバージョンの場合、ブラウザツールを使用してライセンスルールを移行する必要があります。

システムアカウントのアカウントアクセスキーの更新

  1. システムアカウントの新しいアクセスキーを生成します。

    ../jre/1.8.0_152/bin/java -jar ./tools/lib/scs-tool.jar encrypt -filename ./.appd.scskeystore -storepass 'REPLACE_TO_NOT_OBFUSCATED_STOREPASS_VALUE' -plaintext 'NEW_SYSTEM_ACCOUNT_ACCESS_KEY'
  2. システムアカウントのアクセスキーを生成したら、次の操作を行います。

    1. controller-info.xml ファイルを編集して、特定の情報を追加します。

      <controller-dir>/appserver/glassfish/domains/domain1/appagent/ver4.X.X.X/conf/controller-info.xml
    2. 難読化された storepass 値を使用して credential-store-password 値を編集します。
    3. 新しい暗号化されたアクセスキー値を使用して account-access-key を編集します。
    4. SQL を実行します。

      update account set access_key='ENCRYPTED_SYSTEM_ACCOUNT_ACCESS_KEY' where id=1; update mds_account.account set access_key='ENCRYPTED_SYSTEM_ACCOUNT_ACCESS_KEY' where id='00000000-0000-0000-0000-000000000001'; update mds_account.account set access_key='ENCRYPTED_SYSTEM_ACCOUNT_ACCESS_KEY' where id='00000000-0000-0000-0000-000000000002';
    5. appserver を停止します。

    6. appserver を開始します。

LDAP、DBmon、または HTTPリクエストアクションおよびテンプレートを使用する場合は、これらのコンポーネントも同じパスワードで再設定して、新しい SCS キーで暗号化されるようにする必要があります。

コントローラの再起動およびパスワードの更新

  1. コントローラを再起動します。
  2. 次のアクセス権限を持つユーザでコントローラにログインします。
    • 管理ユーザー、グループ、ロール、認証など。
    • メール/SMSの構成
  3. 必要に応じて以下のパスワードを再入力します。