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
230
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
62
シリコンバレーのチームで経験したふりかえり - 共通点とギャップ / retrospectives in silicon valley
ihcomega56
5
1.8k
「サプライチェーン攻撃」に立ち向かう!SBOMを使った脆弱性管理がもたらす品質とスピード向上
ihcomega56
2
2.3k
アプリケーション開発者目線で語る、明日から始めるDevSecOps
ihcomega56
0
140
パターンマッチングを学んで新しいJavaの世界へ!Java 18までの目玉機能をおさらいしよう / Java 18 pattern matching
ihcomega56
3
1.3k
JFrogのDevOps Platformづくりを支えるオブザーバビリティ / JFrog Observability
ihcomega56
0
440
SBOMでソフトウェアを守れ!10年後も自信を持ってリリースするために今始めるDevSecOps / DevSecOps with SBOM for yourself 10 years from now
ihcomega56
1
5.9k
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
大幅アップデートされたRagas v0.2をキャッチアップ
os1ma
2
530
NilAway による静的解析で「10 億ドル」を節約する #kyotogo / Kyoto Go 56th
ytaka23
3
380
非機能品質を作り込むための実践アーキテクチャ
knih
5
1.3k
KnowledgeBaseDocuments APIでベクトルインデックス管理を自動化する
iidaxs
1
260
フロントエンド設計にモブ設計を導入してみた / 20241212_cloudsign_TechFrontMeetup
bengo4com
0
1.9k
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
170
どちらを使う?GitHub or Azure DevOps Ver. 24H2
kkamegawa
0
790
KubeCon NA 2024 Recap / Running WebAssembly (Wasm) Workloads Side-by-Side with Container Workloads
z63d
1
250
マルチプロダクト開発の現場でAWS Security Hubを1年以上運用して得た教訓
muziyoshiz
3
2.3k
プロダクト開発を加速させるためのQA文化の築き方 / How to build QA culture to accelerate product development
mii3king
1
260
20241220_S3 tablesの使い方を検証してみた
handy
4
460
ハイテク休憩
sat
PRO
2
150
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
247
1.3M
Building Adaptive Systems
keathley
38
2.3k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
BBQ
matthewcrist
85
9.4k
Building Applications with DynamoDB
mza
91
6.1k
Into the Great Unknown - MozCon
thekraken
33
1.5k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Designing for Performance
lara
604
68k
Docker and Python
trallard
42
3.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
17
2.3k
Mobile First: as difficult as doing things right
swwweet
222
9k
Code Reviewing Like a Champion
maltzj
520
39k
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.ΛݟͯΈΑ͏ʢແྉͩͱ͑ͳ͍ͨΊΑ͜ͳ͕͓ݟͤ͠·͢ʣ