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
DevSecOps CI/CDツール導入のススメ
Search
sigma
December 15, 2023
Programming
1
120
DevSecOps CI/CDツール導入のススメ
SANS 540でCI/CDの概念やCI/CDの中に組み込めそうなツールについて学んだので実際に使ってみました。
sigma
December 15, 2023
Tweet
Share
More Decks by sigma
See All by sigma
#QiitaBash TDDでAIに設計イメージを伝える
ryosukedtomita
2
940
#QiitaBash 良い記事は誰かを救う!2025/04/14
ryosukedtomita
0
2
CI/CDのセキュリティ対策にOSSツールを使ってみる
ryosukedtomita
0
37
生成AIの世界で君たちはどう生きるか
ryosukedtomita
0
91
Other Decks in Programming
See All in Programming
REST API設計の実践 – ベストプラクティスとその落とし穴
kentaroutakeda
2
230
AIにコードを生成するコードを作らせて、再現性を担保しよう! / Let AI generate code to ensure reproducibility
yamachu
7
5.5k
Reactive Thinking with Signals, Resource API, and httpResource @Devm.io Angular 20 Launch Party
manfredsteyer
PRO
0
110
イベントソーシングとAIの親和性ー物語とLLMに理解できるデータ
tomohisa
1
150
Cache Strategies with Redisson & Exposed
debop
0
120
❄️ tmux-nixの実装を通して学ぶNixOSモジュール
momeemt
1
110
TypeScript Language Service Plugin で CSS Modules の開発体験を改善する
mizdra
PRO
3
2k
JVM の仕組みを理解して PHP で実装してみよう
m3m0r7
PRO
1
230
CursorとDevinが仲間!?AI駆動で新規プロダクト開発に挑んだ3ヶ月を振り返る / A Story of New Product Development with Cursor and Devin
rkaga
5
1.8k
TypeScript を活かしてデザインシステム MCP を作る / #tskaigi_after_night
izumin5210
4
420
Doma で目指す ORM 最適解
nakamura_to
1
160
少数精鋭エンジニアがフルスタック力を磨く理由 -そしてAI時代へ-
rebase_engineering
0
100
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
Why Our Code Smells
bkeepers
PRO
336
57k
How to train your dragon (web standard)
notwaldorf
92
6k
Scaling GitHub
holman
459
140k
BBQ
matthewcrist
88
9.6k
A Tale of Four Properties
chriscoyier
159
23k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Designing for Performance
lara
608
69k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Transcript
Ryosuke Tomita DevSecOpsを 個人開発に取り入れてみた Sigma
最初に言っておこう • 自己研鑽でやったことの紹介に近いかも • 嘘言ってたらすみません • 手抜きで汚いスライド注意! ◦ 発表の見栄えを良くするよりも試行錯誤を優先してしまった
目次 • DevSecOpsとは • 取り入れたセキュリティ対策(ツールの導入) ◦ 環境紹介 ◦ 導入したツールの紹介等 ◦
感想
DevSecOpsとは
DevOpsとは 少人数のチームが全体をまとめてスピード感UP→個人開発と相性良 https://www.nri-secure.co.jp/service/consulting/devsecops
CI/CDパイプラインによる自動化 https://www.networld.co.jp/solution/container_businessmaster/chapter4_3.html
従来型の開発におけるセキュリティ • 基本設計: チェックリスト,ガイドラインの確認 • コーディング: コーディング規約 • リリース前のセキュリティ診断
DevOpsに対するセキュリティ(DevSecOps) DevOpsのセキュリティの問題点 • リリース速度が早く,毎回セキュリティ診断するのは大変 • ガイドラインが技術の変化に追いついていない • チェックリストを手動でチェックする負担大 開発の中にセキュリティを組み込むことが必用→DevSecOps
SHIFT LEFT DevSecOpsでは開発の俊敏性を損なわずにセキュリティ対策したい • 設計段階でセキュリティ対策: 設計評価 • 開発の中にセキュリティテストを組みこむ→ツールによる自動化
https://www.slideshare.net/pumasecurity/devsecops-key-controls-to-modern-security-success
取り入れた セキュリティ対策 やってみせろよマ フィティー
使用した技術 • Reactのアプリを • Dockerでビルドして • AWS ECS on Fargate公開しちゃおう(未完成)
セキュリティなんもわからん
全体構成図 Copilot CLI Code Pipeline ECS(開発) ECS(本番) Extensions Image Scan
コードスキャン 承認後に本番 デプロイ
Pre-Commitフェーズでの セキュリティ対策
Pre-Commit(コミット前の対策) • VSCodeのExtensions • pre-commit hooksによるコミット前の検査 • Rapid-Risk-Assessment • Peer
Code Review 脆弱なコードがリポジトリに取り込まれないようにする
VSCode Extensions • Hadolint: Dockerfileのベストプラクティス • ESLint: JS,TSの構文チェック • Prettier
ESLint: Formatter • (Code Spell Checker) コードを書く時にセキュリティを意識,書き方 を統一!
Rapid Risk Assessment • doc/rapid-risk-assessment.mdを配置 • どんなリスクがあるか洗い出しておく→個人の場合はがんばる
pre-commit hooks • コミット前に簡易的な検査を実行し,違反していたらコミットさせない • git-secrets: APIキーやパスワード等を検知 • 余力があれば,LinterとかFormatterをいれると良い ◦
Hadolint: Docker ◦ Prettier: TSのFormatter ◦ ESLint: ESのLinter ◦ CloudFormationのLinter: cfn_nag ◦ conftest: k8sのmanifestとか
None
Peer Code Review • ぼっちなので無理 • ChatGPTとGithub Copilotに助けてもらおう
Commitフェーズでの セキュリティ対策
Commit(CI) • SAST(Static Application Security Testing) • Unit Test •
Dependency Check: ライブラリのチェック • Image Scan Code Pipeline
SAST,Unit Testの自動化 • Semgrepと単体テストの実行を自動化 • GitHub Actionsを使ってコードをpush時+定期実行
None
None
Dependency Check • Trivyを使う • package.jsonやpom.xml等をスキャンして脆弱なライブラリを指摘して CVEと紐づけしてくれる
Image Scan • AWS Copilot CLIを使ってコンテナビルドを行う関係上, Image ScanはAWS側で行った • mainブランチにマージした時にCode
Pipelineのソースが更新され Image Scanとデプロイが進むようにした AWS Code Pipeline
None
脆弱性が見つかったらDocker Desktopのほうが見やすい
その他の部分 (あんまやれてない)
Acceptance • IaC化 • Config Management • DAST: OWASP ZAPを使う予定だったが取り入れられず。
AWS Copilot CLIが作ってくれた
PRODUCTION • Secrets Management: AWS SSM,Github Actions Secrets? • Safety
checks • Server Hardening • Security Smoke Test なにしたらいいかよくわかってない
OPERATIONS • Continuous Monitoring: AWS ConfigとかCloud Trailとか • Threat Inteligence:
piyokangoさんを見る • Penetration Test: 実施せず • Blameless Postmortems: 誰も攻めない自己分析は大事(組織作り?)
全体を通した感想など • いろいろな実装方法があるので親しみのあるもので環境作成したが, コストとか考えると最適解は難しい ◦ (AWS Copilot CLIの使い勝手がいいのでこれに合わせてしまった) • pre-commitは脆弱なコードをそもそもリポジトリに入れないのは素敵だが,可用性
が落ちるのでどこまでやるか要検討 • 脆弱性に気づけても直せるか,(直す気になるか)は別問題 • 生成AIしかり,ツールの出来が良くなってきているので時代に置いていかれないよ うにがんばりたい →体系的に学ぶだけでなく実践で学ぶ力が必用かも