Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SCAとDockerを触ってみよう!DecSecOps入門ワークショップ / SCA and ...
Search
ihcomega56
March 24, 2022
Technology
1
220
SCAとDockerを触ってみよう!DecSecOps入門ワークショップ / SCA and Docker workshop
GitHubリポジトリ:
https://github.com/ihcomega56/SCAandDockerHandsOn
ihcomega56
March 24, 2022
Tweet
Share
More Decks by ihcomega56
See All by ihcomega56
JEP 455: Primitive Types in Patterns, instanceof, and switch (Preview)
ihcomega56
0
52
シリコンバレーのチームで経験したふりかえり - 共通点とギャップ / retrospectives in silicon valley
ihcomega56
5
1.7k
「サプライチェーン攻撃」に立ち向かう!SBOMを使った脆弱性管理がもたらす品質とスピード向上
ihcomega56
2
2.2k
アプリケーション開発者目線で語る、明日から始めるDevSecOps
ihcomega56
0
130
パターンマッチングを学んで新しいJavaの世界へ!Java 18までの目玉機能をおさらいしよう / Java 18 pattern matching
ihcomega56
3
1.2k
JFrogのDevOps Platformづくりを支えるオブザーバビリティ / JFrog Observability
ihcomega56
0
430
SBOMでソフトウェアを守れ!10年後も自信を持ってリリースするために今始めるDevSecOps / DevSecOps with SBOM for yourself 10 years from now
ihcomega56
1
5.8k
Javaアプリケーションの アーティファクト管理と DevSecOps / Java artifacts management and DevSecOps
ihcomega56
0
2.4k
元現場エンジニアが思う「もっとこうしておけばよかった」から学ぶDevSecOps / DevSecOps Best Practices learned from my experiences
ihcomega56
1
480
Other Decks in Technology
See All in Technology
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
5
49k
とあるユーザー企業におけるリスクベースで考えるセキュリティ業務のお話し
4su_para
3
320
AIを駆使したゲーム開発戦略: 新設AI組織の取り組み / sge-ai-strategy
cyberagentdevelopers
PRO
1
130
いまさらのStorybook
ikumatadokoro
0
140
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
290k
「最高のチューニング」をしないために / hack@delta 24.10
fujiwara3
21
3.4k
LeSSに潜む「隠れWF病」とその処方箋
lycorptech_jp
PRO
2
120
Gradle: The Build System That Loves To Hate You
aurimas
2
150
プロダクトエンジニアが活躍する環境を作りたくて 事業責任者になった話 ~プロダクトエンジニアの行き着く先~
gimupop
1
480
Amazon_CloudWatch_ログ異常検出_導入ガイド
tsujiba
4
1.6k
一休.comレストランにおけるRustの活用
kymmt90
3
580
Product Engineer Night #6プロダクトエンジニアを育む仕組み・施策
hacomono
PRO
1
470
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Building Your Own Lightsaber
phodgson
102
6.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
355
29k
StorybookのUI Testing Handbookを読んだ
zakiyama
26
5.2k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Designing the Hi-DPI Web
ddemaree
280
34k
Fontdeck: Realign not Redesign
paulrobertlloyd
81
5.2k
Happy Clients
brianwarren
97
6.7k
The Power of CSS Pseudo Elements
geoffreycrofte
72
5.3k
Typedesign – Prime Four
hannesfritz
39
2.4k
Designing on Purpose - Digital PM Summit 2013
jponch
115
6.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
790
Transcript
1 ࣗݾհ Α͜ͳ "ZBOB:PLPUB • +'SPHͷ%FWFMPQFS"EWPDBUF • લ৬·ͰओʹόοΫΤϯυͷ։ൃ ʢ4*FS ࠂձࣾ
ূ݊ελʔτΞοϓʣ • ܹ௧ͱ໊ߴ͍ମʹߦͬͨ !"#$$%&' (#)*+,%-.
ࠓΔ͜ͱ • %PDLFSΠϝʔδΛϏϧυɾ࣮ߦ͢Δ • $*$%ΛͬͯΠϝʔδΛϦϙδτϦཧ͢Δʢ+'SPH "SUJGBDUPSZʣ • Πϝʔδʹର͠੬ऑੑεΩϟϯΛ࣮ߦ͢Δʢ+'SPH 9SBZʣ
εςοϓ %PDLFSΠϝʔδΛ࡞࣮ͯ͠ߦ͢Δ
%PDLFSGJMFͷॻ͖ํ FROM nginx:latest COPY ./index.html /usr/share/nginx/html/index.html ඞͣϑΝΠϧ໊%PDLFSGJMFͱ͢Δ %PDLFS͕Ϗϧυ༻ϑΝΠϧΛ໊લͰผ ͢ΔͨΊ
%PDLFSGJMFͰ͑Δ ίϚϯυ Ϗϧυͯ͠ΠϝʔδΛ࡞͢Δ docker build
• FROM ϕʔεͱͳΔΠϝʔδΛࢦఆ͢Δ • RUN Ϗϧυ࣌ʹίϯςφͰίϚϯυΛ࣮ߦ͢Δ • ENV ,FZ7BMVFܗࣜͰڥมΛࢦఆ͢Δ •
ADD, COPY ΠϝʔδϑΝΠϧΛίϐʔ͢Δ ˠ<ϦϯΫ>"%%ͱ$01:جຊ$01:Λ͏ • CMD, ENTRYPOINT ίϯςφىಈ࣌ʹ࣮ߦ͢ΔίϚϯυҾΛ ͋ ࢦఆ͢Δ ˠ<ϦϯΫ>$.%ͱ&/53:10*/5ͷΈ߹Θͤ جຊతͳ%PDLFSGJMFͷίϚϯυ
ΞϓϦέʔγϣϯͷίϯςφԽ • ݴޠϑϨʔϜϫʔΫʹΑͬͯΓํͦΕͧΕ͕ͩɺࢿྉ ͨ͘͞Μ͋ΔͷͰ ࠷ۙެࣜυΩϡϝϯτ๛ ࢀߟʹͯ͠ ࣮ݱͰ͖Δ • جຊతʹ࣍ͷ͍ͣΕ͔ͷํͰ%PDLFSGJMFΛॻ͍͍ͯ͘
• ιʔείʔυΛίϯςφʹίϐʔ͠ɺΠϝʔδͷϏϧυ࣌ʹΞϓϦ έʔγϣϯϏϧυ͢Δ • Ϗϧυͨ͠ΞϓϦέʔγϣϯͷ࣮ߦϑΝΠϧΛίϯςφʹίϐʔ͢Δ
αϯϓϧΞϓϦέʔγϣϯ ࣮ߦ ϑΝΠϧ ιʔε ίʔυ /012345 6789:2 :;32<= Ϗϧυ͢Δ
HSBEMFX CPPU+BS ࣮ߦ͢Δ KBWBKBSBQQIBOETPOKBS
αϯϓϧΞϓϦέʔγϣϯ ࣮ߦ ϑΝΠϧ ΞϓϦ༻ ίϯςφ ᶃίϐʔ ᶄίϯςφͰ࣮ߦ ࣮ߦ ϑΝΠϧ
ϋϯζΦϯλΠϜ • ιʔείʔυϦϙδτϦΛϑΥʔΫɺΫϩʔϯ͠Α͏ • IUUQTHJUIVCDPNJIDPNFHB4$"BOE%PDLFS)BOET0O • IBOETPOϒϥϯνΛ͍ͬͯ͘ • %PDLFSGJMFΛͤ͞Α͏
# TODO: アプリケーションの実⾏ファイルをコンテナ内にコピーする . COPY build/libs/*.jar work/app.jar . # TODO: アプリケーションを起動してコンテナを実⾏する . ENTRYPOINT ["java","-jar","/work/app.jar"] .
Α͘͏ίϯςφͷૢ࡞ ίϯςφΛҰཡදࣔ͢Δ docker ps ࣮ߦ த ఀࢭ த ίϯςφΛఀࢭ͢Δ
docker stop ίϯςφΛىಈ͢Δ docker start ࣮ߦதͷίϯςφͰίϚϯυΛ࣮ߦ͢Δ docker exec ίϯ ςφ ࣮ߦதͷίϯςφͷϩάΛग़ྗ͢Δ docker logs ίϯςφΛআ͢Δ docker rm ରఀࢭதͷίϯςφɻ ಈ͍͍ͯΔͷΛࢭΊΔ࣌ GΦϓγϣϯΛ͚ͭΔ ͪΐͬͱ͓ͨ͠ࢼ͠ ௐࠪʹ͏͜ͱ͕ଟ͍ ର࣮ߦதͷίϯςφɻ ࢭ·͍ͬͯΔͷݟΔ࣌ BΦϓγϣϯΛ͚ͭΔ
ҎԼͷ͍ͣΕ͔ͰΠϝʔδΛಛఆ͢Δ • *% • Πϝʔδ໊<λά໊> • Πϝʔδ໊<!μΠδΣετ> %PDLFSΠϝʔδͷಛఆɾ࣮ߦ ίϯςφΛ࡞ɾ࣮ߦ͢Δ
docker run σϑΥϧτϑΥΞάϥϯυ ࣮ߦɻόοΫάϥϯυʹ͢Δ ʹEΦϓγϣϯΛ͚ͭΔ ίϯςφΛ࡞͢Δ docker create ίϯςφΛ࣮ߦ͢Δ docker start
ϋϯζΦϯλΠϜ • ΞϓϦέʔγϣϯΛϏϧυ͠Α͏ ./gradlew bootJar • %PDLFSGJMFΛϏϧυ͠Α͏ docker build
-t ihcomegaws.jfrog.io/handson-docker/sample-app:latest . • ໊લͱλάΛ͚Δ <αʔόʔ><ϦϙδτϦ><໊લ><λά> • %PDLFSGJMFͷύεΛࢦఆʢ࣮࠷ޙʹυοτ͕͋Δͷʹʣ
ϋϯζΦϯλΠϜ • ίϯςφΛ࣮ߦ͠Α͏ docker run --name my-container ‒p 8888:8080
ihcomegaws.jfrog.io/handson-docker/sample-app:latest • ίϯςφʹNZDPOUBJOFSͱ໊લΛ͚ͭͯىಈʢࢦఆ͠ͳ͍߹ɺࣗಈ Ͱ໊લ͕ͭ͘ʣ • ίϯςφͷϙʔτΛͱͯ͠ϗετଆʹެ։ • IUUQMPDBMIPTUʹΞΫηε͠Α͏ • มߋΛ(JUʹϓογϡ͠Α͏
खݩͷཧ • ஈʑϩʔΧϧʹΠϝʔδ͕ͨ·͍ͬͯ͘ͷͰ࣌ʑ֬ೝ͠Α͏ • ͍Βͳ͍ͷআ͠Α͏ %PDLFSΠϝʔδҰཡΛදࣔ͢Δ docker images %PDLFSΠϝʔδΛআ͢Δ
docker rmi >391 ?@ABC:D EFGHIJ=
εςοϓ $*$%ͰΠϝʔδΛ ϦϙδτϦʹอ͢Δ
ϩʔΧϧϦϙδτϦʹอ • ࡞ͨ͠ΠϝʔδʮόΠφϦɾϦϙδτϦϚωʔδϟʔʯʹ อ͠ɺ͔ͦ͜ΒγΣΞ࠶ར༻Λ͢Δ • ಉ͡%PDLFSGJMFΛԿϏϧυ͢ΔͷΛආ͚ ࣌ؒΛઅͰ͖Δ • ࣭͕୲อ͞ΕͨΠϝʔδΛ͍ճͤΔ
औಘ͢Δ อ͢Δ
ϦϞʔτϦϙδτϦΛհͯ͠औಘ • औಘͨ͠ΠϝʔδʮόΠφϦɾϦϙδτϦ Ϛωʔδϟʔʯʹอ͓ͯ͘͠ • ΩϟογϡͷׂΛՌͨ͢ • ߴʹऔಘͰ͖Δ •
֎෦ϦϙδτϦʹΞΫηε Ͱ͖ͳͯ͘औಘͰ͖Δ औಘͭͭ͠ อ͢Δ
ϦϙδτϦͰΠϝʔδΛཧ %PDLFSΠϝʔδΛμϯϩʔυ͢Δ docker pull %PDLFSϨδετϦʹϩάΠϯ͢Δ docker login %PDLFSΠϝʔδΛݕࡧ͢Δ docker
search %PDLFSΠϝʔδΛΞοϓϩʔυ͢Δ docker push
όʔνϟϧϦϙδτϦ • ϩʔΧϧϦϙδτϦɾόʔνϟϧϦϙδτϦΛଋͶΔ • อऔಘόʔνϟϧϦϙδτϦʹରͯ͠ૢ࡞͢Εྑ͍ ϩʔΧϧ ϦϞʔτ όʔνϟϧ KGLM>BC
NOHPN1QR S5TUV7W
ϋϯζΦϯλΠϜ • ίϯςφΠϝʔδ༻ͷϦϙδτϦΛ࡞͠Α͏
(JU)VC"DUJPOT • HJUIVCXPSLGMPXTҎԼʹઃఆϑΝΠϧΛஔ͢Δͱ͑Δ • ·ͣτϦΨʔΛࢦఆ͢Δ • QVTI13ͳͲιʔείʔυϦϙδτϦʹର͢Δૢ࡞ • εέδϡʔϧ
• खಈ • XFCIPPL • ࣮ߦ͕࢝ΊΒΕΕɺ͋ͱΓ͍ͨ͜ͱΛܨ͍͛ͯ͘
ϫʔΫϑϩʔͷߏ
$*$%ͷجຊ • ΰʔϧͱաఔΛࢥ͍ඳ͍ͯ࡞ۀ͢Δ • ໋໊ίϝϯτͰ࣮ݱ͍ͨ͠ॲཧΛදݱ͢Δ • ઃఆϑΝΠϧ7$4Ͱཧ͢Δ • ύεϫʔυͷΑ͏ͳൿಗใઃఆϑΝΠϧʹॻ͔ͳ͍
• ႈੑͷ͋Δॲཧʹ͢Δ
ϋϯζΦϯλΠϜ • ΠϝʔδͷϏϧυɾϓογϡʹඞཁͳίϚϯυΛͤ͞Α͏ 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*ΩʔγʔΫϨοτมʹ͢Δ
ϋϯζΦϯλΠϜ 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ͰϏϧυ୯ҐͰૢ࡞Λߦ͏ͨΊɺϏϧυΛಛఆ͢Δ໊લͱ൪߸ Λ༩͢Δ • ͜͜ͰϏϧυͷ൪߸ʹ$-*͕ఏڙͯ͘͠ΕΔΛ࠾༻͢Δ • αʔόʔ*%ઃఆͰՃͨ͠ͷΛࢦఆ͢Δ
ϋϯζΦϯλΠϜ jfrog rt bce handson-build ${{ env.JFROG_CLI_BUILD_NUMBER }} •
CVJMEJOGPʢϏϧυʹؚ·ΕΔͷґଘɺϏϧυΛߦͬͨڥͳͲ ͷ༷ʑͳใʣΛऩू͢Δ jfrog rt bp handson-build ${{ env.JFROG_CLI_BUILD_NUMBER }} • CVJME JOGPΛϦϙδτϦʹөͤ͞Δ
ϋϯζΦϯλΠϜ • 4FDSFUTΛઃఆ͠Α͏ • +'30(@63- • +'30(@64&3 • +'30(@"1*@,&:
• $*$%ͷτϦΨʔΛࢦఆ͠Α͏ • มߋͨ͠ઃఆϑΝΠϧΛϓογϡ͠Α͏
εςοϓ Πϝʔδͷ੬ऑੑεΩϟϯΛߦ͏
ϙϦγʔɺϧʔϧɺΥον ϙϦγʔ ϧʔϧ ϧʔϧ ϧʔϧ ϧʔϧ Υον
ϙϦγʔɺϧʔϧɺΥον • ϧʔϧݕ͢Δ੬ऑੑͷϨϕϧɺ੬ऑੑ͕ݟ͔ͭͬͨͱ͖ͷ ΞΫγϣϯʢ௨ํ๏$*$%ͷӨڹͳͲʣΛఆٛ͢Δ • ϙϦγʔϧʔϧΛଋͶͨͷ • ΥονϙϦγʔͱεΩϟϯରʢϦϙδτϦϏϧυʣΛ ඥ͚Δ
ϋϯζΦϯλΠϜ • ੬ऑੑεΩϟϯͷઃఆΛ͠Α͏ • 9SBZΛ༗ޮʹ͢Δ • ϏϧυΛΠϯσοΫε͢Δ • ϙϦγʔɺϧʔϧɺΥονΛ࡞͢Δ
• ΠϝʔδΛεΩϟϯ͠Α͏ jfrog rt bs handson-build ${{ env.JFROG_CLI_BUILD_NUMBER }} • εΩϟϯ݁ՌΛ֬ೝ͠Α͏
ϋϯζΦϯλΠϜ • ϥΠϒϥϦͷόʔδϣϯΛ্͛ͯ࠶ϏϧυΛ࣮ߦ͠ɺ݁ՌΛ ֬ೝ͠Α͏ • 4#0.ΛݟͯΈΑ͏ʢແྉͩͱ͑ͳ͍ͨΊΑ͜ͳ͕͓ݟͤ͠·͢ʣ