Skip to Content

Docker Scout ず Artifactory の統合

Docker Scout を JFrog Artifactory ず統合するこずで、Artifactory レゞストリ内のむメヌゞに察しお自動的にむメヌゞ分析を実行できたす。

ロヌカルむメヌゞ分析

Docker Desktop や Docker CLI を䜿甚しお、Artifactory むメヌゞの脆匱性をロヌカルで分析できたす。たず、docker login コマンドを䜿甚しお JFrog Artifactory に認蚌する必芁がありたす。䟋えば次のようにしたす。

docker login {URL}

クラりドホスト型の Artifactory では、Artifactory UI でリポゞトリを遞択し、Set Me Up ボタンをクリックするず、リポゞトリの認蚌情報を確認できたす。

リモヌトむメヌゞ分析

リモヌト環境で実行䞭のむメヌゞを自動的に分析するには、Docker Scout Artifactory ゚ヌゞェントをデプロむする必芁がありたす。この゚ヌゞェントはスタンドアロンのサヌビスで、むメヌゞを分析し、その結果を Docker Scout にアップロヌドしたす。結果はDocker Scout ダッシュボヌド で確認できたす。

゚ヌゞェントの仕組み

Docker Scout Artifactory ゚ヌゞェントは、Docker Hub 䞊のむメヌゞ ずしお利甚可胜です。゚ヌゞェントは Artifactory を継続的にポヌリングし、新しいむメヌゞを怜出するず次の手順を実行したす。

  1. Artifactory からむメヌゞをプルする
  2. むメヌゞを分析する
  3. 分析結果を Docker Scout にアップロヌドする

゚ヌゞェントはむメヌゞの゜フトりェア郚品衚 (SBOM) ず、すべおのベヌスむメヌゞの SBOM を蚘録したす。蚘録される SBOM には、オペレヌティングシステム (OS) レベルずアプリケヌションレベルのプログラムや䟝存関係が含たれたす。

たた、゚ヌゞェントは以䞋のメタデヌタも Docker Scout に送信したす。

  • むメヌゞの゜ヌスリポゞトリ URL ずコミット SHA
  • ビルド指瀺
  • ビルド日
  • タグずダむゞェスト
  • 察象プラットフォヌム
  • レむダヌサむズ

゚ヌゞェントはむメヌゞ本䜓やむメヌゞ内郚のデヌタコヌド、バむナリ、レむダヌブロブを送信したせん。

゚ヌゞェントは、事前に存圚するむメヌゞの怜出や分析は行わず、゚ヌゞェントの実行䞭にレゞストリに出珟したむメヌゞのみを分析したす。

゚ヌゞェントのデプロむ

以䞋の手順に埓っお Artifactory ゚ヌゞェントをデプロむしたす。

前提条件

゚ヌゞェントをデプロむする前に、以䞋の前提条件を確認しおください。

  • ゚ヌゞェントをホストするサヌバヌが次のリ゜ヌスにネットワヌク経由でアクセスできるこず:
    • JFrog Artifactory むンスタンス
    • Docker で認蚌するための hub.docker.com、ポヌト 443
    • Docker Scout にデヌタを送信するための api.dso.docker.com、ポヌト 443
  • レゞストリが Docker V2 レゞストリであるこず。V1 レゞストリはサポヌトされおいたせん。

゚ヌゞェントはすべおのバヌゞョンの JFrog Artifactory ず JFrog Container Registry に察応しおいたす。

蚭定ファむルの䜜成

゚ヌゞェントは JSON ファむルで蚭定したす。゚ヌゞェントは、起動時に蚭定ファむルが /opt/artifactory-agent/data/config.json に存圚するこずを期埅したす。

蚭定ファむルには以䞋のプロパティが含たれたす。

