システム開発のフェーズごとに必要となるセキュリティ対策
デジタル改革や生成AIの活用など、多くの企業で社内外向けのアプリケーション、OS、ミドルウェアなどにより構成されるシステムの開発が活発になっています。革新的なシステムは業務効率の向上や、新たなビジネス機会の創出につながることを期待できます。
そういった重要な役割を担うからこそ、システムのセキュリティ確保は最重要項目といえます。なぜなら、個人情報の流出、外部からの攻撃など、さまざまな脅威にさらされるリスクがあるためです。システムのセキュリティ対策は、どのように行うべきでしょうか。システム開発のフェーズごとに必要なセキュリティ対策を解説します。
1. 設計段階でセキュリティ対策を施す重要性
システム開発では、プロジェクト開始時にセキュリティ対策を施せる体制を整えることが大切です。あとの段階で脆弱性が明らかになると、前段階へさかのぼって原因を解消しなくてはなりません。しかし、設計段階で脆弱性について検討しておけば、手戻りがなくなり、時間やコストなどを削減できるのです。設計段階におけるセキュリティ対策の重要性について見ていきましょう。
1-1. 初期段階での問題解決のコスト効率
設計などの初期段階でセキュリティ対策を導入し、早い段階で脆弱性を検知・解消できるようになると、コストを大きく削減できるようになります。システムに限らず、製品の開発サイクルが進行すると、段階を経るにつれて問題を解決するためのコストは大きく増大します。
独立行政法人情報処理推進機構(IPA)の『セキュリティ・バイ・デザイン導入指南書』では、運用段階からセキュリティ対策を行うと設計段階で導入したケースと比較すると、コストに100倍もの差が生じるとしています。そのためIPAでは「製品の企画や設計のフェーズからセキュリティ対策を組みこむことで、サイバーセキュリティを確保しておく考え方」である、セキュリティ・バイ・デザインの導入を推進しています。
Webアプリケーションの課題解決に取り組むオープンコミュニティであるOWASPでは、ソフトウェア開発・運用の初期段階から、その後の様々な場面においてセキュリティ対策を取り込むDevSecOpsを提唱しています。DevSecOpsは、継続的な開発・運用の取り組みにセキュリティを組み込むという考えです。
Webアプリケーションの課題解決に取り組むオープンコミュニティであるOWASPでは、システム開発・運用の初期段階から、その後の様々な場面においてセキュリティ対策を取り込むDevSecOpsを提唱しています。DevSecOpsは、継続的な開発・運用の取り組みにセキュリティを組み込むという考えです。
1-2. 設計前工程で発生する脆弱性を作りこむ要因例
それでは、システムの設計前工程で生じる、脆弱性の要因を見ていきましょう。
セキュリティ要件の認識が最初に考えられる重要な点です。設計や開発に携わるスタッフがセキュリティ要件を正しく理解していないと、適切なセキュリティ対策が実施されないことがあり、このために脆弱性が生じる可能性があります。また、セキュリティ要件が十分に定義されていない場合、それが後の段階で脆弱性を生み出す原因となることもあります。適切なセキュリティ要件の定義は、プロジェクトのさまざまな段階で脆弱性を防ぐために不可欠です。
設計時のセキュリティ要件にミスがあると、それが実装されることで脆弱性につながることがあります。また、セキュリティ設計にミスがなくても、セキュリティ要件との齟齬が生じることで、適切に実装できずに脆弱性を作り込んでしまう場合もあります。さらに、コーディングのミスやコーディング規約違反など、脆弱性を作り込む要因は複数存在しますので、これらにも配慮しておく必要があります。
1-3. リスクの早期識別
リスクの早期識別は、開発プロセス全体を通じてセキュリティ対策の効果を高めるために重要です。設計段階で潜在的な脆弱性を特定して適切な対策を講じることで、開発の手戻りを防ぎ、コストと時間の削減につながります。また、実装段階でのセキュリティ問題を未然に防ぐことも可能になります。
最終的にリスクの早期識別とその対応は、リリースするシステムの信頼性向上に大きく貢献するでしょう。セキュリティの問題が少ないシステムは、社内外のユーザーからの信頼獲得につながります。システム開発において、リスクの早期識別は、セキュアな製品を効率的に開発するための重要な取り組みといえるでしょう。
1-4. コンプライアンスとセキュリティ基準の遵守
システム開発において、コンプライアンスとセキュリティ基準の遵守は欠かすことのできないものです。対象の業務・利用目的に応じて、個人情報保護法などの法規制、PCI DSS(クレジットカードの情報セキュリティ基準)やISMS(ISO 27001、情報セキュリティの国際規格)などの基準に準拠することは、システムの信頼性を高める必須条件でしょう。
システムの設計段階からセキュリティ要件を組みこむことで、これらのコンプライアンス要件やセキュリティ基準を満たすことが可能です。設計時にセキュリティ要件を明確に定義し、それに基づいて設計を行うことで、規制や基準に準拠したシステム開発が可能です。
リリース後にコンプライアンス要件へ対応しようとすると、大幅な設計変更や修正が必要となり、多大なコストと時間がかかってしまいます。しかし、コンプライアンスとセキュリティ基準を意識して要件定義、設計を行うことで、開発の手戻りを防いでコストと時間を削減できるのです。
設計段階で脆弱性を明らかにするには、第三者の専門家による診断が有効です。客観的かつ中立の立場での評価に加え、最新の脅威情報や業界標準の知見をベースにした開発が期待できるからです。
2. 開発段階でのセキュリティ対策の要点
システムの開発段階でセキュリティを確保するには、脆弱性を診断できるセキュリティスキルを持ったエンジニアが不可欠です。しかし、すべてのエンジニアが、セキュリティに精通しているわけではありません。そこで重要になるのが、セキュリティスキルを持つ開発者の育成です。その重要性と実施方法について考えてみましょう。
2-1. 脆弱性を診断できる人の育成
システムの開発段階で脆弱性を洗い出すために必要な技術やスキルが明確でない場合、エンジニアが安全性を判断するのは困難な可能性があります。この問題を解決するために、専門家による指導を受けた人材育成が必要です。
専門家によるトレーニングプログラムを実施することで、社内のエンジニアは脆弱性の種類や診断方法、必要な知識やスキルを体系的に学べます。トレーニングプログラムでは、脆弱性診断のための指標を設定することも重要です。業界標準となる指標を参考にし、診断すべき脆弱性の項目を明確にし、それぞれの判断基準を定めることで、開発を担当するエンジニアは一定の基準に基づいてシステムの安全性を評価できるようになります。
2-2. Webアプリケーション開発に潜む脅威を知る
近年、Webアプリケーションの開発と活用が盛んになっています。これらのアプリケーションはインターネットや内部ネットワークで公開されるため、外部からの攻撃にさらされるリスクがあり、適切なセキュリティ対策が欠かせません。
リスクへの対応としては、開発の段階からセキュリティ対策を施す必要があります。Webアプリケーションにおいても、開発者がセキュリティに関する知識を身につけることが不可欠です。ここでも専門家による指導やトレーニングが有効となります。
Webアプリケーション分野でのセキュリティの知識には、脆弱性の種類や攻撃手法の理解、セキュリティテストの方法などが含まれます。これらの知識を社内で共有し、開発チーム全体のスキルを向上させることも重要です。定期的な勉強会やトレーニングを通じて、開発チーム全体のセキュリティ意識を高めることで、将来的なリスクの軽減と企業の信頼性向上につなげることができるでしょう。
3. 検証段階では第三者によるセキュリティ診断が重要
システムをリリースする前の検証段階でも、第三者によるセキュリティ診断が重要な役割を果たします。社内での診断だけでは見落とされがちな脆弱性が少なくないためです。開発されたシステムの安全性、信頼性、および全体的な品質を確保するためには、外部の専門家による客観的な視点からのセキュリティ診断が有効です。
3-1. 専門的かつ客観的な評価の重要さ
システムのセキュリティ診断の効果を高めるには、客観的な評価が大切です。開発者自身が行う診断は、客観性が不足し見落としのリスクが高まります。そのため、開発者だけではなく、第三者によるセキュリティ診断を導入することが望ましいと言えます。
外部の専門家は、社内の事情にとらわれずに、セキュリティの観点からシステムを純粋に検査します。これにより、社内の開発者では気づきにくいシステムの脆弱性や問題点を指摘することができます。また、外部の専門家はセキュリティに関する豊富な経験と専門性を持っており、最新のセキュリティ知識も備えています。専門家の知見を活用して客観的な評価を受けることで、より安全で信頼できるシステムを社内外のユーザーに提供できるでしょう。
3-2. コンプライアンスの確保
第三者によるセキュリティ診断をシステムの検証段階で受けることは、コンプライアンスの確保という点でも有効です。多くの業界では、情報セキュリティに関する特定の基準や規制への準拠が求められています。
第三者による診断サービスは、コンプライアンスの確認に役立ちます。各業界の規制や課題に精通した専門家が、開発中のシステムが基準を満たしているかを詳細に検査し、必要な認証や承認を得るためのサポートも提供します。これにより、システムのスムーズなリリースが可能となるだけでなく、法令違反やブランドイメージの低下などの問題を未然に防ぐことが期待できます。
3-3. 信頼性向上と改善サイクルの加速
セキュリティの専門家はシステムの脆弱性を指摘するだけでなく、具体的な改善案の提示も合わせて行います。「どういった問題があるのか」だけでなく、「どのようにすれば改善できるのか」まで対応可能です。脆弱性に対する業界標準の対処法を得られるため、開発者は速やかに改善に着手できます。
先述した設計・開発段階からセキュリティ要件を開発に組みこんでいる開発者であれば、検証段階での診断は、その後のシステム改善サイクルの効率化に大きく寄与するでしょう。効率化した改善サイクルによってシステムの品質が向上し、さらに信頼性を高めていくことができます。セキュリティ診断の結果が良好なら、システムの信頼性を示す客観的な証拠としても活用できるでしょう。
4. GSXによる支援の特徴
GSXは情報セキュリティおよびサイバーセキュリティを専門とする企業で、セキュリティに関するコンサルティング、教育、ソリューションの提供に携わっています。先に挙げた、システム開発段階でのセキュリティ課題を解決するサービスも提供しています。提供サービスをいくつか紹介します。
4-1. 脆弱性診断設計書レビュー
「脆弱性診断設計書レビュー」は設計段階で脆弱性を発見するため、システム開発の設計書をもとにセキュリティレビューを行うサービスです。ツールを使った診断に加え、専門家が設計書をもとにヒアリングを実施し、セキュリティ要件が適切に考慮されているかどうかなどのセキュリティレビューを提供します。
診断報告書の脆弱性詳細サンプル
4-2. エンジニア教育サービス
ソフトウェア開発の脆弱性を解消するためのエンジニア教育サービスも展開しています。「SecuriST®」は情報セキュリティに関する知識を体系立てて学び、「脆弱性診断士」や「認定セキュアWebアプリケーション設計士」などを育成するプログラムを用意しています。
「EC-Council公式トレーニング」は、アメリカを本拠とするEC-Council International(電子商取引コンサルタント国際評議会)が展開する認定資格の取得を支援する公式トレーニングです。短期間でセキュリティ人材を育成できることに定評があります。
4-3. Webアプリケーション診断
インターネットや内部ネットワークで運用されるWebアプリケーションがさまざまなサイバー攻撃に対応できるかを診断するのが「Webアプリケーション診断」です。この診断ではIPAが示す脆弱性を網羅した項目を基に、WebアプリケーションやWeb APIの脆弱性を評価します。対象はWebアプリケーションだけでなく、スマートフォンのネイティブアプリやクラウド環境などにも対応しており、インターネット経由での診断やオンサイト診断、夜間や休日の診断など、さまざまな診断方法についても相談が可能です。
4-4. プラットフォーム診断
サーバやネットワーク機器のプラットフォーム(OSやミドルウェアなど)に対し、実際の攻撃と同等の手法で攻撃を行い、脆弱性の有無を診断するのが「プラットフォーム診断」です。GSXのプラットフォーム診断では、診断結果とともに具体的な改善策まで提言します。プラットフォームの脆弱性は増え続けるものであるため、定期的に実施し、状況を把握すること重要です。そのため状況や希望に合わせて、セキュリティ診断ツールを用いた安価かつ広範囲な診断や、お試しで診断を行いたい方に向けたOne-Dayパックなども用意しています。