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

保存された認証情報

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

  • LDAP認証ユーザーパスワード。「LDAP 認証」を参照してください。

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

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

Secure Credential Storeのバックアップ

コントローラのバックアップ計画に、Secure Credential Store ファイル .appd.scskeystore が含まれていることを確認してください。Secure Credential Keystore ファイルが破損した場合は、バックアップから .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'
    CODE

     

  2. システムアカウントのアクセスキーを生成したら、次の操作を行います。

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

      <controller-dir>/appserver/jetty/appagent/verX.X.X.X/conf/controller-info.xml
      CODE
    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_auth.account set access_key='ENCRYPTED_SYSTEM_ACCOUNT_ACCESS_KEY' where id='00000000-0000-0000-0000-000000000001'; update mds_auth.account set access_key='ENCRYPTED_SYSTEM_ACCOUNT_ACCESS_KEY' where id='00000000-0000-0000-0000-000000000002'; 
      CODE
    5. エージェントユーザー用のアカウントアクセスキーを更新します。
      UPDATE user SET encrypted_password = SHA1('<plain_text_system_account_access_key>') WHERE account_id = <system_account_id> AND name = 'singularity-agent';
      CODE

    6. appserver を停止します。

    7. appserver を起動します。

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

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

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