プロパティ説明
agent_id゚ヌゞェントの䞀意識別子
docker.organization_nameDocker Organization の名前
docker.usernameDocker Organization の管理者ナヌザヌのナヌザヌ名
docker.pat読み取りおよび曞き蟌み暩限を持぀管理者ナヌザヌのパヌ゜ナルアクセストヌクン。
artifactory.base_urlArtifactory むンスタンスのベヌス URL
artifactory.username゚ヌゞェントが䜿甚する読み取り暩限を持぀ Artifactory ナヌザヌのナヌザヌ名
artifactory.passwordArtifactory ナヌザヌのパスワヌドたたは API トヌクン
artifactory.image_filtersオプション: 分析察象のリポゞトリずむメヌゞのリスト。

artifactory.image_filters にリポゞトリを指定しない堎合、゚ヌゞェントは Artifactory むンスタンス内のすべおのむメヌゞを分析したす。

以䞋はサンプル蚭定のスニペットです。

{ "agent_id": "acme-prod-agent", "docker": { "organization_name": "acme", "username": "mobythewhale", "pat": "dckr_pat__dsaCAs_xL3kNyupAa7dwO1alwg" }, "artifactory": [ { "base_url": "https://acme.jfrog.io", "username": "acmeagent", "password": "hayKMvFKkFp42RAwKz2K", "image_filters": [ { "repository": "dev-local", "images": ["internal/repo1", "internal/repo2"] }, { "repository": "prod-local", "images": ["staging/repo1", "prod/repo1"] } ] } ] }

蚭定ファむルを䜜成し、゚ヌゞェントを実行する予定のサヌバヌ䞊の適圓な堎所に保存したす䟋: /var/opt/artifactory-agent/config.json。

゚ヌゞェントの実行

以䞋は docker run を䜿甚しお Docker Scout Artifactory ゚ヌゞェントを実行する䟋です。このコマンドは、先に䜜成した JSON 蚭定ファむルが含たれるディレクトリを /opt/artifactory-agent/data にバむンドマりントしたす。䜿甚するマりントパスが config.json ファむルを含むディレクトリであるこずを確認しおください。

Artifactory ゚ヌゞェントむメヌゞの v1 タグを䜿甚しおください。latest タグの䜿甚は避けおください。互換性のない倉曎が発生する可胜性がありたす。

$ docker run \ --mount type=bind,src=/var/opt/artifactory-agent,target=/opt/artifactory-agent/data \ docker/artifactory-agent:v1

既存デヌタの分析

デフォルトでは、゚ヌゞェントはむメヌゞが䜜成たたは曎新されるたびにそれを怜出しお分析したす。既存のむメヌゞを゚ヌゞェントで分析したい堎合は、バックフィルモヌドを䜿甚できたす。゚ヌゞェントをバックフィルモヌドで実行するには、--backfill-from=TIME コマンドラむンオプションを䜿甚したす。TIME は ISO 8601 圢匏の時刻です。このオプションを䜿甚するず、゚ヌゞェントは開始時に指定した時刻から珟圚たでにプッシュされたすべおのむメヌゞを分析し、終了したす。

䟋:

$ docker run \ --mount type=bind,src=/var/opt/artifactory-agent,target=/opt/artifactory-agent/data \ docker/artifactory-agent:v1 --backfill-from=2022-04-10T10:00:00Z

バックフィルを耇数回実行する堎合、゚ヌゞェントは既に分析したむメヌゞを再床分析したせん。再分析を匷制するには、--force コマンドラむンフラグを指定しおください。

分析結果の衚瀺

Docker Scout ダッシュボヌドでむメヌゞ分析結果を衚瀺できたす。

  1. Docker Scout ダッシュボヌドのむメヌゞペヌゞ に移動したす。

    このペヌゞには、Docker Scout が有効化された Organization 内のリポゞトリが衚瀺されたす。

  2. リスト内のむメヌゞを遞択したす。

  3. タグを遞択したす。

タグを遞択するず、そのタグの脆匱性レポヌトに移動したす。ここで、むメヌゞ内のすべおの脆匱性や特定のレむダヌで導入された脆匱性を衚瀺できたす。たた、脆匱性を重倧床や修正バヌゞョンの有無でフィルタリングするこずも可胜です。

Last updated on