開発チームが最も必要としないのは、さらなるオーバーヘッドです。そのため、「セキュアソフトウェア開発ライフサイクル」と聞くと、まず頭に浮かぶのは、チェックリストの増加、ブロッカーの増加、チケットの増加かもしれません。しかし、実情は、セキュリティ上の問題のほとんどは、手遅れになってから問題が発見されることに起因します。スプリントで修正できたはずのバグが、突然ホットフィックス、書き換え、または本番環境での緊急パッチを必要とします。
セキュアSDLC(SSDLC)は、その状況を逆転させます。それは、初日からセキュリティを念頭に置いてソフトウェアを構築することです。ボトルネックとしてではなく、計画、コーディング、テスト、デプロイの方法の一部としてです。これにより、予期せぬ事態を減らし、より迅速にリリースし、同時にコンプライアンス、顧客、およびセキュリティに関する要求を満たすことができます。
プレースホルダー画像: 画像説明: SDLCとSSDLCのタイムライン比較。SSDLCにおける開発の各段階(計画、コーディング、テスト、デプロイ)でのセキュリティチェックを示す。
古い方法 vs. 安全な方法:SSDLCが本当に意味するもの
従来のSDLCでは、セキュリティはコードが書かれ、アプリケーションがデプロイされ、ユーザーがすでにAPIを操作している後、つまり最後に来ます。その後、誰かがスキャンを実行し、多数の問題が見つかり、全体が停止してしまいます。セキュアSDLCでは、セキュリティは最初から統合されます。計画に組み込まれ、コードレビュー中にチェックされ、CIでテストされ、リリース前に検証されます。事後にセキュリティを後付けするのではなく、問題が発生する前に防ぎます。ドラマが少なく、開発速度が向上します。
その効果:SSDLCが単なる作業増加ではない理由
リスクを削減(そしてニュースになるような企業になることを避ける)
情報漏洩のヘッドラインに載る企業は?彼らが皆無知なわけではありません。ほとんどの企業はスキャナーを持っていました。彼らに欠けていたのはタイミングでした。SSDLCは、ハードコードされたシークレット、安全でない入力、過剰な権限を持つロールなどの脆弱性が本番環境に到達する前に捕捉します。ゼロデイの緊急対応が減り、PRの悪夢も減ります。
コスト削減(早期の修正は安価ですが、本番環境での修正は多大なコストと苦痛を伴います)
開発段階でバグを修正するには30分かかるかもしれません。それを本番環境で修正する場合はどうでしょうか?それはインシデント対応、ホットフィックス、回帰テスト、場合によってはセキュリティ監査を伴います。SSDLCは、これらの緊急対応を削減します。侵害をデバッグするよりも、PRをスキャンする方が安価です。
信頼を構築する(顧客は実際にセキュアなソフトウェアを求めています。驚きですよね?)
企業顧客は現在、セキュアコーディングの実践と、チームが安易に本番環境へコードをデプロイしないことの証明を求めています。SSDLCは、構造、監査証跡、そして調達部門から「XSSをどのように防ぎますか?」と尋ねられた際に回答を提供します。これにより、気まずい沈黙は不要になります。
コンプライアンス達成(書類作業を減らし、コーディングを増やす。Aikidoが自動化を支援します!)
コンプライアンスは今後も不可欠です。SOC 2、ISO 27001、GDPRのいずれであっても、監査人はワークフローに組み込まれたコントロールを求めています。SSDLCは証拠収集の自動化を支援します。特にAikidoのようなツールが、SASTからシークレット、IaCの誤設定まで、パイプライン全体を追跡する場合に有効です。
実際に機能するセキュアSDLCの主要なアイデア
セキュリティ・バイ・デザイン(後付けではなく、最初の行から安全性を考慮する)
すべての機能決定にはセキュリティ上の影響があります。トークンの保存方法からユーザーのパスワードリセット方法まで。SSDLCとは、最初のコード行が書かれる前に「ここで何が問題になる可能性があるか?」と問うことを意味します。
シフトレフト(問題が災害に発展する前に発見する)
コード作成中にスキャンを実行します。PRでSASTを実行し、インフラがデプロイされる前に設定ミスを検出します。早期に発見するほど、修正コストが低く、容易になります。
多層防御(レイヤーが多いほどハッカーにとって厄介)
1つの制御だけでは不十分です。SSDLCは、入力検証、アクセス制御、ネットワークセグメンテーション、ランタイムアラートなど、複数の層を推奨しています。もし何かが失敗しても、別の層がカバーします。
最小権限 (全員に王国の鍵を与えない)
スタック全体でのアクセスを制限します。開発環境に本番環境の完全な権限を与えないでください。サービスが必要な場合を除き、相互に通信させないでください。権限が少ないほど、攻撃者が横方向に移動する手段も少なくなります。
安全なデフォルト設定(簡単なパスを安全なパスにする)
開発者に「動作すること」と「安全であること」のどちらかを選択させるべきではありません。デフォルトで安全なテンプレート、CIパイプライン、および設定を構築してください。最も抵抗の少ない道が正しい道であれば、人々はそれに従います。
セキュアな開発はブロッカーではありません。それは、現代のチームが常に後ろを気にすることなく迅速に動く方法です。SSDLCがワークフローに組み込まれると、バックグラウンドで静かに機能します。
次に、これらすべてに実際に責任を負うのは誰でしょうか?ヒント:AppSecチームだけではありません。
.png)