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
CI/CDのセキュリティ対策にOSSツールを使ってみる
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Tommy(sigma)
June 21, 2024
81
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CI/CDのセキュリティ対策にOSSツールを使ってみる
セキュリティ勉強会 Sprout発表資料 2024年7月
Tommy(sigma)
June 21, 2024
More Decks by Tommy(sigma)
See All by Tommy(sigma)
なぜHaskellは美しいと言われるのか?
ryosukedtomita
1
10
AWSビルダーカードで遊んでみた
ryosukedtomita
1
150
#QiitaBash TDDで(自分の)開発がどう変わったか
ryosukedtomita
1
500
#QiitaBash MCPのセキュリティ
ryosukedtomita
2
1.8k
#QiitaBash TDDでAIに設計イメージを伝える
ryosukedtomita
2
2.2k
#QiitaBash 良い記事は誰かを救う!2025/04/14
ryosukedtomita
0
37
生成AIの世界で君たちはどう生きるか
ryosukedtomita
0
140
DevSecOps CI/CDツール導入のススメ
ryosukedtomita
1
200
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
550
Paper Plane (Part 1)
katiecoart
PRO
2
11k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
530
The Invisible Side of Design
smashingmag
301
52k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
600
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
The Cult of Friendly URLs
andyhume
79
7k
Transcript
CI/CDのセキュリティ
自己紹介 • 3年目セキュリティエンジニア ◦ Web系の開発 ◦ セキュリティチケットレビュー (やりたくない) ◦ 脆弱性診断
◦ 社内基盤管理 ◦ (生成AI活用推進) • 個人的ニュース: 引っ越しが近いです。 ※この発言は個人の見解であり、所属する組織の公式見解ではありません
CI/CDとは RedHatより • CI : コード変更をリポジトリに自動的かつ頻繁に取り込む手法 • CD : コード変更の統合、テスト、デリバリー
ソフトウェア開発ライフサイクルを最適化し、 加速することを目的
今回の発表の目的 • 前回の発表: DevSecOpsツールを個人開発に取り入れてみた CI/CDの中で使えるセキュリティツールの紹介 • 今回の発表: CI/CD自体もセキュアにしていかなければならない →安定かつ使いやすくセキュアなCI/CDを構築するツールを紹介(GitHub)
CI/CDのセキュリティ的な脅威 想定されていないCIが実行される ◦ CIの定義ファイル改ざん ◦ CIの定義ファイルで使っているライブラリの改ざん ◦ 予期しない本番リリース ◦ CIが依存性問題で正しく動かなくなる
CI/CDのセキュリティガイドライン デジタル庁ガイドライン 1. アカウント管理・アクセス制御 2. 強制的な取り込み(マージ)の禁止 3. シークレットの保護 4. CI/CDパイプラインを通した信頼性の確保
CI/CDパイプラインの定義ファイルの保護
1. アカウント管理・アクセス制御 • やるべきこと: 任意のパイプラインが実行されないように,CIの定義ファイルの管理 者と使用者の権限を適切に設定 • 具体的な設定 ◦ CODEOWNERSファイルでCIの定義ファイルを承認なしで書き換え不可にする
2. 強制的な取り込み(マージ)の禁止 • RepositoryのBranch Protectionsのルールでセルフマージ等を禁止にする • プルリクに対してなるべくコメントをつけるメンバーを増やす →ランダムで指名するとか
3. シークレットの保護 • OIDCをサポートすることで数分程度有効なアクセストークンを使ってビルドやデリ バリ等を実行する • GitHub Actions Secret等の利用。CIの定義ファイルに直書きしない
CIの定義ファイルの変更を承認制にする • CIの定義ファイルの悪意のある改ざんを防ぐ必要がある • CODEOWNERSファイルでレビュアー を指定できる。 .github/workflows/* @tomita
GitHub Actionsのactionのバージョンを固定 • actionsのバージョンが急に変わると ◦ CIが動かなくなる ◦ 想定外のCIが実行される • フルコミットハッシュで
記載してバージョンを固定 ❌uses: actions/checkout@main ❌uses: actions/checkout@v3 ❌uses: actions/
[email protected]
⭕uses: actions/checkout@83b7061638ee 4956cf7545a6f7efe594e5ad0247 # v3.5.1
pinact pinactで数字のバージョンを自動変換可能 .github/workflows/* @tomita $pinact run $git diff - -
uses: actions/setup-go@v4 + - uses: actions/setup-go@4d34df0c2316fe 8122ab82dc22947d607c0c91f9 # v4.0.0
確実に通ってほしいCIを指定する • デフォルトでは,CIが通っていなくてもマージできてしまう • 確実に通ってほしいCIが通ったときだけマージできるようにBranch Protectionsを 設定する
CIの結果を見やすくする • 優先度の低いCIが失敗しているかは確認したい • github-commentを使うことでコメント欄にCIの結果を記載できる
github-commentの使い方 • github-comment exec -- <コマンド> • github-comment.yamlを使って テンプレートを作成可能 $github-comment
exec --token ${{ secrets.token }} -- npm install
CIのベストプラクティスに沿うためにghalint • ghalint: github actionsのlinter • jobに対してpermissionsを明示的につけさせる • フルコミットハッシュを使わせる
CIで使うツールのバージョン管理 CIで使うCLIツール自体のバージョン管理も必要 • make • shell script • aqua←個人的に良さそう
aquaの使い方 aqua • GitHub Actionsでのツール インストールも楽。 steps: # Checkout repository
to runner - uses: actions/checkout@f43a0e5ff2bd29409563 8e18286ca9a3d1956744 # v3.6.0 - name: install package using aqua uses: aquaproj/aqua-installer@6ce1f8848ec8e61 f14d57bd5d7597057a6dd187c # v3.0.1 with: aqua_version: v2.29.0 # ローカルでインストールする場合 $aqua g -i suzuki-shunsuke/pinact
まとめ • CI/CD自体のセキュリティも対策が必要 • 基本はGitHubの機能で対策できるが, 楽しようとすると便利なOSSがある • セキュリティの道のりは長い