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
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
190
Featured
See All Featured
A designer walks into a library…
pauljervisheath
211
25k
Become a Pro
speakerdeck
PRO
31
6.3k
Being A Developer After 40
akosma
91
590k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
340
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
YesSQL, Process and Tooling at Scale
rocio
174
15k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Docker and Python
trallard
47
4.2k
The Limits of Empathy - UXLibs8
cassininazir
1
690
The untapped power of vector embeddings
frankvandijk
2
1.9k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
290
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がある • セキュリティの道のりは長い