非機能要件定義書
非機能要件とは、システムを構築するに当たり、性能面やセキュリティ面等において実現するべき要件であり、潜在的に持っている「隠れた要件」のことです。
非機能要件の項目
IPA(独立行政法人情報処理推進機構)1が定義する「非機能要求グレードの6大項目」に基づいています。
- アベイラビリティ(可用性)に関する事項
- オペレータビリティ(運用性)に関する事項
- セキュリティに関する事項
- パフォーマンス・スケーラビリティに関する事項
移行性に関する事項システム環境・エコロジーに関する事項
caution
当システムではゼロからのデータ運用であること、クラウドサーバーを用いることから、「移行性」および「システム環境・エコロジー」については考慮しておりません。
アベイラビリティ(可用性)に関する事項
可用性要件
| No. | 対象 | 指標 | 目標値 | 備考 |
|---|---|---|---|---|
| 1 | EC2 インスタンス | 稼働率 | 99%以上 | AWS EC2 インスタンスは基本一つで運用 |
補足事項
- システムの死活監視ツールには UptimeRobot(Uptime Robot Service Provider Ltd.)を利用し、5分間隔でシステムの起動を確認します。
- 障害発生時:
- ユーザー向けシステム:コールドスタンバイ構成(通常は待機系に電源が投入されておらず、故障などが発生した際に、手動または自動で待機系を起動する。)により、待機系システムへの移行を可能とします。
- エージェンシー向けモデル選択アプリ:Vercel(サーバーレスプラットフォーム)を利用します。稼働率99.999%を保証、冗長性を担保してくれます。
- 異常値や不具合を検出した際に復旧作業をすぐさま行えるよう、データベース及びアプリケーションファイルのバックアップを常に残す。
- サーバー(インスタンス)が停止した際に復旧作業を行うために、処理結果のlogを残す
オペレータビリティ(運用性)に関する事項
通常運用
通常の利用時間と通常スケジュール以外の特定日(バックアップ日や計画停止など)の有無や、その中身について定義します。
システムの運用時間帯:24時間運用
計画停止の候補:土日祝
保守運用
システムの品質を維持するために実施するメンテナンス作業の方針や内容を定義します。
当システムでは以下の頻度・内容で定期的にバックアップを行っております。
| No. | 対象 | 記憶媒体(拡張子) | データ管理 |
|---|---|---|---|
| 1 | ユーザー向けシステム | sqlファイル(.sql) | 毎日0時にMySQLのdumpファイルを本番稼働サーバー内のユーザールート上に自動生成 (ファイル名例:20200228_backup.sql) |
| 2 | ユーザー向けシステム | 画像・ファイル | 「AWS Backup for Amazon S3」を利用し定期的にモデルやアイキャッチなどの画像ファイル一式を別リージョンの別ストレージに同期 |
| 3 | ユーザー向けシステム | SSL証明書 | SSLサーバー証明書の更新をサーバー側で自動更新(CronでLet's Encrypt更新作業を毎日実行) |
障害時運用
システム障害発生時の対応(復旧作業の内容、異常検知時の対応など)を定義します。
当アプリのエラー検知時に自動メール送信にてシステム開発者にエラー詳細が通知されます。 緊急性が高ければ即対応しサーバーの復旧作業を行っております。また、エラーログの集積サービスにSentry(無料プラン)を利用しています。
サーバーの死活監視にはUptimeRobotを利用し5分間隔でサーバーの稼働を監視しております。
セキュリティに関する事項
セキュリティ対策
当アプリでは起こり得ないセキュリティリスクについても、対象外として掲載しております。 対応を行なったものに関しては、「対応済み」と記載しております。
以下に記載するセキュリティ対策は、中小企業の情報セキュリティ対策ガイドラインにて独立行政法人情報処理推進機構が公開しているセキュリティガイダンスに則り対策を施しています。
| ID | 診断項目(脆弱性名) | 危険度 | 情報漏洩 | 改ざん | 妨害 | 対応 | 対応方法 |
|---|---|---|---|---|---|---|---|
| 1 | SQLインジェクション | 高 | ◯ | ◯ | ◯ | 済み | 生のSQL文を書かず、エスケープして表示。 |
| 2 | クロスサイトスクリプティング対策 | 中 | ◯ | 済み | HTML 出力時には、 HTML Special Character をエスケープする。 X-XSS-Protection: 1; mode=blockをヘッダーにセット。 | ||
| 3 | クロスサイトリクエストフォージェリ (CSRF) 対策 | 中 | ◯ | ◯ | △ | csrf_tokenを全てのPOSTフォームにおいて設定 | |
| 4 | OS コマンド・インジェクション | 高 | ◯ | ◯ | ◯ | 対象外 | 対象外 |
| 5 | ディレクトリ・リスティング | 低〜高 | ◯ | 済み | 403 Forbidden | ||
| 6 | メールヘッダ・インジェクション | 中 | ◯ | 済み | djangoフレームワークにより対応 | ||
| 7 | パス名パラメータの未チェック/ディレクト リ・トラバーサル | 高 | ◯ | 対象外 | 対象外 | ||
| 8 | 意図しないリダイレクト | 中 | ◯ | 対象外 | 対象外 | ||
| 9 | HTTP ヘッダ・インジェクション | 中 | ◯ | 済み | 文字列をエスケープ | ||
| 10 | 認証 | 低 | ◯ | ◯ | 済み | secret_keyの利用 パスワードは8文字以上 | |
| 11 | セッション管理の不備 | 低〜高 | ◯ | ◯ | 済み | セッションID を保持する Cookie にセキュア属性かを付与 | |
| 12 | 認可制御の不備、欠落 | 高 | ◯ | ◯ | 済み | URLのハッシュ化 | |
| 13 | クローラへの耐性 | 低 | ◯ | 済み | AWS Shield Standard plan | ||
| 14 | クリックジャッキング対策 | 中 | 済み | X-Frame-Options: DENY をすべてのレスポンスに設定 |
パフォーマンス・スケーラビリティに関する事項
応答時間
| ID | 項目 | 機能内容 |
|---|---|---|
| 1 | ユーザビリティ | 画像ファイルの非同期読み込み(遅延読み込み) |
| 2 | ユーザビリティ | 一部画像にSVGを用い画質の劣化を防ぐ |
| 3 | ユーザビリティ | 非同期処理や仮想DOMの利用により、レンダリング速度やパフォーマンスの向上 |
| 4 | パフォーマンス | AWS(amazon web server)のクラウドサーバーを利用しているため、急な負荷がかかってもWebサーバーが落ちない。 また、画像データも上限はない。 |
アクセス数
処理件数
データ量
- IPA(独立行政法人 情報処理推進機構)は、日本のIT国家戦略を技術面・人材面から支えるために設立された独立行政法人。所管官庁は経済産業省。 日本のソフトウェア分野における競争力の総合的な強化を図る。↩