サポートアドバイザリ:Java Agent DockerHub イメージの Alpine ベースから Scratch ベースへの移行

概要

Java エージェント 26.2.0 以降、Splunk AppDynamics は公式の JavaAgent DockerHub イメージを Alpine ベースのイメージから Scratch ベースのイメージへ移行します。この変更は、以前のベースイメージに関連する脆弱性に対処することでセキュリティを強化するための継続的な取り組みの一環です。新しい Scratch ベースのイメージは攻撃対象領域を大幅に削減します。JavaAgent バイナリと最小限のコピー用ユーティリティのみを含み、シェルは含まれません。

Scratch ベースのイメージはバージョン 25.10.0 で初めて導入されましたが、Cluster Auto-Instrumentation および非ルートユーザー構成に関する互換性の問題に対応するため、2025 年 11 月 14 日に Alpine ベースのバージョンが一時的に再リリースされました。クラスター エージェント バージョン 26.2.0 のリリースにより、これらの互換性の問題は解決されます。その結果、JavaAgent DockerHub リリース 26.2.0 以降は、Scratch ベースのみとなります。

Scratch イメージの主な特徴

  • Java エージェントのバイナリと最小限のコピー(cp)ユーティリティのみが含まれます。
  • cp コマンドは、/opt/appdynamics/sources.ini で定義されているファイルを /opt/appdynamics から接続先ディレクトリに転送します。
  • ベースの接続先ディレクトリがすでに存在している必要があります。cp コマンドは必要なサブディレクトリを作成できますが、ルートの接続先ディレクトリは作成しません。
  • このイメージには、シェルや標準的なシステムユーティリティは含まれていません。

タグの変更およびイメージ選択のガイダンス

  • Version 26.2.0 and later:latest タグが Scratch ベースのイメージを指すようになりました。
  • Alpine-based images:Alpine ベースのイメージを引き続き使用するには、latest-alpine タグを使用するか、バージョン 26.1.0 以前を指定してください。
  • Recommended Action:デプロイメント要件を評価、イメージタグを更新して、希望する基本イメージ(Stretch または Alpine)との互換性を確保します。

互換性マトリックスと必要なアクション

以下の互換性マトリックスを確認し、必要に応じてデプロイメントを調整して、スムーズに移行できるようにします。

表 1. クラスターエージェント 26.2.0 以降を使用した自動インストルメンテーションの場合
JavaAgent イメージバージョン 必須のアクション
Alpine ベース(26.2.0 未満) 操作は不要です。
Scratch ベース(26.2.0 以降) 操作は不要です。
表 2. クラスターエージェント 26.1.0 以降を使用した自動インストルメンテーションの場合
JavaAgent イメージバージョン アプリケーションの実行形式 必要なアクション/注意事項
Alpine ベース(26.2.0 未満) 任意 操作は不要です。
Scratch ベース(26.2.0 以降) Root 変更は不要
Scratch ベース(26.2.0 以降) 非ルート(クラスターエージェント設定の runAsUser/runAsGroup パラメータを使用) 必要な緩和策:
  • クラスターエージェント設定から runAsUser/runAsGroup パラメータを削除します。

  • 次を使用して、非ルートユーザーが書き込み可能なランタイムディレクトリを設定します。
    • ENV: APPDYNAMICS_AGENT_BASE_DIR または
    • Java システムプロパティ:appdynamics.agent.runtime.dir
    例:
    CODE
    containers:
    - name: appcontainer8081
      env:
      - name: APPDYNAMICS_AGENT_BASE_DIR
        value: /opt/jalogs
表 3. 手動 Init コンテナアプローチの場合
JavaAgent イメージバージョン アプリケーションの実行形式 必要なアクション/注意事項
Alpine ベース(26.2.0 未満) 任意 操作は不要です。
Scratch ベース(26.2.0 以降) Root cp コマンド [ "cp", "-r", "/opt/appdynamics/.", "/opt/appdynamics-java" ] を指定して -r のみを使用します。
Scratch ベース(26.2.0 以降) 非ルート 必要な緩和策:
  • cp コマンド [ "cp", "-r", "/opt/appdynamics/.", "/opt/appdynamics-java" ] を指定して -r のみを使用します。
  • 次のいずれかの方法を使用して、 Java エージェントに書き込みアクセス権があることを確認します。
    • 環境変数 APPDYNAMICS_AGENT_BASE_DIR または Java システムプロパティ appdynamics.agent.runtime.dir を、非ルートユーザーが書き込み可能なランタイムディレクトリに設定します。
      CODE
      containers:
      - name: appcontainer8081
        env:
        - name: APPDYNAMICS_AGENT_BASE_DIR
          value: /opt/jalogs
    • init コンテナの securityContext を指定します。
    CODE
    initContainers:
      - name: appd-agent
        image: appdynamics/java-agent:26.2.0
        securityContext:
          runAsUser: 1001
          runAsGroup: 1001
        command:
          - cp
          - -r
          - /opt/appdynamics/.
          - /opt/appdynamics-java
        volumeMounts:
          - name: appd-agent-repo
            mountPath: /opt/appdynamics-java

次のステップ

  • 現在のデプロイメント方法と JavaAgent/クラスターエージェントのバージョンを確認します。
  • 非ルート構成の環境でバージョン 26.2.0 以降にアップグレードする場合は、指定された緩和策を適用してください。
  • 詳細な支援および説明については、AppDynamics の担当者にお問い合わせください。
注:
  • 特定の YAML またはマニフェストのガイダンスについては、AppDynamics サポートにお問い合わせください。

  • カスタムスクリプトを使用するデプロイメントでは、これらが Scratch ベースのイメージには含まれていないため、シェルまたはユーティリティへの依存関係を確認してください。