セキュリティバイデザイン(DevSecOps)とは?シフトレフトと検査ツール4分類

公開: 更新: カテゴリ: セキュリティ系

30秒で結論

セキュリティバイデザインとは(全体像)

セキュリティバイデザイン(Security by Design)とは、ものを作る最初の段階から、セキュリティを設計に組み込んでおくという考え方。家にたとえれば、建ててから防犯設備を後付けするのではなく、間取りを決める時点で鍵や窓の位置まで考えておくイメージ。

これと対になるのがシフトレフト(Shift Left)という言葉。開発の工程を「設計→製造→テスト」と左から右に並べたとき、問題探しをできるだけ左(早い段階)に寄せるという意味。

なぜ早いほど良いかというと、バグや弱点は、見つかるのが遅いほど直すのに手間とお金がかかるから。完成間近で見つかれば作り直しになるが、設計段階なら図面を直すだけで済む。だから「早く見つける=安く直せる」。

そして、この考え方を開発と運用の流れ全体にセキュリティを溶け込ませる形にしたのがDevSecOps。開発(Dev)・セキュリティ(Sec)・運用(Ops)を一つにつなげた言葉で、セキュリティを専任の部署だけに任せず、開発の流れの中で自動的にチェックするのが特徴。


詳しく:シフトレフトと検査ツール4分類

ここが心臓部。まず考え方、次に試験本命の検査ツール4分類を表で押さえる。

後付け vs セキュリティバイデザイン

昔のやり方セキュリティバイデザイン
守りを考える時期完成後に後付け設計の最初から組み込む
問題を探す工程テスト段階(右)設計段階へ前倒し(左=シフトレフト)
直すコスト遅く見つかり大きい早く見つかり小さい

検査ツールは、いつ・どうやって調べるかで4つに分かれる。ここが一番出る。

検査ツール4分類(SAST・DAST・IAST・SCA)

種類調べ方かみくだくと
SAST静的:動かさずソースコードを読む設計図を机の上で読んで点検
DAST動的:実際に動かして外から攻撃を試す完成した建物に侵入を試す
IAST動かしながら内部のコードも分析中に検査員を置いて動作を見る
SCA使っているOSS部品の弱点を調べる取り寄せた部品の安全性を確認

いちばん混同しやすいのがSASTとDASTSASTは「静(Static)」でソースコードという中身を直接読む検査DASTは「動(Dynamic)」で実際に動かして外側から弱点を探す検査。読むか動かすか、で区別すると間違えない。

SCAは、自分で書いたコードではなく、外から取り入れたOSS(無料で公開された部品)に弱点がないかを調べるもの(SnykやDependabotなど)。最近のソフトは多くの部品を借りて作るので、その部品の安全確認が重要になっている。

なお、設計段階で「どんな攻撃がありえるか」を洗い出す手法にSTRIDEという脅威モデルがあり、これも名前が問われる。

わかりやすく言い換えると

要するに、セキュリティバイデザインは「作ってから守る」ではなく「作りながら守る」への発想転換

そしてシフトレフトは「早期発見・早期治療」と同じ。病気も、早く気づくほど軽くて安く治る。ソフトの弱点も同じで、早い工程で見つけるほど直すのがラク。

検査ツールは、つまり「読む(SAST)・動かす(DAST)・中で見る(IAST)・部品を確かめる(SCA)」の4つの目線で守る、と覚えるとスッキリする。


試験のツボ

🔴 一番出る:SASTとDASTの対比

①SAST=静的・ソースコードを読む(動かさない)

②DAST=動的・実際に動かして外から試す

🔴 次に出る:検査ツール4分類

①SAST=コードを読む

②DAST=動かして試す

③IAST=動かしながら内部も分析

④SCA=OSS部品の弱点を調べる

🟡 押さえると安定:考え方の用語

シフトレフト=問題探しを早い工程に前倒し(早く見つけるほど安く直せる)。DevSecOps=セキュリティを開発の流れに組み込む(専任部署だけに任せない)。脅威の洗い出し手法がSTRIDE。


よくある間違い

「SASTもDASTも同じ検査」→ ✗  SASTは動かさずコードを読む静的検査、DASTは動かして試す動的検査で別もの。

