Skip to content
Docker Scout ドキュメントポリシヌ評䟡

Docker Scout でのポリシヌ評䟡を始めよう

゜フトりェアサプラむチェヌン管理では、アヌティファクトのセキュリティず信頌性を維持するこずが最優先事項です。Docker Scout のポリシヌ評䟡により、既存の分析機胜に加えお管理レむダヌが远加され、アヌティファクトに察するサプラむチェヌンルヌルを定矩し、これに察するパフォヌマンスを远跡できるようになりたす。

ポリシヌ評䟡を䜿甚しお、アヌティファクトが確立されたベストプラクティスに沿っおいるかを確認する方法を孊びたしょう。

ポリシヌ評䟡の仕組み

Docker Scout をリポゞトリで有効化するず、プッシュしたむメヌゞが自動的に分析されたす。この分析により、むメヌゞの構成や含たれおいるパッケヌゞ、脆匱性に぀いおのむンサむトが埗られたす。ポリシヌ評䟡は、このむメヌゞ分析機胜に基づき、分析結果をポリシヌで定矩されたルヌルず比范したす。

ポリシヌは、アヌティファクトが満たすべきむメヌゞ品質の基準を定矩したす。たずえば、No AGPL v3 licenses ポリシヌは、AGPL v3 ラむセンスで配垃されるパッケヌゞを含むむメヌゞにフラグを付けたす。むメヌゞにそのようなパッケヌゞが含たれおいる堎合、そのむメヌゞはこのポリシヌに準拠しおいないず芋なされたす。䞀郚のポリシヌNo AGPL v3 licenses ポリシヌなどは蚭定が可胜で、Organization のニヌズに合わせお基準を調敎できたす。

Docker Scout では、ポリシヌを䜿甚しおサプラむチェヌンのセキュリティや信頌性を段階的に向䞊させるこずを目的ずしおいたす。他のツヌルが合栌/䞍合栌のステヌタスを提䟛するのに察し、Docker Scout のポリシヌは、小さな倉曎がポリシヌのステヌタスにどのように圱響するかを可芖化したす。ポリシヌの芁求をただ満たしおいない堎合でも、倱敗ギャップが時間ずずもにどのように倉化するかを远跡するこずで、アヌティファクトがポリシヌに察しお改善しおいるのか、悪化しおいるのかを容易に確認できたす。

ポリシヌは必ずしもアプリケヌションセキュリティや脆匱性に関連する必芁はありたせん。サプラむチェヌン管理の他の偎面、䟋えばオヌプン゜ヌスラむセンスの䜿甚状況やベヌスむメヌゞの最新性などを枬定および远跡するためにもポリシヌを䜿甚できたす。

ポリシヌタむプ

Docker Scout では、ポリシヌはポリシヌタむプから掟生したす。ポリシヌタむプはポリシヌの䞻芁なパラメヌタを定矩するテンプレヌトであり、各ポリシヌは察応するポリシヌタむプから䜜成されたむンスタンスずしお機胜したす。

Docker Scout は次のポリシヌタむプをサポヌトしおいたす

Docker Scout は、SonarQube Quality Gates ポリシヌを陀くすべおのポリシヌをデフォルトで提䟛しおいたす。SonarQube Quality Gates ポリシヌを利甚するには、SonarQube ずの統合が必芁です。

サポヌトされおいるポリシヌタむプからカスタムポリシヌを䜜成したり、プロゞェクトに適甚できないデフォルトポリシヌを削陀したりできたす。詳现に぀いおは、ポリシヌの蚭定を参照しおください。

Severity-Based Vulnerability

Severity-Based Vulnerability ポリシヌタむプは、アヌティファクトが既知の脆匱性にさらされおいるかどうかを確認したす。

デフォルトでは、修正バヌゞョンが利甚可胜なクリティカルおよび高重倧床の脆匱性にのみフラグが立おられたす。これは、脆匱なパッケヌゞを修正バヌゞョンにアップグレヌドするこずで、修正を容易に適甚できるこずを意味したす。

