Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
SCAとDockerを触ってみよう!DecSecOps入門ワークショップ / SCA and ...
Search
ihcomega56
March 24, 2022
Technology
350
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SCAとDockerを触ってみよう!DecSecOps入門ワークショップ / SCA and Docker workshop
GitHubリポジトリ:
https://github.com/ihcomega56/SCAandDockerHandsOn
ihcomega56
March 24, 2022
More Decks by ihcomega56
See All by ihcomega56
JEP 455: Primitive Types in Patterns, instanceof, and switch (Preview)
ihcomega56
1
190
シリコンバレーのチームで経験したふりかえり - 共通点とギャップ / retrospectives in silicon valley
ihcomega56
5
2.1k
「サプライチェーン攻撃」に立ち向かう!SBOMを使った脆弱性管理がもたらす品質とスピード向上
ihcomega56
2
2.7k
アプリケーション開発者目線で語る、明日から始めるDevSecOps
ihcomega56
0
280
パターンマッチングを学んで新しいJavaの世界へ!Java 18までの目玉機能をおさらいしよう / Java 18 pattern matching
ihcomega56
3
1.5k
JFrogのDevOps Platformづくりを支えるオブザーバビリティ / JFrog Observability
ihcomega56
0
580
SBOMでソフトウェアを守れ!10年後も自信を持ってリリースするために今始めるDevSecOps / DevSecOps with SBOM for yourself 10 years from now
ihcomega56
1
6.9k
Javaアプリケーションの アーティファクト管理と DevSecOps / Java artifacts management and DevSecOps
ihcomega56
0
2.8k
元現場エンジニアが思う「もっとこうしておけばよかった」から学ぶDevSecOps / DevSecOps Best Practices learned from my experiences
ihcomega56
1
590
Other Decks in Technology
See All in Technology
JAWS-UGグッズ職人仕事の流儀
kentapapa
0
120
M5Stackで作る BLEマウス GPSログの世界
tomokusaba
PRO
0
440
React改造してみた
tsukina_7mochi
0
140
Active Record Connection Adaptersにおける長年の課題に再び取り組む
yahonda
0
300
AI時代のPRレビューにどう向き合うか?
kairim0
1
250
Conditional PED-ANOVA: Hyperparameter Importance in Hierarchical & Dynamic Search Spaces
pfn
PRO
0
140
QA4AI 2026-Oct 生成AI時代の品質保証
tokuty
1
900
『SAR衛星データ解析入門』のご紹介とその応用
syuchimu
0
130
僕のハーネスを紹介します
watany
3
710
AIカンパニーへの転換を支えた、エンジニアの仕事の再定義
kworkdev
PRO
2
1.3k
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
350
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
4
630
Featured
See All Featured
Being A Developer After 40
akosma
92
590k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
A Soul's Torment
seathinner
8
3.8k
Fireside Chat
paigeccino
43
4.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Ethics towards AI in product and experience design
skipperchong
2
440
Building the Perfect Custom Keyboard
takai
2
910
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
760
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Product Roadmaps are Hard
iamctodd
55
13k
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.ΛݟͯΈΑ͏ʢແྉͩͱ͑ͳ͍ͨΊΑ͜ͳ͕͓ݟͤ͠·͢ʣ