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
410
コンテナ脆弱性修正をRenovate,Dependabotのように行う / Fix Container vulnerabilities on CICD
Akira Kuriyama
September 27, 2024
Tweet
Share
More Decks by Akira Kuriyama
See All by Akira Kuriyama
Datadog On-Calを本番導入しました / Datadog On-Cal now in production
sheepland
0
140
Datadog Logsで実現するオブザーバビリティの向上 / Enhancing Observability with Datadog Logs
sheepland
0
110
Docker Build Cloudを導入してコンテナイメージビルド時間を80%削減した話 / Speeding Up Container Builds with Docker Build Cloud
sheepland
0
140
Design Doc のすすめ / The Importance of Design Docs
sheepland
0
480
Datadogのグラフにデプロイタイミングを表示する / deploy timing on datadog graph
sheepland
1
650
英語学習の始め方 / How to start learning English
sheepland
0
120
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.8k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
480
Speed Design
sergeychernyshev
31
990
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
Building Applications with DynamoDB
mza
95
6.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
Practical Orchestrator
shlominoach
188
11k
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 詳しくはテックブログを参照下さい!
ご静聴ありがとうございま した!