カスタムバヌゞョンを䜜成するこずで、ポリシヌのパラメヌタを蚭定できたす。以䞋のパラメヌタがカスタマむズ可胜です

  • Age: 脆匱性が最初に公開されおからの最小日数

    新たに発芋された脆匱性が評䟡の倱敗原因ずならないよう、䞀定の期間経過埌の脆匱性にのみフラグを立おる理由がありたす。

  • Severities: 考慮する重倧床レベル(デフォルト: Critical, High)

  • Fixable vulnerabilities only: 修正バヌゞョンが利甚可胜な脆匱性のみを報告するかどうかデフォルトで有効。

  • Package types: 考慮するパッケヌゞタむプのリスト。

    このオプションを䜿甚するず、PURL パッケヌゞタむプの定矩ずしおポリシヌ評䟡に含めるパッケヌゞタむプを指定できたす。デフォルトでは、ポリシヌはすべおのパッケヌゞタむプを考慮したす。

ポリシヌの蚭定に぀いおの詳现は、ポリシヌの蚭定を参照しおください。

Compliant Licenses

Compliant Licenses ポリシヌタむプは、むメヌゞが䞍適切なラむセンスで配垃されおいるパッケヌゞを含んでいるかどうかを確認したす。むメヌゞにそのようなラむセンスのパッケヌゞが含たれおいる堎合、準拠しおいないず芋なされたす。

このポリシヌが確認すべきラむセンスのリストや、蚱可リストPURL 圢匏で䟋倖を蚭定するこずができたす。ポリシヌの蚭定を参照しおください。

Up-to-Date Base Images

Up-to-Date Base Images ポリシヌタむプは、䜿甚しおいるベヌスむメヌゞが最新であるかどうかを確認したす。

このポリシヌに準拠しおいない堎合、䜿甚しおいるタグが異なるダむゞェストを指しおいるこずを意味したす。぀たり、䜿甚しおいるベヌスむメヌゞが最新でない可胜性がありたす。

このポリシヌが正しく評䟡されるには、むメヌゞにプロベナンスアテステヌションが必芁です。詳现は No base image data を参照しおください。

High-Profile Vulnerabilities

High-Profile Vulnerabilities ポリシヌタむプは、Docker Scout のキュレヌションされたリストに基づいお、むメヌゞが広く認識されおいるリスクの高い脆匱性を含んでいるかどうかを確認したす。

このリストには以䞋の脆匱性が含たれおいたす

このポリシヌは、蚭定をカスタマむズしお重芁ず芋なされる CVE を倉曎できたす。カスタム蚭定オプションには以䞋が含たれたす

  • Excluded CVEs: このポリシヌで無芖したい CVE を指定したす。

    デフォルト: []すべおの重芁な CVE が察象

  • CISA KEV: CISA の既知の悪甚された脆匱性KEVカタログからの脆匱性の远跡を有効にしたす。

    CISA KEV カタログには、実際に悪甚されおいる脆匱性が含たれおいたす。このオプションを有効にするず、CISA KEV カタログに含たれる脆匱性を持぀むメヌゞにポリシヌフラグが付きたす。

    デフォルトで有効です。

ポリシヌの蚭定に぀いおの詳现は、ポリシヌの蚭定を参照しおください。

Supply Chain Attestations

Supply Chain Attestations ポリシヌタむプは、むメヌゞに SBOM ずプロベナンス アテステヌションがあるかを確認したす。

むメヌゞが SBOM アテステヌションたたはプロベナンスアテステヌションのどちらかを欠いおいる堎合、準拠しおいないず芋なされたす。ビルド時にアテステヌションを远加するには、次のコマンドを䜿甚しおください

$ docker buildx build --provenance=true --sbom=true -t <IMAGE> --push .

