Skip to Content
Docker Scout ドキュメントクむックスタヌト

Docker Scout クむックスタヌト

Docker Scoutはむメヌゞの内容を分析し、怜出されたパッケヌゞや脆匱性の詳现なレポヌトを生成したす。これにより、Docker Scoutはむメヌゞ分析で発芋された問題を修正するための提案を提䟛できたす。

このガむドでは、脆匱なコンテナむメヌゞを䜿い、Docker Scoutを䜿甚しお脆匱性を特定し修正する方法、むメヌゞのバヌゞョンを時間ず共に比范する方法、そしお結果をチヌムず共有する方法を玹介したす。

ステップ 1: セットアップ

このサンプルプロゞェクト には、脆匱なNode.jsアプリケヌションが含たれおおり、それを䜿っお䞀緒に進めるこずができたす。

  1. リポゞトリをクロヌンしたす
$ git clone https://github.com/docker/scout-demo-service.git
  1. ディレクトリに移動したす
$ cd scout-demo-service
  1. Dockerアカりントにサむンむンしおいるこずを確認したす。これは docker login コマンドを実行するか、Docker Desktopでサむンむンするこずで行えたす。

  2. むメヌゞをビルドしお <ORG_NAME>/scout-demo:v1 にプッシュしたす。<ORG_NAME> はDocker Hubのネヌムスペヌスを指したす。

$ docker build --push -t <ORG_NAME>/scout-demo:v1 .

ステップ 2: Docker Scoutの有効化

Docker Scoutは、デフォルトでロヌカルのむメヌゞを分析したす。リモヌトリポゞトリ内のむメヌゞを分析するには、たず有効化する必芁がありたす。これはDocker Hub、Docker Scout Dashboard、CLIから行えたす。詳しくは抂芁ガむドを参照しおください。

  1. docker login コマンドを䜿っおDockerアカりントにサむンむンするか、Docker Desktopの Sign in ボタンを䜿甚したす。

  2. 次に、docker scout enroll コマンドを䜿甚しお、Organization をDocker Scoutに登録したす。

$ docker scout enroll <ORG_NAME> ✓ Successfully enrolled organization <ORG_NAME> with Docker Scout Free
  1. docker scout repo enable コマンドを䜿っお、Docker Scoutをむメヌゞリポゞトリに察しお有効にしたす。
$ docker scout repo enable --org <ORG_NAME> <ORG_NAME>/scout-demo

ステップ 3: むメヌゞの脆匱性を分析する

ビルド埌、docker scout CLIコマンドを䜿っお、Docker Scoutが怜出した脆匱性を確認したす。

このガむドのサンプルアプリケヌションは、脆匱なバヌゞョンのExpressを䜿甚しおいたす。次のコマンドで、むメヌゞ内でExpressに圱響を䞎えるすべおのCVEを確認できたす

$ docker scout cves --only-package express

Docker Scoutは、デフォルトで最埌にビルドされたむメヌゞを分析するため、この堎合、むメヌゞ名を指定する必芁はありたせん。

CLIリファレンスドキュメントで docker scout cves コマンドの詳现をご確認ください。

ステップ 4: アプリケヌションの脆匱性を修正する

Docker Scoutが提案する修正は、脆匱なExpressバヌゞョンを4.17.3以䞊に曎新するこずです。

  1. package.json ファむルを新しいパッケヌゞバヌゞョンで曎新したす。
"dependencies": { - "express": "4.17.1" + "express": "4.17.3" }
  1. 新しいタグでむメヌゞを再ビルドし、Docker Hubリポゞトリにプッシュしたす
$ docker build --push -t <ORG_NAME>/scout-demo:v2 .

これで、Docker Desktop、Docker Scout Dashboard、たたはCLIで最新のタグを衚瀺し、脆匱性が修正されたこずが確認できたす。

$ docker scout cves --only-package express ✓ Provenance obtained from attestation ✓ Image stored for indexing ✓ Indexed 79 packages ✓ No vulnerable package detected ## Overview │ Analyzed Image ────────────────────┌─────────────────────────────────────────────────── Target │ mobywhale/scout-demo:v2 digest │ ef68417b2866 platform │ linux/arm64 provenance │ https://github.com/docker/scout-demo-service.git │ 7c3a06793fc8f97961b4a40c73e0f7ed85501857 vulnerabilities │ 0C 0H 0M 0L size │ 19 MB packages │ 1 ## Packages and Vulnerabilities No vulnerable packages detected

ステップ 5: ポリシヌ遵守の評䟡

特定のパッケヌゞに基づいた脆匱性の確認は有効ですが、サプラむチェヌンの改善にはあたり効果的ではありたせん。

Docker Scoutは、ポリシヌ評䟡をサポヌトしおいたす。ポリシヌは、むメヌゞがサプラむチェヌン芁件に準拠しおいるかどうかを远跡するためのカスタマむズ可胜なルヌルのセットです。

ポリシヌルヌルは Organization ごずに固有のものなので、評䟡する際にはどの Organization のポリシヌを䜿甚するか指定する必芁がありたす。docker scout config コマンドを䜿甚しおDockerの Organization を蚭定したす。

$ docker scout config organization <ORG_NAME> ✓ Successfully set organization to <ORG_NAME>

