sg sg-security-management sg-security-measures it_security_operations threat_vulnerability
まず結論
- シフトレフトとは、開発工程の後半で行っていたテストやセキュリティ確認を、できるだけ早い段階に移して行う考え方です。
- SG試験では、「最後にまとめて確認する」のではなく「早い段階で問題を見つける」考え方として判断します。
直感的な説明
シフトレフトは、問題を後で見つけるのではなく、早めに見つけるための考え方です。
たとえば、製品づくりにたとえると分かりやすいです。
完成品になってから不具合が見つかると、分解して直したり、設計からやり直したりする必要があります。
一方で、設計段階や部品を作っている段階で問題に気づけば、修正は比較的簡単です。
ソフトウェアでも同じです。
リリース直前に脆弱性が見つかると、修正の影響範囲が大きくなり、リリース延期につながることがあります。
そのため、開発の早い段階で次のような確認を行います。
- セキュリティ要件を設計に入れる
- セキュアコーディングを意識する
- ソースコードレビューを行う
- SASTを自動実行する
- 依存ライブラリの脆弱性を確認する
つまり、シフトレフトは「問題を早く見つけて、早く直す」ための考え方です。
定義・仕組み
シフトレフトは、開発工程の後半に偏りがちなテストやセキュリティ確認を、工程の前半へ移す考え方です。
「左」という言葉は、開発工程を左から右へ進む流れとして表したときの左側、つまり早い段階を意味します。
一般的な流れは、次のようにイメージできます。
- 要件定義
- 設計
- 実装
- テスト
- リリース
- 運用
従来は、セキュリティ確認がテストやリリース直前に集中しがちでした。
シフトレフトでは、要件定義、設計、実装の段階からセキュリティを確認します。
たとえば、次のような取り組みがあります。
- 要件定義でセキュリティ要件を明確にする
- 設計段階で認証・認可・ログ設計を確認する
- 実装段階でセキュアコーディングを行う
- コード変更時にSASTを実行する
- CI/CDに自動テストや脆弱性チェックを組み込む
IPAでは、安全な実装や脆弱性を作り込まない考え方として、セキュア・プログラミング講座を公開しています。開発の早い段階で安全性を考える資料として参考になります。
シフトレフトは、特定のツール名ではありません。
SAST、ソースコードレビュー、セキュアコーディング、CI/CDの自動検査などを使いながら、早い段階で品質やセキュリティを確認する考え方です。
どんな場面で使う?
シフトレフトは、開発中に問題を早く見つけたい場面で使われます。
たとえば、次のような場面です。
- リリース直前の手戻りを減らしたい
- 開発中に脆弱性を早く見つけたい
- コード変更時に自動で検査したい
- セキュリティ担当だけでなく開発者も安全性を意識したい
- DevSecOpsの考え方を取り入れたい
特に、短いサイクルで頻繁にリリースする開発では、最後にまとめて検査する方法では追いつかないことがあります。
そのため、コードを書いた時点、レビュー時点、CI/CDでの自動実行時点など、早い段階で問題を見つけることが重要になります。
ただし、シフトレフトは、後半のテストや運用中の確認を不要にする考え方ではありません。
早い段階で見つけられる問題は早く見つける一方で、実行中のアプリの挙動や運用中のログ監視などは、後工程でも確認が必要です。
SG試験では、早い段階で確認することで、手戻りや脆弱性の作り込みを減らす考え方として整理します。
よくある誤解・混同
シフトレフトは、DevSecOps、CI/CD、SAST、セキュアコーディングと混同しやすいです。
| 混同しやすい用語 | 判断ポイント |
|---|---|
| シフトレフト | テストやセキュリティ確認を開発の早い段階へ移す考え方 |
| DevSecOps | 開発・運用の流れにセキュリティを組み込む考え方 |
| CI/CD | ビルド、テスト、リリースなどを自動化する仕組み |
| SAST | ソースコードを実行せず、ツールで危険な実装を検出する手法 |
| セキュアコーディング | 開発時に脆弱性を作り込まない安全な実装の考え方 |
SG試験では、次のような表現に注意します。
-
「開発工程の早い段階で確認する」
→ シフトレフトを疑います。 -
「リリース直前ではなく、設計や実装段階で問題を見つける」
→ シフトレフトに近い説明です。 -
「開発と運用にセキュリティを組み込む」
→ DevSecOpsです。 -
「ビルドやテストを自動化する」
→ CI/CDです。 -
「ソースコードを実行せずに解析する」
→ SASTです。
よくあるひっかけは、シフトレフトをSASTそのものだと思うことです。
SASTは、シフトレフトを実現するために使われる手法の一つです。
しかし、シフトレフトはSASTだけを指す言葉ではありません。
設計段階でセキュリティ要件を確認すること、コードレビューを早めに行うこと、CI/CDで自動検査を行うことなども、シフトレフトの考え方に含まれます。
また、シフトレフトは「左に寄せる」、つまり開発工程の早い段階へ確認を移す考え方です。
このイメージを持っておくと、選択肢を切りやすくなります。
まとめ(試験直前用)
- シフトレフトは、テストやセキュリティ確認を開発の早い段階へ移す考え方です。
- 目的は、手戻りを減らし、脆弱性の作り込みを早く見つけることです。
- SASTやソースコードレビューは、シフトレフトを実現する手段の一つです。
- DevSecOpsは、開発・運用の流れにセキュリティを組み込む考え方です。
- SG試験では、早い段階で確認するという表現が出てきたらシフトレフトを疑います。
確認問題
シフトレフトの説明として、最も適切なものはどれか。
ア. 開発工程の後半で行いがちなテストやセキュリティ確認を、設計や実装などの早い段階に移して行う考え方である。
イ. 実行中のWebアプリケーションに外部からアクセスし、応答や挙動を確認して脆弱性を検査する手法である。
ウ. ビルド、テスト、リリース準備などを自動化し、継続的に品質を確認する仕組みである。
エ. 社内ネットワークへ接続する端末の状態を確認し、条件を満たす端末だけ接続を許可する仕組みである。
回答と解説を表示
正解は **ア** です。 シフトレフトは、テストやセキュリティ確認を開発工程の早い段階へ移し、問題を早期に発見して手戻りを減らす考え方です。 イはDAST、ウはCI/CD、エは検疫ネットワークに近い説明です。🔗 関連記事
- アクセス制御モデルとは?RBAC・ABAC・DAC・MACの違いを整理【SG試験】
- 入退室管理とは?物理アクセス制御の基本【SG試験】
- アクセス管理とは?特権IDとneed-to-knowで権限を適切に制御【SG試験】
- アクセス権限管理とは?付与・変更・削除の流れを整理【SG試験】
- 管理者権限とは?特権的アクセス権との違いを整理【SG試験】