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
0
10
DevSecOps CI/CDツール導入のススメ
SANS 540でCI/CDの概念やCI/CDの中に組み込めそうなツールについて学んだので実際に使ってみました。
sigma
December 15, 2023
Tweet
Share
More Decks by sigma
See All by sigma
生成AIの世界で君たちはどう生きるか
ryosukedtomita
0
21
Other Decks in Programming
See All in Programming
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
49
16k
AppRouter Panel Talk
yosuke_furukawa
PRO
1
520
ソースコードを美しくたもつために ~コードレビューの認知限界を突破し、年間400リリースを達成する~
kotauchisunsun
1
730
TypeScriptでもLLMアプリケーション開発 / LLM Application In Typescript
rkaga
5
1.3k
スタックトレース始めてみた
kuro_kurorrr
4
1.1k
Prepare for Jakarta EE 11 - Performance and Developer Productivity
ivargrimstad
0
240
TSKaigi 2024 - 新サービス Progate Path の演習で TypeScript を採用して見えた教材観点からの利点と課題
makotoshimazu
1
220
Go製Webアプリケーションのエラーとの向き合い方大全、あるいはやっぱりスタックトレース欲しいやん / Kyoto.go #50
utgwkk
6
2k
GitHub Actionsの痒いところを埋めるサードパーティーランナー
dora1998
2
250
How to improve maintainability and readability of your automated tests? ( #scrumniigata )
teyamagu
PRO
1
130
CREってこういうこと? 体験入社 - 提案資料 - / what-is-cre-trial-employment
shinden
1
620
Introducing Kotlin Multiplatform in an existing mobile app - Workshop Edition | AndroidMakers Paris
prof18
0
180
Featured
See All Featured
Done Done
chrislema
178
15k
A Tale of Four Properties
chriscoyier
153
22k
The Mythical Team-Month
searls
217
42k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
14
8.4k
What’s in a name? Adding method to the madness
productmarketing
PRO
17
2.7k
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.7k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
221
21k
Designing the Hi-DPI Web
ddemaree
276
33k
Documentation Writing (for coders)
carmenintech
60
4k
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.7k
[RailsConf 2023] Rails as a piece of cake
palkan
28
4.1k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
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しかり,ツールの出来が良くなってきているので時代に置いていかれないよ うにがんばりたい →体系的に学ぶだけでなく実践で学ぶ力が必用かも