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
70
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(舟木 将彦)
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
170
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
470
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
1
150
202605-進化し続けるUIに追従.pdf
mfunaki
0
52
mablの要素選択を完全理解〜壊れないテストを作るための技術選択
mfunaki
0
75
知って得するmabl活用Tips〜「こんな時どうする?」実践機能ガイド
mfunaki
0
83
20260422-mablで変わるテスト自動化_品質_速さ_コストの三角形を崩す5つのアプローチ.pdf
mfunaki
0
130
手順(プロンプト)だけで テストを自動作成~テスト作成エージェントを使いこなすための 実践プロンプト術
mfunaki
0
200
「見た目」と「意味」をAIが判定 ~ビジュアルアサーションで変わる テストの守備範囲~
mfunaki
0
100
Other Decks in Technology
See All in Technology
AI駆動開発はどこまで来たのか? ファインディの最新実態調査で読み解く現在地 Devin Con Tokyo
akiratom
1
720
VLMで2.3万枚のPyCon JP写真を検索!
terapyon
1
480
LLM Internals: 언어 모델의 계보와 알고리즘 진화 (2023~2026)
inureyes
PRO
1
930
[potatotips #96] Give Your AI Agent the Flutter Playbook
korodroid
0
160
わたしが知り合いゼロの勉強会に 行けるようになるまで
r5ni4
2
730
内製AIチャットボット開発で学んだ Datadog Agent Observability活用術
mkdev10
0
130
AIに持続⼒を与える 判断の⻑期記憶設計
eiei114
1
700
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
780
暗号化?某ファイルストレージはどうなるの!? 3rd Partyとうまく付き合う秘密度ラベル設計
kasada
0
190
OpenID for Verifiable Credentials 実装から見えた相互運用性確保までの道のり(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
220
What's new in Go 1.27?
ciarana
0
440
Data Hubグループ 紹介資料
sansan33
PRO
0
3.2k
Featured
See All Featured
Crafting Experiences
bethany
1
260
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
290
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
710
How to train your dragon (web standard)
notwaldorf
97
6.8k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
740
Abbi's Birthday
coloredviolet
3
9.4k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
250
Scaling GitHub
holman
464
140k
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