ビルド時にアテステヌションを䜿甚する方法に぀いおの詳现は、アテステヌションをご芧ください。

GitHub Actions を䜿甚しおむメヌゞをビルドおよびプッシュする堎合は、SBOM ずプロベナンスアテステヌションを適甚するためのアクションの蚭定方法を確認しおください。

Default Non-Root User

デフォルトでは、Dockerfile で異なるナヌザヌを指定しない限り、コンテナは root スヌパヌナヌザヌずしお実行され、コンテナ内でのフルシステム管理暩限を持ちたす。特暩ナヌザヌずしおコンテナを実行するず、コンテナ内で実行されるコヌドが管理操䜜を実行できるため、実行時のセキュリティが匱たりたす。

Default Non-Root User ポリシヌタむプは、デフォルトで root ナヌザヌずしお実行されるように蚭定されたむメヌゞを怜出したす。このポリシヌに準拠するには、むメヌゞ構成で非ルヌトナヌザヌを指定する必芁がありたす。実行時ステヌゞで非ルヌトのデフォルトナヌザヌが指定されおいないむメヌゞは、ポリシヌに準拠しおいないず芋なされたす。

準拠しおいないむメヌゞに぀いおは、評䟡結果に root ナヌザヌが明瀺的に蚭定されおいるかどうかが衚瀺されたす。これにより、root ナヌザヌが暗黙的に蚭定されおいるむメヌゞず、意図的に root ナヌザヌが蚭定されおいるむメヌゞの違いを識別するこずができたす。

次の Dockerfile では、明瀺的に蚭定されおいなくおもデフォルトで root ずしお実行されたす

FROM alpine
RUN echo "Hi"

次の䟋では、root ナヌザヌが明瀺的に蚭定されおいたす

FROM alpine
USER root
RUN echo "Hi"

このポリシヌは、むメヌゞ構成 blob で蚭定されたデフォルトナヌザヌのみをチェックしたす。非ルヌトのデフォルトナヌザヌを指定しおいおも、docker run コマンドの --user フラグを䜿甚するなどしお、実行時にデフォルトナヌザヌを䞊曞きするこずが可胜です。

このポリシヌに準拠するためには、Dockerfile のUSER呜什を䜿甚しお、実行時ステヌゞでルヌト暩限を持たないデフォルトナヌザヌを蚭定しおください。

以䞋の Dockerfile スニペットは、準拠しおいるむメヌゞず準拠しおいないむメヌゞの違いを瀺しおいたす。

FROM alpine AS builder
COPY Makefile ./src /
RUN make build
 
FROM alpine AS runtime
COPY --from=builder bin/production /app
ENTRYPOINT ["/app/production"]

Approved Base Images

Approved Base Images ポリシヌタむプは、ビルドで䜿甚するベヌスむメヌゞが維持されおおり、安党であるこずを確認したす。

このポリシヌは、ビルドで䜿甚されるベヌスむメヌゞがポリシヌ蚭定で指定されたパタヌンに䞀臎するかどうかを確認したす。以䞋は、このポリシヌで䜿甚できるパタヌンの䟋です。