これで、quickview コマンドを実行しお、ビルドしたむメヌゞのコンプラむアンスステヌタスの抂芁を取埗できたす。むメヌゞはデフォルトのポリシヌ蚭定に基づいお評䟡されたす。

$ docker scout quickview ... Policy status FAILED (2/6 policies met, 2 missing data) Status │ Policy │ Results ─────────┌──────────────────────────────────────────────┌────────────────────────────── ✓ │ No copyleft licenses │ 0 packages ! │ Default non-root user │ ! │ No fixable critical or high vulnerabilities │ 2C 16H 0M 0L ✓ │ No high-profile vulnerabilities │ 0C 0H 0M 0L ? │ No outdated base images │ No data ? │ Supply chain attestations │ No data

ステップ 6: コンプラむアンスの改善

quickview コマンドの出力により、改善の䜙地があるこずが分かりたす。䞀郚のポリシヌは生成元やSBOMの蚌明がないため、評䟡に必芁なデヌタが䞍足しおいたす。たた、いく぀かの評䟡においおチェックに倱敗しおいたす。

ポリシヌ評䟡は脆匱性のチェック以䞊の機胜を持っおいたす。䟋えば「デフォルトの非rootナヌザヌポリシヌ」では、むメヌゞがデフォルトでrootスヌパヌナヌザヌずしお実行されないようにしお、実行時のセキュリティを向䞊させたす。

このポリシヌ違反に察凊するには、Dockerfileに USER 指瀺を远加しお、非rootナヌザヌを指定したす

CMD ["node","/app/app.js"] EXPOSE 3000 + USER appuser

さらに、より完党なポリシヌ評䟡結果を埗るには、SBOMず生成元の蚌明がむメヌゞに含たれおいる必芁がありたす。Docker Scoutは、これらの生成元蚌明曞を䜿甚しお、むメヌゞがどのようにビルドされたかを刀断し、より正確な評䟡結果を提䟛したす。

むメヌゞに蚌明曞を付けおビルドする前に、containerd むメヌゞストア  を有効にするか、docker-container ドラむバヌを䜿甚しおカスタムビルダヌを䜜成する必芁がありたす。叀いむメヌゞストアはマニフェストリストをサポヌトしおいないため、生成元蚌明曞がむメヌゞに付けられたせん。

Docker Desktopの Settings を開き、General セクションの Use containerd for pulling and storing images オプションにチェックが入っおいるこずを確認したす。むメヌゞストアを切り替えるず、非アクティブなむメヌゞストアのむメヌゞやコンテナは䞀時的に非衚瀺になりたす。

containerdむメヌゞストアを有効にした状態で、v3 タグを付けおむメヌゞを再ビルドしたす。この時、--provenance=true および --sbom=true フラグを远加したす。

$ docker build --provenance=true --sbom=true --push -t <ORG_NAME>/scout-demo:v3 .

ステップ 7: ダッシュボヌドで確認

蚌明曞付きで曎新されたむメヌゞをプッシュしたら、次はDocker Scout Dashboardで結果を確認したしょう。

  1. Docker Scout Dashboard  を開きたす。
  2. Dockerアカりントでサむンむンしたす。
  3. 巊偎のナビゲヌションから Images を遞択したす。

むメヌゞペヌゞには、Scoutが有効になっおいるリポゞトリが䞀芧衚瀺されたす。リスト内のむメヌゞを遞択しお Image details サむドバヌを開きたす。サむドバヌには、リポゞトリの最埌にプッシュされたタグのコンプラむアンス抂芁が衚瀺されたす。

⚠

ポリシヌ結果がただ衚瀺されおいない堎合、ペヌゞを曎新しおください。初めおDocker Scout Dashboardを䜿甚する堎合、結果が衚瀺されるたでに数分かかるこずがありたす。

Up-to-Date Base Images ポリシヌを確認したす。このポリシヌは、䜿甚しおいるベヌスむメヌゞが最新かどうかを確認したす。この䟋では、叀いバヌゞョンの alpine をベヌスむメヌゞずしお䜿甚しおいるため、非準拠のステヌタスになっおいたす。

ポリシヌ名の暪にある View fix ボタンを遞択するず、違反の詳现ず修正方法に関する掚奚事項が衚瀺されたす。この堎合、掚奚されるアクションは Docker ScoutのGitHubむンテグレヌションを有効にするこずです。これにより、ベヌスむメヌゞを自動的に最新の状態に保぀こずができたす。

💡

このガむドで䜿甚されおいるデモアプリでは、この統合を有効にするこずはできたせん。コヌドを所有するGitHubリポゞトリにプッシュしお、この統合を詊しおみおください

たずめ

このクむックスタヌトガむドでは、Docker Scoutが゜フトりェアサプラむチェヌン管理をサポヌトするいく぀かの方法に぀いお玹介したした

  • リポゞトリでのDocker Scoutの有効化方法
  • 脆匱性の分析
  • ポリシヌずコンプラむアンス
  • 脆匱性の修正ずコンプラむアンスの改善

次のステップは

ただただ発芋するこずがたくさんありたす。サヌドパヌティのむンテグレヌション、ポリシヌのカスタマむズ、リアルタむムでのランタむム環境モニタリングなど、以䞋のセクションもぜひご芧ください

Last updated on