サービスやシステムのリリース前に重要なテストのひとつが、負荷試験および脆弱性診断です。サービスが安定的に稼働し、セキュリティのリスクを最小限に抑えるためには、負荷試験での性能確認と脆弱性診断によるセキュリティ検証が不可欠です。負荷試験と脆弱性診断の実施例を通して、その要件、課題、そして解決策を説明します。
要件
高負荷状態での安定性確認
リリース予定のアプリケーションが想定される最大アクセス数に耐えられるかを確認し、サービスダウンのリスクを回避すること。
セキュリティリスクの最小化
アプリケーションのセキュリティに関する脆弱性を特定し、リリース前に修正することで、リリース後の攻撃リスクを最小限にすること。
スムーズなユーザー体験の維持
高負荷時でもレスポンスが低下しないようにし、ユーザーにストレスのない操作感を提供すること。
課題
アクセス増加に対する不安の解消
リリース後に大量のアクセスが集中することが予想されるが、現在の環境でその負荷に耐えられるか、また仮に想定上のアクセスが来た場合に、サーバーの増強でアクセスを捌けるようなしすてむになっているかを知りたい。
未知の脆弱性リスク
アプリケーション開発において、セキュリティの専門知識を持つ担当者が不在だったため、潜在的な脆弱性が残っていないかを把握したい。
ソリューション内容
お客様の言語、フレームワーク、環境
Java/Spring
AWS
EC2/RDS
ユーザー、システム規模
daily 2000ユーザー、テスト時は3000〜4000/day負荷試験の代行
実施期間
2ヶ月
負荷試験の実施
実際のアクセスパターンをシミュレーションするために、負荷試験ツールを使用し、予測されるアクセス数に基づいた負荷シナリオを設定しました。ツールによって実際のユーザー数やアクセス頻度に応じた負荷をかけることで、特定のタイミングでシステムがどのように動作するかを確認しました。この試験により、ボトルネックとなる部分を洗い出し、アプリケーションレイヤー、インフラレイヤーでの対策を行い対処を行いました。
自動脆弱性スキャンと手動診断の実施
セキュリティ診断ツールを活用し、アプリケーションの脆弱性を自動スキャンし、SQLインジェクションやXSSなどの一般的な攻撃に対する脆弱性を検出しました。また、サービスやシステムの特性に合わせて、手動による診断を行い、開発段階では見つけにくい特異な脆弱性の有無を確認を行いました。
結果と効果
本プロジェクトでは、負荷試験と脆弱性診断を通じて、サービスリリース前に潜在的なリスクを大幅に削減することができました。これにより、リリース後も安定したパフォーマンスが維持され、セキュリティリスクの最小化が実現しました。また、リリース後も大幅なアップデートなどを行った際に、入り込んでしまうパフォーマンス劣化などの発生を極力減らすために、簡単な負荷試験であれば実施できるような状態にお客様にレクチャーを行いました。