私は Jib を使用してベース イメージを取得し、それにラッパー Java コードを追加して、その上にイメージをビルドしています。2021 年 12 月の log4j CVE が広く知られているため、脆弱なクラスを削除する方法を探しています。(現在、2022 年にはさらに多くの CVE が発見されており、そのうちの 1 つは可能な限り最高のスコア 10.0 です。https://www.cvedetails.com/vulnerability-list/vendor_id-45/product_id-37215/Apache-Log4j.html を参照)
基本イメージは EOL に近いため、プロバイダーは新しいバージョンをリリースしないと回答しました。さらに、log4j 1.x もずっと前に EOL に達しました。しかし、現在の状況では、ベース イメージを次のバージョンにアップグレードする予定はありません。そのため、クラスを削除することが今のところ唯一の方法のようです。
基本イメージはエントリポイントとして使用/opt/amq/bin/launch.sh
されます。そして、カスタマイズされたエントリポイントを使用して、その前にスクリプトを実行できることがわかりました。これにより、クラスが削除されます。のよう<entrypoint>/opt/amq/bin/my_script.sh</entrypoint>
に、そしてその中で私は持っていrun_fix.sh && /opt/amq/bin/launch.sh
ます。
その後、アプリケーションが実際に実行されているときにリスクを軽減することでこれでも機能することに気付きました。これはイメージがアップロードされる前に行われる静的プロセスであるため、脆弱性スキャン (セキュリティ プロセスの一部) はイメージ バイナリの検査中にアラームを発生させます。実際に実行する前に、本番用のdockerレジストリに。それらは、アプリケーションが実行される瞬間、つまり実行時にのみ削除できます。
mvn clean install -Pdocker-build
実行時にのみ許可するのではなく、Maven build( ) の実行中にジブでベース イメージを前処理できますか? 私が読んだことによると、それは大きなNOであることを理解しており、そのためのプラグインはまだありません.