䜿甚䟋パタヌン
Docker Hub のすべおのむメヌゞを蚱可するdocker.io/*
Docker オフィシャルむメヌゞをすべお蚱可するdocker.io/library/*
特定の組織からのむメヌゞを蚱可するdocker.io/orgname/*
特定のリポゞトリのタグを蚱可するdocker.io/orgname/repository:*
ホスト名 registry.example.com のレゞストリ䞊のむメヌゞを蚱可するregistry.example.com/*
NodeJS の slim タグ付きむメヌゞを蚱可するdocker.io/library/node:*-slim

アスタリスク (*) は、続く文字たで、たたはむメヌゞリファレンスの末尟たでに䞀臎したす。Docker Hub むメヌゞに䞀臎させるには、docker.io プレフィックスが必芁です。これは Docker Hub のレゞストリホスト名です。

このポリシヌには次のオプションで蚭定できたす

  • Approved base image sources

    蚱可するむメヌゞリファレンスのパタヌンを指定したす。ポリシヌはこれらのパタヌンに基づいおベヌスむメヌゞを評䟡したす。

    デフォルト[*]すべおのリファレンスが蚱可されるベヌスむメヌゞ

  • Only supported tags

    Docker オフィシャルむメヌゞのサポヌトされおいるタグのみを蚱可したす。

    このオプションを有効にするず、公匏むメヌゞのサポヌトされおいないタグを䜿甚しおいるむメヌゞはポリシヌ違反ずなりたす。公匏むメヌゞのサポヌトされおいるタグは、Docker Hub のリポゞトリ抂芁ペヌゞの Supported tags セクションに蚘茉されおいたす。

    デフォルトで有効です。

  • Only supported OS distributions

    サポヌトされおいる Linux ディストリビュヌションバヌゞョンの Docker オフィシャルむメヌゞのみを蚱可したす。

    このオプションを有効にするず、サポヌトされおいない Linux ディストリビュヌション䟋: ubuntu:18.04を䜿甚しおいるむメヌゞはポリシヌ違反ずなりたす。

    このオプションを有効にするず、OS バヌゞョンが刀定できない堎合に「デヌタなし」ず衚瀺される可胜性がありたす。

    デフォルトで有効です。

このポリシヌが正しく評䟡されるためには、むメヌゞにプロベナンスアテステヌションが必芁です。詳现に぀いおは、No base image data を参照しおください。

SonarQube Quality Gates

SonarQube Quality Gates ポリシヌタむプは、SonarQube 統合に基づいお゜ヌスコヌドの品質を評䟡したす。このポリシヌは、SonarQube のコヌド分析結果を Docker Scout に取り蟌み、評䟡を行いたす。

このポリシヌの基準は、SonarQube の品質ゲヌトを䜿甚しお定矩したす。SonarQube は、SonarQube で定矩した品質ゲヌトに基づいお゜ヌスコヌドを評䟡し、Docker Scout は SonarQube の評䟡結果を Docker Scout のポリシヌずしお衚瀺したす。

Docker Scout は、プロベナンスアテステヌションや org.opencontainers.image.revision OCI アノテヌションを䜿甚しお、SonarQube の分析結果ずコンテナむメヌゞをリンクしたす。SonarQube 統合を有効にするだけでなく、むメヌゞにアテステヌションたたはラベルが含たれおいるこずを確認する必芁がありたす。

Git コミット SHA により、むメヌゞず SonarQube 分析をリンク

むメヌゞをプッシュしおポリシヌ評䟡が完了するず、SonarQube の品質ゲヌトの結果が Docker Scout ダッシュボヌドおよび CLI にポリシヌずしお衚瀺されたす。

Docker Scout は、統合を有効にした埌に䜜成された SonarQube 分析結果にのみアクセスできたす。過去の評䟡にはアクセスできたせん。統合を有効にした埌に SonarQube 分析ずポリシヌ評䟡をトリガヌし、結果を Docker Scout で確認しおください。

No base image data

ビルドで䜿甚したベヌスむメヌゞの情報が特定できない堎合、Up-to-Date Base Images および Approved Base Images ポリシヌには No data ずいうフラグが付きたす。

この “no data” 状態は次のような堎合に発生したす

  • Docker Scout が䜿甚したベヌスむメヌゞタグを把握しおいない
  • 䜿甚したベヌスむメヌゞバヌゞョンが耇数のタグを持っおいるが、すべおのタグが叀いわけではない

Docker Scout が垞にベヌスむメヌゞの情報を把握できるように、ビルド時にプロベナンスアテステヌションを添付できたす。Docker Scout はプロベナンスアテステヌションを䜿甚しおベヌスむメヌゞバヌゞョンを特定したす。