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
コンテナ脆弱性修正をRenovate,Dependabotのように行う / Fix Conta...
Search
Akira Kuriyama
September 27, 2024
2
280
コンテナ脆弱性修正をRenovate,Dependabotのように行う / Fix Container vulnerabilities on CICD
Akira Kuriyama
September 27, 2024
Tweet
Share
More Decks by Akira Kuriyama
See All by Akira Kuriyama
Docker Build Cloudを導入してコンテナイメージビルド時間を80%削減した話 / Speeding Up Container Builds with Docker Build Cloud
sheepland
0
86
Design Doc のすすめ / The Importance of Design Docs
sheepland
0
160
Datadogのグラフにデプロイタイミングを表示する / deploy timing on datadog graph
sheepland
1
500
英語学習の始め方 / How to start learning English
sheepland
0
100
Featured
See All Featured
Optimizing for Happiness
mojombo
376
70k
We Have a Design System, Now What?
morganepeng
50
7.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
The Invisible Side of Design
smashingmag
298
50k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Gamification - CAS2011
davidbonilla
80
5k
Agile that works and the tools we love
rasmusluckow
327
21k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Writing Fast Ruby
sferik
627
61k
Why Our Code Smells
bkeepers
PRO
334
57k
Into the Great Unknown - MozCon
thekraken
32
1.5k
Transcript
令和最新版 他人に自慢したいヤバいCI/CD LT会 @yabaibuki.dev #2 Akira Kuriyama (@sheepland) コンテナ脆弱性修正を Renovate/Dependabot
のように行う
自己紹介 名前 : 栗山 聖(くりやま あきら) X : @sheepland 職種
: SRE 所属 : 株式会社スタディスト
補足 今回の話すコンテナ脆弱性とは、OSのパッケージの脆弱性です。 アプリケーションのパッケージの脆弱性は対象外。
みなさんコンテナ脆弱性修正 しておりますでしょうか? 突然大きな脆弱性が見つかりSNSで話題に。 話題にならなくても日々脆弱性は発見されている。
しかし、修正しようにも面倒ですよね? なにが面倒か • どのコンテナに脆弱性があるのか分からない • どうやって脆弱性を修正していいか分かりづらい • コンテナ再ビルドすればパッケージが更新されるので修正できるが、ビルド キャッシュ効いていると更新されない問題 •
手動でビルドキャッシュを消すのが面倒 • 脆弱性修正PRという形でPRを出しづらい
なにが面倒か • どのコンテナに脆弱性があるのか分からない • どうやって脆弱性を修正していいか分かりづらい しかし、修正しようにも面倒ですよね? バージョンアップしたいけど バージョン指定してない RUN apt-get
update && apt-get install -y \ package-bar \ package-baz \ package-foo \ …
しかし、修正しようにも面倒ですよね? なにが面倒か • どのコンテナに脆弱性があるのか分からない • どうやって脆弱性を修正していいか分かりづらい • コンテナ再ビルドすればパッケージが更新されるので修正できるが、 ビルドキャッシュ効いていると更新されない問題 ◦
手動でビルドキャッシュを消すのが面倒 • 脆弱性修正PRという形でPRを出しづらい
しかし、修正しようにも面倒ですよね? なにが面倒か • どのコンテナに脆弱性があるのか分からない • どうやって脆弱性を修正していいか分かりづらい • コンテナ再ビルドすればパッケージが更新されるので修正できるが、 ビルドキャッシュ効いていると更新されない問題 ◦
手動でビルドキャッシュを消すのが面倒 • 脆弱性修正PRという形でPRを出しづらい
おれたちはただ、Renovate/Dependabotのように コンテナ脆弱性修正PRをマージするだけで脆弱性を修正 したいだけなんだ…!
実現しました! 開発者側のフロー 1. Slackに脆弱性通知がくる 2. Slack通知内のPRリンクを開く 3. PRに対して脆弱性スキャンCIやアプリケーションのCIが 通っていることを確認する 4.
mergeしてリリースする 5. 脆弱性解消! かなりDependabotやRenovateと近しい体験
実現しました! CI/CD側のフロー 1. CI/CDで毎日最新のイメージに対して脆弱性スキャン 2. 脆弱性が見つかれば脆弱性内容が記載されたGitHubのIssueを自動作成 3. そのIssueに紐付ける形で脆弱性修正PRを自動作成 4. Slackに脆弱性が見つかったことをPRのリンク付きで通知
Slack通知
Pull Request
Issue
ポイントを簡単に説明をします
脆弱性スキャンについて 脆弱性スキャンにはTrivyを使用しています。 以下のオプションを指定しています。 • vuln-typeオプションでOSパッケージのみを脆弱性スキャン対象に • severityオプションで緊急度の高い脆弱性のみを対象に • ignore-unfixedオプションでパッチが提供済みの脆弱性のみを対象に
FROM node:22 # apt-getでinstallしたパッケージをアップデートする場合は以下のバージョンを上げる RUN echo "package-cache-v1" > /dev/null RUN
apt-get update && apt-get install -y \ package-bar \ package-baz \ Dockerfileは `RUN`のコマンド内容が変わると以降はキャッシュが使われなくなります。 これを利用して、RUNの内容を更新することでキャッシュが使われないようにしています。 (RUNの内容はなんでもよいです) 脆弱性修正PRについて
脆弱性修正PRでは、"package-cache-v◦"のv◦の部分の数値を上げる 脆弱性修正PRについて
CIとTrivyを組み合わせて、簡単にコンテナ脆弱性 を修正できる仕組みを作りました! まとめ
「コンテナイメージ脆弱性検知と対応フローの紹介」 https://studist.tech/container-image-vulnerability-scan-3b8a04a9577 詳しくはテックブログを参照下さい!
ご静聴ありがとうございま した!