アプリケーションを「安全に開発する」ためのこつ 12ポイントで解説:さまざまな脅威に対抗
アプリケーション開発を巡って、さまざまなセキュリティの「落とし穴」がある。セキュリティを強化し、安全なアプリケーションの開発につなげるにはどうすればいいのか。
セキュリティインシデントによるビジネス被害を防ぐために重要な取り組みの一つが、アプリケーション開発の工程においてしっかりしたセキュリティ対策を講じることだ。そのためにはどうすればいいのか。12ポイントに沿って分かりやすく解説する。
アプリケーションセキュリティのための12ポイント
併せて読みたいお薦め記事
セキュリティ運用の効率化に取り組むには
1.要件を理解する
アプリケーションを開発する際には、そのアプリケーションの定義、機能、利用範囲、アクセスするユーザーなどを明確にすることが重要だ。このステップでは、アプリケーションを使用する全てのリソース(システム、ネットワーク、クラウドサービスなど)と、その依存関係を特定する。そのために、ソフトウェア部品表「SBOM」(Software Bill of Materials)を作成することが有効だ。
2.上級管理職の承認を得る
IT部門やビジネス部門の上級管理職にアプリケーションをレビューしてもらい、承認を得るとともに、アプリケーション開発に必要な予算を確保することが重要だ。
3.SDLCの各段階で「シフトレフト」を実践する
計画、設計、コーディング、テスト、保守を含むソフトウェア開発ライフサイクル(SDLC)で、セキュリティ対策を工程の早期(左側)へ移す「シフトレフト」のアプローチを取り入れる。早い段階からセキュリティを重視することによって、アプリケーションの脆弱(ぜいじゃく)性を軽減し、高品質なアプリケーションを迅速に提供することにつなげられる。
4.多層防御を実装する
アプリケーションのセキュリティは、多様な脅威に対処し、攻撃リスクを軽減するために設計されるべきだ。さまざまなセキュリティツールを組み合わせた「多層防御」を実装すれば、攻撃者がアプリケーションを侵害するために複数の壁を突破しなければならなくなり、セキュリティが向上する。
5.リスクを分析する
リスク分析によって、アプリケーションに影響を与えうるセキュリティリスクや脆弱性を特定する。分析はコーディングの前か本番環境への導入前に実施する。これによって潜在的なセキュリティイベントとその最悪の結末、単一障害点(SPOF)などを特定できる。定期的なリスク分析をスケジュールし、セキュリティ対策がリスクや脅威に対処し続けられるようにすることも重要だ。
6.セキュリティコントロールを実装する
アプリケーションの開発とリリース後の管理に、以下のセキュリティコントロールの施策を取り入れる。セキュリティを定期的に見直し、安全性の向上を図ろう。
- アクセスコントロール
- アプリケーションとそのデータへの不正アクセスを防ぐために、社内外を問わず全てのアクセス要求に対して認証を求める「ゼロトラストセキュリティ」を実装する。
- 認証
- アクセスを求めるユーザーが本人であることを確認する。そのためには多要素認証(MFA)を利用する。
- 認可
- アクセスを求めるユーザーがそのアクセスを許可されていることを確認する。役割ベースのアクセス制御を使用し、ユーザーの職務と責任範囲に応じて、必要なリソースのみへのアクセスを許可する。
- 是正
- セキュリティ問題を特定し、緩和する。これには、侵害が疑われるアプリケーションを遮断したり、パッチ(修正プログラム)を適用したりすることが含まれる。
- 検出
- アプリケーションが稼働中の場合、ファイアウォール、侵入検知システム(IDS)、アプリケーションスキャンツールなどを使用し、セキュリティイベントを特定する。
- 暗号化
- 入出力時、通信時、保存時など、あらゆる状態のデータを暗号化し、データ流出を防ぐ。
- ログ記録
- アプリケーションの活動を追跡する。これにより、疑わしいトラフィックや行動を特定できる。
- 予防
- ファイアウォールや侵入防止システム(IPS)を用いて不正アクセスをブロックする。
- セキュリティテスト
- ペネトレーション(侵入)テストを通じてアプリケーションの脆弱性を特定する。
7.セキュアなコーディング方法を使用する
新しいアプリケーションをコーディングする際や、既存アプリケーションを変更する方法を特定する際には、国際的に広く認知されたセキュリティ基準やガイドラインを使用してセキュリティを高める。例えば、米国立標準技術研究所(NIST)の「NIST Special Publication 800-53」や、ソフトウェアのセキュリティ向上を活動目的とする非営利組織Open Worldwide Application Security Project(OWASP)の「OWASP Web Security Testing Guide」がある。
8.APIセキュリティを向上させる
API(アプリケーションプログラミングインターフェース)はアプリケーション開発に欠かせない要素で、攻撃者から狙われやすい。APIはアプリケーションの重要な情報(プログラミングロジックやセキュリティ情報など)を含むため、APIのセキュリティを高めることが重要だ。
9.ログの保護と強力なモニタリングを実施する
データのログを不正アクセスを検出、防御するために、モニタリング(監視)が必要になる。強力なモニタリングは、疑わしい通信や潜在的なリスクを特定し、攻撃を防止することに有効だ。
10.インシデント対処計画を策定する
インシデント対処計画の策定は、疑わしい通信やその他のセキュリティイベントに迅速に立ち向かうために重要な取り組みだ。インシデント対処計画では、さまざまな手口の攻撃を想定し、インシデント対処チームの役割と責任を明確にする。演習も実施し、インシデント対処計画の改善点を洗い出す。
11.セキュリティ製品の更新をする
こちらには、ファイアウォールのルールの最新化、IDS/IPSのソフトウェアの更新、セキュリティソフトウェアの定期的なパッチ適用が含まれる。
12.AIの利用を検討する
AI(人工知能)はエンタープライズセキュリティ、特にアプリケーションセキュリティの重要な要素となっている。セキュリティ製品の中にはAIを組み込んで、脅威の検出や対処に活用するものがある。
Copyright © ITmedia, Inc. All Rights Reserved.