「DevSecOpsはセキュリティ専任の担当者がやるもの」→ ✗  開発の流れにセキュリティを組み込むのがねらい。専任部署だけに任せない。

「セキュリティは完成後に後付けすればよい」→ ✗  早い工程で見つけるほど安く直せるので、設計段階から組み込む(シフトレフト)。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(シフトレフトの考え方)

📝 オリジナル問題 1 シフトレフト

セキュリティバイデザインとシフトレフトに関する次の記述のうち、正しいものはどれか。

  1. シフトレフトとは、セキュリティの確認を完成後のテスト段階にできるだけ後回しにする考え方とされる
  2. シフトレフトは、問題をできるだけ早い工程のうちに見つけ、直す手間とコストを小さくおさえる考え方
  3. セキュリティバイデザインは、完成したソフトに後からセキュリティ機能を足していくやり方を指している
  4. シフトレフトとは、開発の担当を右側の運用チームへ順番にずらして引き継いでいくことを意味している
ピーエムロボ
ピーエムロボ 解答・解説

解答は 2 である。

シフトレフトは、問題探しを開発の早い工程(左側)に前倒しする考え方だ。早く見つけるほど、直す手間もコストも小さくなる。本機はこの早期発見を推奨する。

選択肢1は「後回し」が逆で誤り、選択肢3は「完成後に後付け」がセキュリティバイデザインの逆、選択肢4は担当をずらす意味ではない点で誤りである。

選択肢判定理由
1後回しでなく早い工程へ前倒しする
2早く見つけて手間とコストを下げる考え方で正しい
3後付けは逆。最初から組み込むのがSbD
4担当を順にずらす意味ではない

オリジナル問題2(SASTとDAST)

📝 オリジナル問題 2 SASTとDAST

検査ツールのSASTとDASTに関する次の記述のうち、正しいものはどれか。

  1. SASTもDASTもソフトを実際に動かして外側から攻撃を試す動的な検査で、両者に違いはないとされる
  2. SASTは実際に動かして試す動的検査、DASTはソースコードを読む静的検査、という対応になっている
  3. SASTはソースコードを動かさずに読む静的検査、DASTは実際に動かして試す動的検査という対応になる
  4. SASTもDASTもソースコードを読むだけの静的な検査で、ソフトを動かして調べることはしないとされる
ピーエムロボ
ピーエムロボ 解答・解説

解答は 3 だ。

SASTは静的で、ソフトを動かさずソースコードという中身を読んで弱点を探す。DASTは動的で、実際に動かして外側から攻撃を試す。「SはStaticで静、DはDynamicで動」と結びつけよ、と本機は提案する。

選択肢1は両者を同じとし、選択肢2は静と動の説明が逆、選択肢4は両方を静的としている点で誤りである。

選択肢判定理由
1SASTとDASTは静的・動的で別もの
2SASTとDASTの説明が逆になっている
3SAST静的・DAST動的で正しい
4DASTは動かして試す動的検査

オリジナル問題3(DevSecOpsとSCA)

📝 オリジナル問題 3 DevSecOpsとツール

DevSecOpsと検査ツールに関する次の記述のうち、正しいものはどれか。

  1. DevSecOpsはセキュリティ専任の部署だけが行う活動で、開発や運用の流れとは切り離されているとされる
  2. SCAとは、ソースコードの文字数を数えて開発の進み具合だけを管理する種類のツールのことを指している
  3. DevSecOpsはソフトの完成後にだけセキュリティを確認する考え方で、開発の途中では何も検査しないとされる
  4. SCAは、ソフトが使っているOSS(外から借りた公開部品)に弱点がないかを調べる検査の種類のことである
ピーエムロボ
ピーエムロボ 解答・解説

解答は 4 だ。

SCAは、ソフトが借りて使っているOSS(無料で公開された部品)に弱点がないかを調べる検査だ。SnykやDependabotがその例である。

選択肢1は「専任部署だけ」が誤りで、DevSecOpsは開発の流れにセキュリティを組み込む。選択肢2はSCAの説明として誤り、選択肢3は「完成後だけ」が誤りで途中の工程から検査する。

選択肢判定理由
1専任部署だけでなく開発の流れに組み込む
2文字数を数えるツールではない
3完成後だけでなく早い工程から検査する
4OSS部品の弱点を調べる検査で正しい

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る