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
CircleCIのSnyk Orbを使ったCI/CDのセキュリティスキャンへの組み込み
Search
Masahiko Funaki(舟木 将彦)
September 14, 2022
Technology
60
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CircleCIのSnyk Orbを使ったCI/CDのセキュリティスキャンへの組み込み
Masahiko Funaki(舟木 将彦)
September 14, 2022
More Decks by Masahiko Funaki(舟木 将彦)
See All by Masahiko Funaki(舟木 将彦)
202605-進化し続けるUIに追従.pdf
mfunaki
0
22
mablの要素選択を完全理解〜壊れないテストを作るための技術選択
mfunaki
0
46
知って得するmabl活用Tips〜「こんな時どうする?」実践機能ガイド
mfunaki
0
58
20260422-mablで変わるテスト自動化_品質_速さ_コストの三角形を崩す5つのアプローチ.pdf
mfunaki
0
84
手順(プロンプト)だけで テストを自動作成~テスト作成エージェントを使いこなすための 実践プロンプト術
mfunaki
0
150
「見た目」と「意味」をAIが判定 ~ビジュアルアサーションで変わる テストの守備範囲~
mfunaki
0
68
イントラネットの社内アプリからローカル開発環境まで〜mabl Linkで実現する閉域網アプリケーションのセキュアなテスト実行
mfunaki
0
47
フルスタックQAへの第一歩。Web UIとAPIテストを統合した品質保証戦略
mfunaki
0
110
mabl新機能解説:プロンプトによるテスト生成とローカル/クラウド実行のシームレスな統合
mfunaki
0
110
Other Decks in Technology
See All in Technology
On-behalf-of Token exchange with AgentCore Identity
hironobuiga
2
210
小さくはじめるSLI/SLO ~育てながら組織に定着させる実践知~ / Starting Small with SLI/SLOs: Building Adoption Through Continuous Growth
nari_ex
7
1.9k
新しいVibe Codingと”自走”について
watany
6
320
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
130
【NRUG vol.18】なぜ多くのオブザーバビリティ導入は失敗するのか
nrug_member
0
130
AmazonRoute 53ではじめてのドメイン取得!HTTPS化までの道のりを整理してみた
usanchuu
3
140
Claude Codeとのおしゃべりでセマンティックモデルの定義からダッシュボード作成まで完成させる
nic_sugiyama
0
110
人材育成分科会.pdf
_awache
4
250
フィジカル版Github Onshapeの紹介
shiba_8ro
0
240
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
120
現地で盛り上がった WWDC26 Keynote
zozotech
PRO
1
250
2026TECHFRESH畢業分享會 - Lightning Talk - 打造精準高效的 MCP 設計模式與測試實務
line_developers_tw
PRO
0
1k
Featured
See All Featured
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
300
Faster Mobile Websites
deanohume
310
31k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
430
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
How to Ace a Technical Interview
jacobian
281
24k
How to Think Like a Performance Engineer
csswizardry
28
2.6k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
Deep Space Network (abreviated)
tonyrice
0
170
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Transcript
1 舟木 将彦 (@mfunaki) Principal Developer Advocate / CircleCI CircleCI
の Snyk Orb を使った CI/CD へのセキュリティスキャンの 組み込み CircleCI + Snyk でセキュアなアプリケーション/サービスを実現する
2 舟木 将彦(@mfunaki) CircleCI合同会社 Principal Developer Advocate ビジネスを支えるソフトウェアが お客様やマーケットに合わせて 継続して進化していくために不可欠な
・CI(継続的インテグレーション) ・CD(継続的デリバリ/デプロイ) の意義や価値、進め方を 技術、ビジネス、経営の言葉で お届けしています。 2000~ ◦ AppleのSiriの前身となるDejima社にて 特許出願を含む製品開発 (車載、家電での音声対話操作) 2003~ ◦ データベースベンダー(Sybase)による買収に伴い 自然言語でのデータベース検索や モバイル環境での対話型検索の開発 2013~ ◦ ERPベンダー(SAP)による買収に伴い ERPのモバイル対応や、 自動車関連(電装パーツ、タイヤ、自動車、 再生可能エネルギー)のイノベーション促進 2018~ ◦ 自動車や小売り、製造、金融といった業界に 対して、 アイデア~コード~プロト~製品/サービス 間の時間差を最小限に 2020~ • アイデア~エンジニアによる実装 ~アプリやサービスの間を自動化で結び、 フィードバックループを高速に回すため、 CircleCI にて Developer Advocate に 自己紹介
CircleCIってどんな会社 • 世界最大規模のクラウドCI/CD(継続的インテグレーション/継続的デプロイ)サービス ◦ 22,000以上の組織の 100万以上の開発者が実行する 毎月7億以上のジョブを支えるサービス • ミッション: Manage
change So software teams can innovate faster (変化をマネージしよう、そうすれば ソフトウェアチームはより速くイノベーションできる ) • 2011年設立、サンフランシスコに本社 2021/05/11 にSeries Fで1億ドルを調達 (これまでに$315Mの投資、$1.7Bの企業価値) • 600+人の社員 (米国、日本、英国、オランダ、フランス+ リモートワーク)
4 Agenda DevOps とソフトウェア デリバリーの成熟度 自動化された10分で開発効率と質を両立 【デモ】セキュリティスキャンの自動化への組み込み 終わりに
5 DevOps とソフトウェア デリバリーの成熟度
6 デリバリー成熟度に関わる4つの主要な指標 4つの指標 US/Japanの CircleCIユーザー中央値 CircleCIが考える 目標値 1. ワークフロー実行時間 3.82分(US)
3.54分(Japan) 10分 (🙅10分以内) 2. スループット (ワークフロー実行回数) 1.67回/日(US) 1.00回/日(Japan) プルリクエストの数+ 自動実行数 3. 平均リカバリ所要時間 80.01分(US) 68.50分(Japan) 1時間以内 4. ワークフロー成功率 (master / main ブランチ) 77%(US) 75%(Japan) 90%以上
7 デリバリー成熟度を上げるためのポイント〜自動化 プラン コード ビルド テスト リリース デプ ロイ 運用
監視 継続的インテグレーション (CI) 継続的 デプロイ (CD) 自動化できない 非正常系は 自動化できない 自動化できる→継続的であるために自動化すべき 1. ワークフロー実行時間 (10分) 2. スループット 3. 平均リカバリ所要時間 - 変更をキャンセル - 変更で生じた問題を修正 4. ワークフロー成功率 (デフォルトブランチマージ時の の割合)
8 ビルド〜デプロイを自動化し、現況を見える化する 実行回数 成功確率 実行時間 クレジット消 費量 復旧時間
9 自動化された10分で開発効率と質を両立
10 縦に伸ばす(自動化実行環境のスペックを上げる) リソースクラスと消費クレジット Docker Executor クラス vCPUs RAM クレジット small
1 2GB 5クレジット/分 medium 2 4GB 10クレジット/分 medium+ 3 6GB 15クレジット/分 large 4 8GB 20クレジット/分 Freeプランでは30,000クレジット/月が無料で付与 (smallクラスなら6000分=100時間に相当) ※月20日換算で一日あたりのジョブ実行時間 5.0時間 https://circleci.com/docs/ja/using-docker#available-docker-resource-classes
11 横に広げる(並列化) 1 5 50 5 45 40 100 60
1 0 30 20 100 1 5 50 60 20 1 0 45 40 30 5 100 50 1 0 45 1 5 60 20 5 40 30 1並列 3並列 5並列 1’44” 1’14” 1’09” 1’14” 1’15” 6:20 64クレジット (¢3.84相当) 2’09” 2’09” 2’09” 74クレジット (¢4.44相当) 81クレジット(¢ 4.86相当) https://circleci.com/docs/ja/parallelism-faster-jobs#test-splitting-to-speed-up-pipelines
12 横に広げる(並列化) 1 5 50 5 45 40 100 60
1 0 30 20 100 1 5 50 60 20 1 0 45 40 30 5 100 50 1 0 45 1 5 60 20 5 40 30 1並列 3並列 5並列 1’44” 1’14” 1’09” 1’14” 1’15” 6:20 64クレジット (¢3.84相当) 2’09” 2’09” 2’09” 74クレジット (¢4.44相当) 81クレジット(¢ 4.86相当) https://circleci.com/docs/ja/parallelism-faster-jobs#test-splitting-to-speed-up-pipelines
13 10分の中で量(効率)+CircleCI Orbで質の向上をしっかり盛り込む
14 セキュリティスキャンの自動化への組み込み
15 【デモ1】 ソースコードの修正を起点としたスキャン
16 1. ベースとなるワークフロー この名前でイメージをビルド、プッシュ Node Orb, Docker Orbを使い、簡潔な定義+キャッシュ適用で高速化 以前使用したDockerレイヤーのイメージをキャッシュ、再利用し 高速化
package-lock.jsonファイルが未更新ならキャッシュしたライブラリを 使用 Dockerの - アカウントをチェック (ログインできなければエラー ) - Dockerfileをlintし (記述ミスがあればエラー ) - イメージをビルドし - Docker Hub(コンテナイメージリポジトリ )にPush テスト ビルド リリース
17
18 2. Slackによる結果通知を追加 Slack Orb を追加 CircleCIによる実行結果が - fail(失敗)なら basic_fail_1
テンプレートを使い - pass(成功)なら basic_success_1 テンプレートを使い メッセージを送信する メッセージ送信先は、コンテクスト slack-secrets の中で定義された 環境変数 SLACK_ACCESS_TOKEN, SLACK_DEFAULT_CHANNEL で指定
19
20 3. Snyk Orbを使ってイメージをスキャン Snyk Orbを追加 docker build でビルドしたイメージ ($IMAGE_NAME)をスキャンし
- 問題がなければ、引き続き Docker Hub に PUSH - 問題があれば、 Docker Hub に PUSH せず Slackで失敗メッセージを通知する Snykを使用する際に当たって必要な API Token は、 コンテクスト snyk-secrets の中で定義された 環境変数 SNYK_TOKEN で指定
21
22 【デモ2】 パイプラインのスケジュール実行によるスキャン
23 パイプラインのスケジュール実行 https://circleci.com/docs/ja/scheduled-pipelines
24 終わりに
25 • 単に「早く」「簡単に」開発するだけでなく、 バグを修正する、さまざまな機能を盛り込むという「量」と 利用者が安心して使えるという「質」の両立が重要 • ビルド、テスト、リリース(CI)、デプロイ(CD)は自動化+高速化可能 ◦ 適切なマシンスペックの選択 +
並列化の活用 • バグが生まれるのはコード開発時 →問題があるのであれば、できるだけ早く(10分以内)気づけば、 コードの記憶が鮮明なうちに修正に取り掛かれ、より効率的 • 自動化+高速化で10分以下にすることがゴールではなく、 「質」に関わる取り組みを CircleCI Orb を使い、自動化に組み込む 今日お伝えしたかったこと
Thank you. 26
27 ソースコードを GitHubなどの ソースコード 管理システムで管理 日時や週次で テストやビルドを 自動実行する コードが追加・修正 されるたび、
テストやビルドを 自動実行する ソースコードを 共有フォルダ等で 取りまとめる Linux/Windows/iOS /Android/GPU環境 向けビルドを(クラウド で)一元管理 テスト時間を短縮す ることで、作った記憶 がホットなうちに修正 可能に 必要に応じた スペックのビルド環境を 選択可能(縦に伸ばす) 直列実行だけでなく、 並列実行が簡単に 設定可能(横に広げる) レベル1 コード 共有 + 手作業の 自動化 レベル2 コード 履歴共有 + 手作業の 自動化 (巻戻可) レベル3 スペックや 多重度が 変化する 自動化 (高速化= 速く気づき 速く直す) ソフトウェア開発の現況 〜 今の立ち位置を知り、直近のゴールを定める 協力会社からは全体が見えない (見せない)+類似製品間で ほとんど同じコードを手動で仕向け CI/CDが自動化され、常に動くモノが ある状態だが伸びしろが見えない (語学学習で言う「中級者にはなっ たがもっと上達する気がしない」 ) 速さで Qualityと Quantity と 進化を両 立
28