あらゆる企業がDXに取り組む現在、データを活用して新たな価値をユーザーに提供していくケースが増えています。その手法は主にアプリケーションやWebサービスですが、リリースを急ぐあまりセキュリティがおろそかになってしまい、大きなインシデントが発生してしまうこともあります。この連載では、開発にセキュリティを組み込むための考え方や手法について、GitLabのブログを再構成してお届けしています。今回は、開発現場が考えるべきセキュリティについて紹介します。
ソフトウェアセキュリティが直面している4つの問題
2020年、米国で報告されたデータ侵害は約4000件で、370億以上の記録が流出しました。そして、スタンフォード大学のジェフ・
多くの企業や組織は、正しいプロセスを備え、専門のサイバーチームを編成し、最新かつ最高のセキュリティツールを採用し、統合しています。しかし、依然としてコードの脆弱性の犠牲になっています。では、今日のソフトウェアセキュリティが直面している4つの最大の問題を紹介します。
1. あいまいな要件
現在、既存のセキュリティフレームワークには、セキュリティツールの適用に関する具体的な要件やプロセスの標準がなく、概念的なガイドラインとなっています。このような緩やかなポリシーの問題点は、ソフトウェアセキュリティを主観的にしてしまうことです。
この問題を解決するには、セキュリティを向上させる段階的な手順にフォーカスした具合的な要件を明らかにすることが必要です。安全なソフトウェア開発への道のりは長いですが、どこからかでも始めた企業だけが進歩できます。
2. 障害は関係ない
現在、ほとんどの企業がセキュリティチームの規模や保有する認証がセキュリティのすべてと考えています。しかし、このアプローチには欠陥があります。セキュリティの核心は、自社にある脆弱性と、その脆弱性がもたらす組織へのリスクにあります。多くの企業が障害に焦点を当てていますが、責任の押し付け合いになってしまい、チーム間の軋轢や疎外感を助長するだけです。
そのようなことにならないために、セキュリティチームは、脆弱性の範囲を評価し、脆弱性がもたらすリスクを管理し、問題を認識するために必要なツールを構成することで、脆弱性に焦点を当てるべきです。開発者は、脆弱性につながった問題の解決に注力すべきであり、リーダーは、セキュリティにおける役割に対して両方のグループに同等の責任を負わせる必要があります。
3. マネジメントの不整合
ほとんどの組織では、取り組みの整合性が著しく損なわれています。セキュリティの目標は達成されず、既存の脆弱性は放置され、最終的には従業員全体が、ソフトウェアセキュリティとの終わりのない苦しい戦いに苛立ちを感じるようになります。
この問題は、別々の組織に別々の目標が与えられると発生します。例えば、製品部門はリリース日に向けて仕事をし、セキュリティ部門は新しいリリースの安全性を確保しようとします。ここで問題なのは、個人は自分の任務が完了したかどうかで自分の成功を判断することです。エグゼクティブ、ディレクター、マネージャーは、個々の業種とチームに同じセキュリティ目標を優先させる必要があります。これらの新しい目標が設定されると、組織全体が同じガイドラインに基づいて運営されるため、リーダーは個々のチームを超えて成功と進歩を生むことができます。
4. より良いものを作る
今日のソフトウェアセキュリティが直面している最も重要な問題は、開発プロセスにおける個々のメンバーのソフトウェアセキュリティに対する取り組み方です。この業界では、脆弱性をチェックし、修正作業を自動化し、面倒な監査のボトルネックを迅速化するために、長い間ツールに頼ってきました。しかし、脆弱性への対処をツールだけに頼るべきではありません。
セキュリティツールは自動車保険と同じだと考えてください。すべてのドライバーは保険に加入していますが、それでも慎重に運転しています。自動車保険は安全性を保証するものではなく、回復のための手段だからです。より良いセキュリティ対策に取り組むことは、会社の利益だけでなく、個々の従業員の利益にもつながります。そしてそれは、開発者の昇進や昇給にフィードバックされるのです。
ソフトウェアパイプラインを安全にする「GitOps」
現在、ほとんどの企業がリリーススピードを上げるためにGitOpsを採用しています。しかし、GitOpsは開発者のパイプラインのセキュリティを大幅に向上させることもできます。GitOpsは、バージョン管理、コラボレーション、コンプライアンス、CI/
GitOpsのワークフローは、次の3つの主要なコンポーネントで構成されており、チームがアプリケーション開発ですでに使用しているプロセスを通じてインフラストラクチャを管理することを支援します。
- IaC
- GitOpsは、Gitリポジトリを活用して、インフラストラクチャ定義のための信頼できる唯一の情報源を作成します。Infrastructure as code
(IaC) とは、すべてのインフラストラクチャの設定をコードとしてGitに保存する方法です。 - MR
- GitOpsは、あらゆるインフラストラクチャの更新のための変更に、マージ・
リクエスト (MR) を活用します。MRによって、チームはレビューやコメントを通じてコラボレーションを行うことができます。MRはまた、正式な承認が行われる場所でもあります。 - CI/
CD - GitOpsは、継続的インテグレーションと継続的デリバリー
(CI/ CD) により、インフラストラクチャの更新を自動化します。この方法では、新しいコードがマージされると、CI/ CDパイプラインが環境を通じて変更を実行します。手動での変更やエラーなど、構成のドリフトはすべてGitOpsの自動化によって上書きされ、環境はGitで定義された望ましい状態に収束します。
GitOpsツールは、すべてをコードとして扱えるユニークな機能により、セキュリティに直接的な影響を与えます。例えば、すべての設定とセキュリティ・
このように、GitOpsは開発チームに信頼できる唯一の情報源を効果的に提供します。正しく実装すれば、GitOpsはセキュリティをさらにシフトレフトし、脆弱性やバグ、その他あらゆる種類の一般的なコード品質の問題をプロセスの早い段階でキャッチする効果的な戦略となるのです。さらに、パイプラインに変更を加えるスピードを向上させるほか、企業が影響を受けたコード行をリポジトリ内で迅速に認識できるようになります。GitOpsを採用することは、ビジネスにとっても良い影響を与えるでしょう。