Docker Scout ã¯ã€ãã¯ã¹ã¿ãŒã
Docker Scoutã¯ã€ã¡ãŒãžã®å 容ãåæããæ€åºãããããã±ãŒãžãè匱æ§ã®è©³çŽ°ãªã¬ããŒããçæããŸããããã«ãããDocker Scoutã¯ã€ã¡ãŒãžåæã§çºèŠãããåé¡ãä¿®æ£ããããã®ææ¡ãæäŸã§ããŸãã
ãã®ã¬ã€ãã§ã¯ãè匱ãªã³ã³ããã€ã¡ãŒãžã䜿ããDocker Scoutã䜿çšããŠè匱æ§ãç¹å®ãä¿®æ£ããæ¹æ³ãã€ã¡ãŒãžã®ããŒãžã§ã³ãæéãšå ±ã«æ¯èŒããæ¹æ³ããããŠçµæãããŒã ãšå ±æããæ¹æ³ã玹ä»ããŸãã
ã¹ããã 1: ã»ããã¢ãã
ãã®ãµã³ãã«ãããžã§ã¯ãâã«ã¯ãè匱ãªNode.jsã¢ããªã±ãŒã·ã§ã³ãå«ãŸããŠãããããã䜿ã£ãŠäžç·ã«é²ããããšãã§ããŸãã
- ãªããžããªãã¯ããŒã³ããŸãïŒ
$ git clone https://github.com/docker/scout-demo-service.git
- ãã£ã¬ã¯ããªã«ç§»åããŸãïŒ
$ cd scout-demo-service
-
Dockerã¢ã«ãŠã³ãã«ãµã€ã³ã€ã³ããŠããããšã確èªããŸããããã¯
docker login
ã³ãã³ããå®è¡ããããDocker Desktopã§ãµã€ã³ã€ã³ããããšã§è¡ããŸãã -
ã€ã¡ãŒãžããã«ãããŠ
<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ããè¡ããŸãã詳ããã¯æŠèŠã¬ã€ããåç §ããŠãã ããã
-
docker login
ã³ãã³ãã䜿ã£ãŠDockerã¢ã«ãŠã³ãã«ãµã€ã³ã€ã³ããããDocker Desktopã® Sign in ãã¿ã³ã䜿çšããŸãã -
次ã«ã
docker scout enroll
ã³ãã³ãã䜿çšããŠãOrganization ãDocker Scoutã«ç»é²ããŸãã
$ docker scout enroll <ORG_NAME>
â Successfully enrolled organization <ORG_NAME> with Docker Scout Free
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以äžã«æŽæ°ããããšã§ãã
package.json
ãã¡ã€ã«ãæ°ããããã±ãŒãžããŒãžã§ã³ã§æŽæ°ããŸãã
"dependencies": {
- "express": "4.17.1"
+ "express": "4.17.3"
}
- æ°ããã¿ã°ã§ã€ã¡ãŒãžãåãã«ããã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ã§çµæã確èªããŸãããã
- Docker Scout Dashboardâ ãéããŸãã
- Dockerã¢ã«ãŠã³ãã§ãµã€ã³ã€ã³ããŸãã
- å·ŠåŽã®ããã²ãŒã·ã§ã³ãã Images ãéžæããŸãã
ã€ã¡ãŒãžããŒãžã«ã¯ãScoutãæå¹ã«ãªã£ãŠãããªããžããªãäžèŠ§è¡šç€ºãããŸãããªã¹ãå ã®ã€ã¡ãŒãžãéžæã㊠Image details ãµã€ãããŒãéããŸãããµã€ãããŒã«ã¯ããªããžããªã®æåŸã«ããã·ã¥ãããã¿ã°ã®ã³ã³ãã©ã€ã¢ã³ã¹æŠèŠã衚瀺ãããŸãã
ããªã·ãŒçµæããŸã 衚瀺ãããŠããªãå ŽåãããŒãžãæŽæ°ããŠãã ãããåããŠDocker Scout Dashboardã䜿çšããå Žåãçµæã衚瀺ããããŸã§ã«æ°åãããããšããããŸãã
Up-to-Date Base Images ããªã·ãŒã確èªããŸãããã®ããªã·ãŒã¯ã䜿çšããŠããããŒã¹ã€ã¡ãŒãžãææ°ãã©ããã確èªããŸãããã®äŸã§ã¯ãå€ãããŒãžã§ã³ã® alpine
ãããŒã¹ã€ã¡ãŒãžãšããŠäœ¿çšããŠãããããéæºæ ã®ã¹ããŒã¿ã¹ã«ãªã£ãŠããŸãã
ããªã·ãŒåã®æšªã«ãã View fix ãã¿ã³ãéžæãããšãéåã®è©³çŽ°ãšä¿®æ£æ¹æ³ã«é¢ããæšå¥šäºé ã衚瀺ãããŸãããã®å Žåãæšå¥šãããã¢ã¯ã·ã§ã³ã¯ Docker Scoutã®GitHubã€ã³ãã°ã¬ãŒã·ã§ã³ãæå¹ã«ããããšã§ããããã«ãããããŒã¹ã€ã¡ãŒãžãèªåçã«ææ°ã®ç¶æ ã«ä¿ã€ããšãã§ããŸãã
ãã®ã¬ã€ãã§äœ¿çšãããŠãããã¢ã¢ããªã§ã¯ããã®çµ±åãæå¹ã«ããããšã¯ã§ããŸãããã³ãŒããææããGitHubãªããžããªã«ããã·ã¥ããŠããã®çµ±åãè©ŠããŠã¿ãŠãã ããïŒ
ãŸãšã
ãã®ã¯ã€ãã¯ã¹ã¿ãŒãã¬ã€ãã§ã¯ãDocker ScoutããœãããŠã§ã¢ãµãã©ã€ãã§ãŒã³ç®¡çããµããŒãããããã€ãã®æ¹æ³ã«ã€ããŠçŽ¹ä»ããŸããïŒ
- ãªããžããªã§ã®Docker Scoutã®æå¹åæ¹æ³
- è匱æ§ã®åæ
- ããªã·ãŒãšã³ã³ãã©ã€ã¢ã³ã¹
- è匱æ§ã®ä¿®æ£ãšã³ã³ãã©ã€ã¢ã³ã¹ã®æ¹å
次ã®ã¹ãããã¯ïŒ
ãŸã ãŸã çºèŠããããšããããããããŸãããµãŒãããŒãã£ã®ã€ã³ãã°ã¬ãŒã·ã§ã³ãããªã·ãŒã®ã«ã¹ã¿ãã€ãºããªã¢ã«ã¿ã€ã ã§ã®ã©ã³ã¿ã€ã ç°å¢ã¢ãã¿ãªã³ã°ãªã©ã以äžã®ã»ã¯ã·ã§ã³ããã²ã芧ãã ããïŒ