現在、Dockerは、コンテナイメージの中身をより見やすくするための第一歩を踏み出し、ソフトウェアサプライチェーンのセキュリティを強化できます。 Docker Desktop 4.7.0 には、任意の Docker イメージの SBOM (Software Symbol Bill Of Materials) を表示する新しい実験的な docker sbom
CLI コマンドが含まれています。 また、今後のリリースでLinuxパッケージに含まれる予定です。 この機能は、 オープンソースコラボレーション で アンカレ それらを使用して シフト プロジェクト。
私が書いたように 先週の私のブログ投稿Dockerでは、パフォーマンス、信頼、優れたエクスペリエンスを優先事項としています。 この作業は、イメージの内容を確認しやすくし、ソフトウェアのコンシューマーにSBOMを提供することでサプライチェーンの信頼を向上させ、コンテナイメージをより透過的にして内部を簡単に確認できるようにすることで開発者エクスペリエンスを向上させることに焦点を当てています。 このコマンドは、コンテナー イメージをより自己記述的にするために Docker が実行している最初のステップにすぎません。 コンテナー イメージの内容を特定して記録するのに最適なタイミングは、イメージを docker build
. これを可能にするために、パートナーやコミュニティが BuildKit の拡張性を使用して SBOM 機能 docker build
を簡単に追加できるようにするために取り組んでいます。
この情報はビルド時に生成されるため、イメージアーティファクトの一部として含める必要があると考えています。 つまり、レジストリ間で (またはエア ギャップ環境に) イメージを移動する場合でも、イメージから SBOM やその他のイメージ ビルド メタデータを読み取ることができます。
私たちは、BuildKitでのSBOM作業でパートナーやコミュニティの人々と協力することを目指しています。 PoCを見て、フィードバックを残してください ここは.
SBOMとは何ですか?
ソフトウェア部品表(SBOM)は、出荷のパッキングリストに似ています。これは、ソフトウェアを構成する、またはソフトウェアの構築に使用されたすべてのコンポーネントです。 コンテナイメージの場合、これには、インストールされているオペレーティングシステムパッケージ(例:ca証明書)と、ソフトウェアが依存する言語固有のパッケージ(例:log4j)が含まれます。 SBOMには、この情報の一部のみを含めることも、コンポーネントのバージョンや出所などの詳細を含めることもできます。
SBOMは時々 政府による要求 または、サプライチェーンのセキュリティを向上させようとしている他のソフトウェア消費者。 これは、ソフトウェアの内部を知ることで、ソフトウェアが安全に使用できるという確信が得られ、脆弱性が公開された場合の影響を理解するのに役立つ可能性があるためです。
コンテナー イメージ SBOM を使用して脆弱性を確認する
次のような脆弱性が発生した場合にコマンドが docker sbom
何ができるかを簡単に見てみましょう log4shell が公開されます。 このような脆弱性が現れた場合、ソフトウェアが影響を受けているかどうかをすばやく判断できることが重要です。 Docker の公式イメージを使用します neo4j:4.4.5
。 実行 docker sbom neo4j:4.4.5
するだけで、表形式のSBOMが出力されます。
$ docker sbom neo4j:4.4.5 Syft v0.42.2 ✔ 読み込まれた画像 ✔ 解析された画像 ✔ カタログ化されたパッケージ [385 個] 名前 バージョン タイプ ... bsdutils 1:2.36.1-8+deb11u1 deb CA 証明書 20210119 deb ... log4j-api 2.17.1 java-archive log4j-core 2.17.1 java-archive ...
出力には、イメージ内にインストールされている Debian パッケージだけでなく、アプリケーションで使用される Java ライブラリも含まれることに注意してください。 この情報を最小限の労力で確実に取得することで、迅速に対応し、侵害される可能性を減らすことができます。 上記の例では、Neo4jがライブラリのバージョン2.17.1を使用しているため、 log4j-core
log4shellの影響を受けないことがわかります。
または別のSBOMスキャンツールがない場合は docker sbom
、アプリケーションのソースコードをチェックして、使用しているバージョン log4j-core
を確認する必要があります。 複数のアプリケーションまたはサービスがデプロイされ、それらの複数のバージョンがある場合、これは困難な場合があります。
このコマンドには、SBOM をテーブルに出力するだけでなく、GitHub 形式とネイティブ Syft 形式に加えて、 docker sbom
標準の SPDX 形式と CycloneDX 形式で SBOM を出力するオプションがあります。
私たちは、実験的なコマンドとして、私たちが進んでいる方向性についてコミュニティからフィードバックを得ることを目的として、機能を早期に共有 docker sbom
しています。 ユースケースやその他のフィードバックについて知りたいです。 コマンドに残しておくことができます レポ.
次は何ですか?
パートナーやコミュニティと協力して、BuildKitを介してすべてのコンテナイメージにSBOMを導入したいと考えています。 私たちの例をハックし、RFCにフィードバックを残してください.実験 docker sbom
コマンドも試してみてください フィードバックをお寄せください あなたが持っていること。 また、 docker sbom
アンカレとのコラボレーションの詳細については、 ブログをご覧ください。
ドッカーコン2022
5月10日火曜日に開催されるDockerCon2022にご参加ください。 DockerCon は、次世代の最新アプリケーションを構築している開発者や開発チームにとってユニークな体験を提供する、無料の 1 日の仮想イベントです。 コードからクラウドにすばやく移行する方法と開発の課題を解決する方法について学びたい場合は、DockerCon 2022 でアプリケーションの構築、共有、実行に役立つ魅力的なライブ コンテンツが提供されます。 今すぐご登録ください https://www.docker.com/dockercon/