Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SCAとDockerを触ってみよう!DecSecOps入門ワークショップ / SCA and Docker workshop

SCAとDockerを触ってみよう!DecSecOps入門ワークショップ / SCA and Docker workshop

ihcomega56

March 24, 2022
Tweet

More Decks by ihcomega56

Other Decks in Technology

Transcript

  1. • FROM ϕʔεͱͳΔΠϝʔδΛࢦఆ͢Δ • RUN Ϗϧυ࣌ʹίϯςφ಺ͰίϚϯυΛ࣮ߦ͢Δ • ENV ,FZ7BMVFܗࣜͰ؀ڥม਺Λࢦఆ͢Δ •

    ADD, COPY Πϝʔδ಺΁ϑΝΠϧΛίϐʔ͢Δ ˠ<ϦϯΫ>"%%ͱ$01:جຊ͸$01:Λ࢖͏ • CMD, ENTRYPOINT ίϯςφىಈ࣌ʹ࣮ߦ͢ΔίϚϯυ΍Ҿ਺Λ ͋ ࢦఆ͢Δ ˠ<ϦϯΫ>$.%ͱ&/53:10*/5ͷ૊Έ߹Θͤ  جຊతͳ%PDLFSGJMFͷίϚϯυ
  2.  ΞϓϦέʔγϣϯͷίϯςφԽ • ݴޠ΍ϑϨʔϜϫʔΫʹΑͬͯ΍Γํ͸ͦΕͧΕ͕ͩɺࢿྉ͸ ͨ͘͞Μ͋ΔͷͰ ࠷ۙ͸ެࣜυΩϡϝϯτ΋๛෋ ࢀߟʹͯ͠ ࣮ݱͰ͖Δ • جຊతʹ͸࣍ͷ͍ͣΕ͔ͷํ਑Ͱ%PDLFSGJMFΛॻ͍͍ͯ͘

    • ιʔείʔυΛίϯςφʹίϐʔ͠ɺΠϝʔδͷϏϧυ࣌ʹΞϓϦ έʔγϣϯ΋Ϗϧυ͢Δ • Ϗϧυͨ͠ΞϓϦέʔγϣϯͷ࣮ߦϑΝΠϧΛίϯςφʹίϐʔ͢Δ
  3.  αϯϓϧΞϓϦέʔγϣϯ ࣮ߦ ϑΝΠϧ ιʔε ίʔυ /012345 6789:2 :;32<= Ϗϧυ͢Δ

    HSBEMFX CPPU+BS ࣮ߦ͢Δ KBWBKBSBQQIBOETPOKBS
  4.  ϋϯζΦϯλΠϜ • ιʔείʔυϦϙδτϦΛϑΥʔΫɺΫϩʔϯ͠Α͏ • IUUQTHJUIVCDPNJIDPNFHB4$"BOE%PDLFS)BOET0O • IBOETPOϒϥϯνΛ࢖͍ͬͯ͘ • %PDLFSGJMFΛ׬੒ͤ͞Α͏

    # TODO: アプリケーションの実⾏ファイルをコンテナ内にコピーする . COPY build/libs/*.jar work/app.jar . # TODO: アプリケーションを起動してコンテナを実⾏する . ENTRYPOINT ["java","-jar","/work/app.jar"] .
  5.  Α͘࢖͏ίϯςφͷૢ࡞ ίϯςφΛҰཡදࣔ͢Δ docker ps ࣮ߦ த ఀࢭ த ίϯςφΛఀࢭ͢Δ

    docker stop ίϯςφΛىಈ͢Δ docker start ࣮ߦதͷίϯςφ಺ͰίϚϯυΛ࣮ߦ͢Δ docker exec ίϯ ςφ ࣮ߦதͷίϯςφ಺ͷϩάΛग़ྗ͢Δ docker logs ίϯςφΛ࡟আ͢Δ docker rm ର৅͸ఀࢭதͷίϯςφɻ ಈ͍͍ͯΔ΋ͷΛࢭΊΔ࣌͸ GΦϓγϣϯΛ͚ͭΔ ͪΐͬͱ͓ͨ͠ࢼ͠΍ ௐࠪʹ࢖͏͜ͱ͕ଟ͍ ର৅͸࣮ߦதͷίϯςφɻ ࢭ·͍ͬͯΔ΋ͷ΋ݟΔ࣌͸ BΦϓγϣϯΛ͚ͭΔ
  6. ҎԼͷ͍ͣΕ͔ͰΠϝʔδΛಛఆ͢Δ • *% • Πϝʔδ໊<λά໊> • Πϝʔδ໊<!μΠδΣετ஋>  %PDLFSΠϝʔδͷಛఆɾ࣮ߦ ίϯςφΛ࡞੒ɾ࣮ߦ͢Δ

    docker run σϑΥϧτ͸ϑΥΞάϥ΢ϯυ ࣮ߦɻόοΫάϥ΢ϯυʹ͢Δ ʹ͸EΦϓγϣϯΛ͚ͭΔ ίϯςφΛ࡞੒͢Δ docker create ίϯςφΛ࣮ߦ͢Δ docker start
  7.  ϋϯζΦϯλΠϜ • ΞϓϦέʔγϣϯΛϏϧυ͠Α͏ ./gradlew bootJar • %PDLFSGJMFΛϏϧυ͠Α͏ docker build

    -t ihcomegaws.jfrog.io/handson-docker/sample-app:latest . • ໊લͱλάΛ෇͚Δ <αʔόʔ><ϦϙδτϦ><໊લ><λά> • %PDLFSGJMFͷύεΛࢦఆʢ࣮͸࠷ޙʹυοτ͕͋Δͷʹ஫໨ʣ
  8.  ϋϯζΦϯλΠϜ • ίϯςφΛ࣮ߦ͠Α͏ docker run --name my-container ‒p 8888:8080

    ihcomegaws.jfrog.io/handson-docker/sample-app:latest • ίϯςφʹNZDPOUBJOFSͱ໊લΛ͚ͭͯىಈʢࢦఆ͠ͳ͍৔߹ɺࣗಈ Ͱ໊લ͕ͭ͘ʣ • ίϯςφͷϙʔτΛͱͯ͠ϗετଆʹެ։ • IUUQMPDBMIPTUʹΞΫηε͠Α͏ • มߋΛ(JUʹϓογϡ͠Α͏
  9.  ϋϯζΦϯλΠϜ • ΠϝʔδͷϏϧυɾϓογϡʹඞཁͳίϚϯυΛ׬੒ͤ͞Α͏ docker build -t ${{ secrets.JFROG_URL }}/handson-docker/sample-

    app:latest . • ઌ΄Ͳͱಉ͕ͩ͡ɺ63-͸γʔΫϨοτม਺ʹ͢Δ jfrog c add my-jfrog-server --url=https://${{ secrets.JFROG_URL }} --user=${{ secrets.JFROG_USER }} --password=${{ secrets.JFROG_API_KEY }} • ʢݟ΍͢͞ͷͨΊվߦ͍ͯ͠·͕࣮͢ࡍ͸ෆཁͰ͢ʣ • +'SPH$-*ͷઃఆͱͯ͠ɺ+'SPHͷαʔόʔͷొ࿥ͱೝূઃఆΛߦ͏ • Ϣʔβʔ໊ͱ"1*Ωʔ͸γʔΫϨοτม਺ʹ͢Δ
  10.  ϋϯζΦϯλΠϜ jfrog rt dp ${{ secrets.JFROG_URL }}/handson-docker/sample-app:latest handson-docker --build-name=handson-build

    --build-number=${{ env.JFROG_CLI_BUILD_NUMBER }} --server-id=my-jfrog-server • ʢݟ΍͢͞ͷͨΊվߦ͍ͯ͠·͕࣮͢ࡍ͸ෆཁͰ͢ʣ • ΠϝʔδΛࢦఆͯ͠EPDLFS QVTI͢Δ • ͜͜Ͱ͸ϓογϡઌͱͯ͠όʔνϟϧϦϙδτϦΛࢦఆ͢Δ • +'SPHͰ͸Ϗϧυ୯ҐͰૢ࡞Λߦ͏ͨΊɺϏϧυΛಛఆ͢Δ໊લͱ൪߸ Λ෇༩͢Δ • ͜͜Ͱ͸Ϗϧυͷ൪߸ʹ$-*͕ఏڙͯ͘͠ΕΔ஋Λ࠾༻͢Δ • αʔόʔ*%͸ઃఆͰ௥Ճͨ͠΋ͷΛࢦఆ͢Δ
  11.  ϋϯζΦϯλΠϜ jfrog rt bce handson-build ${{ env.JFROG_CLI_BUILD_NUMBER }} •

    CVJMEJOGPʢϏϧυʹؚ·ΕΔ΋ͷ΍ґଘɺϏϧυΛߦͬͨ؀ڥͳͲ ͷ༷ʑͳ৘ใʣΛऩू͢Δ jfrog rt bp handson-build ${{ env.JFROG_CLI_BUILD_NUMBER }} • CVJME JOGPΛϦϙδτϦʹ൓өͤ͞Δ
  12.  ϋϯζΦϯλΠϜ • 4FDSFUTΛઃఆ͠Α͏ • +'30(@63- • +'30(@64&3 • +'30(@"1*@,&:

    • $*$%ͷτϦΨʔΛࢦఆ͠Α͏ • มߋͨ͠ઃఆϑΝΠϧΛϓογϡ͠Α͏
  13.  ϋϯζΦϯλΠϜ • ੬ऑੑεΩϟϯͷઃఆΛ͠Α͏ • 9SBZΛ༗ޮʹ͢Δ • ϏϧυΛΠϯσοΫε͢Δ • ϙϦγʔɺϧʔϧɺ΢ΥονΛ࡞੒͢Δ

    • ΠϝʔδΛεΩϟϯ͠Α͏ jfrog rt bs handson-build ${{ env.JFROG_CLI_BUILD_NUMBER }} • εΩϟϯ݁ՌΛ֬ೝ͠Α͏