この文書は2016年以降更新されていません
アプリケーションのセキュリティアーキテクチャに関するチートシート
OWASP 作成
ドラフト版チートシート - 編集中
はじめに
このチートシートでは、アプリケーションのセキュリティアーキテクチャについて、初期設計とレビューのヒントを示します。
ビジネスの要件
ビジネスモデル
- アプリケーションの主なビジネス目的は何ですか。
- アプリケーションでどのように利益を得ますか。
- アプリケーションの開発または改善について、計画されているビジネスのマイルストーンは何ですか。
- アプリケーションは、どのように販売されますか。
- アプリケーションがユーザーに提供する主な利益は何ですか。
- アプリケーションには、どのようなビジネス継続性の条件が定義されていますか。
- アプリケーションは、どの地域でサービスを行いますか。
データの要点
- アプリケーションは、どのようなデータを受け取り、生成し、処理しますか。
- データは、どのように機密性に応じたカテゴリに分類できますか。
- データを取得または変更することで、攻撃者はどのような利益を得ますか。
- アプリケーションでは、どのようにデータのバックアップと保存の要件が定義されていますか。
エンドユーザー
- アプリケーションのエンドユーザーは誰ですか。
- エンドユーザーは、どのようにアプリケーションと対話しますか。
- エンドユーザーは、どのようなセキュリティの要望を持っていますか。
パートナー
- どのサードパーティがアプリケーションにデータを供給していますか。
- どのサードパーティがアプリケーションからのデータを受け取っていますか。
- どのサードパーティがアプリケーションのデータを処理していますか。
- サードパーティとのデータの共有において、アプリケーション自体のほかに、どのようなメカニズム (EDI 伝送、FTP ファイル処理、ベンダーの公開 API など) が使用されていますか。
- パートナーは、どのようなセキュリティ要件を課していますか。
管理者
- アプリケーションの管理機能を持っているのは誰ですか。
- アプリケーションは、どのような管理機能を提供していますか。
法規
- アプリケーションは、どの業界で運用されますか。
- どのようなセキュリティ関連の規制が適用されますか。
- どのような監査と法令遵守の法規が適用されますか。
- 時間の経過による規制の要件に対する変更は、どのように通達、管理、および実装されますか。
インフラストラクチャの要件
ネットワーク
- ルーティング、スイッチング、ファイアウォール設定、および負荷分散に関する詳細は、どのように定義されていますか。
- どのネットワーク設計が、アプリケーションをサポートしますか。
- どのコアネットワークデバイスが、アプリケーションをサポートしますか。
- どのようなネットワークのパフォーマンス要件がありますか。
- どのプライベートおよびパブリックネットワークのリンクがアプリケーションをサポートしていますか。
システム
- どのオペレーティングシステムがアプリケーションをサポートしていますか。
- どのようなハードウェア要件が定義されていますか。
- 必須の OS コンポーネントとロックダウンの必要性に関して、どのような詳細が定義されていますか。
インフラストラクチャの監視
- ネットワークとシステムのパフォーマンスの監視について、どのような要件が定義されていますか。
- 悪意のあるコードや侵害されたアプリケーションコンポーネントを検出するために、どのようなメカニズムがありますか。
- ネットワークとシステムのセキュリティの監視について、どのような要件が定義されていますか。
仮想化と具体化
- アプリケーションのどの側面が仮想化に適していますか。
- アプリケーションには、どのような仮想化要件が定義されていますか。
- クラウドコンピューティングモデルでホストすることが適切な (または適切でない) のは、製品のどの側面ですか。
- 適切な場合は、どのようなクラウドコンピューティングのアプローチが採用されますか (マネージドホスティングまたは "ピュア" クラウド、AWS-EC2 などの "フルマシン" アプローチまたは AWS-RDS や Azure などの "ホストされたデータベース" アプローチなど)。
- 各アプローチの利点と制限は、どのように比較され、決定されますか。
アプリケーションの要件
環境
- アプリケーションの作成には、どのフレームワークとプログラミング言語が使用されましたか。
- アプリケーションには、どのプロセス、コード、またはインフラストラクチャの依存関係が定義されていますか。
- どのデータベースサーバーとアプリケーションサーバーがアプリケーションをサポートしていますか。
- データベース接続文字列や暗号化キーなどの機密コンポーネントは、どのように保管され、アクセスされ、認可されていない検出から保護されていますか。
データ処理
- アプリケーションは、どのようなデータ入力パスをサポートしていますか。
- アプリケーションは、どのようなデータ出力パスをサポートしていますか。
- アプリケーションの内部コンポーネント間で、どのようなデータフローがありますか。
- データ入力検証の要件は、どのように定義されていますか。
- アプリケーションは、どのデータをどのように保存しますか。
- どのデータが暗号化され、どのデータの暗号化が必要になりますか。また、キー管理の要件は、どのように定義されていますか。
- 機密データの漏えいを検出するために、どのような機能がありますか。
- 移動中のデータ (WAN、LAN、SecureFTP 上の伝送、または http: や https: などの公的にアクセス可能なプロトコルを含む) に、どのような暗号要件が定義されていますか。
アクセス
- アプリケーションは、どのようなユーザー特権のレベルをサポートしていますか。
- どのようなユーザー識別と認証の要件が定義されていますか。
- どのような認可の要件が定義されていますか。
- どのようなセッション管理の要件が定義されていますか。
- URI とサービスの呼び出しには、どのようなアクセス要件が定義されていますか。
- どのようなユーザーアクセス制限が定義されていますか。
- ユーザー識別情報は、どのようにトランザクション呼び出し全体を通して維持されますか。
アプリケーションの監視
- どのようなアプリケーション監査の要件が定義されていますか。
- どのようなアプリケーションパフォーマンス監視の要件が定義されていますか。
- どのようなアプリケーションセキュリティ監視の要件が定義されていますか。
- どのようなアプリケーションエラー処理とロギングの要件が定義されていますか。エラー時に必要最小限の情報のみをエンドユーザーに表示して、アプリケーションの設計、セキュリティ、および実装の様相を公開しないようにするため、どのようなプロセスが備わっていますか。
- 監査とデバッグのログは、どのようにアクセスされ、保管されますか。また、どのようにセキュリティで保護されていますか。
アプリケーション設計
- どのようなアプリケーション設計のレビューの履行が定義、実行されていますか。
- 中間または処理中のデータは、どのようにアプリケーションコンポーネントのメモリとキャッシュに保存されますか。
- アプリケーションのコンポーネントをグループ化する論理層はいくつありますか。
- どのようなステージング、テスト、および品質保証の要件が定義されていますか。
セキュリティプログラムの要件
運用
- どのようなプロセスで、アプリケーションの脆弱性を特定して対処しますか。
- どのようなプロセスで、ネットワークとシステムのコンポーネントの脆弱性を特定して対処しますか。
- システム管理者とネットワーク管理者には、アプリケーションの機密データへのどのようなアクセス権がありますか。
- どのようなセキュリティインシデントの要件が定義されていますか。
- 管理者はどのように実稼働インフラストラクチャにアクセスして、管理を行いますか。
- どのような物理的制御により、アプリケーションのコンポーネントとデータへのアクセスを制限しますか。
- どのようなプロセスで、アプリケーションをホストしている環境へのアクセスを付与しますか。
変更管理
- コードに対する変更は、どのように制御されますか。
- インフラストラクチャに対する変更は、どのように制御されますか。
- どのように実稼働環境にコードを展開しますか。
- 変更管理の履行に対する違反を検出するために、どのようなメカニズムがありますか。
ソフトウェア開発
- テストの際に、開発者はどのようなデータを使用できますか。
- アプリケーションのトラブルシューティングとデバッギングで、開発者はどのような支援を行いますか。
- アプリケーションのソースコードへのアクセスを制御するために、どのような要件が定義されていますか。
- セキュアなコード記述のために、どのようなプロセスが確立されていますか。
企業
- どのような企業のセキュリティプログラムの要件が定義されていますか。
- 開発者と管理者は、どのようなセキュリティトレーニングを受けていますか。
- アプリケーションに関連するセキュリティのプロセスと要件は、どの担当者が監視していますか。
- 従業員の雇用と解雇の手続きは、どのように定義されていますか。
- どのようなアプリケーション要件によって、職務の分離という方針の強制適用が必要になりますか。
- 企業環境内における侵害から実稼働環境が影響を受けないようにするために、どのような制御がありますか。
- どのようなセキュリティガバナンスの要件が定義されていますか。
Authors and Primary Editors
Lenny Zeltser - First Draft 2012
Tony Turner - 2015 Format Change and Revisions
Vin Miller - 2015 Revisions
Other Cheatsheets
OWASP Cheat Sheets Project Homepage
Developer Cheat Sheets (Builder)
- Authentication Cheat Sheet (Spanish)
- Choosing and Using Security Questions Cheat Sheet
- Clickjacking Defense Cheat Sheet
- C-Based Toolchain Hardening Cheat Sheet
- Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet
- Cryptographic Storage Cheat Sheet
- DOM based XSS Prevention Cheat Sheet
- Forgot Password Cheat Sheet
- HTML5 Security Cheat Sheet
- Input Validation Cheat Sheet
- JAAS Cheat Sheet
- Logging Cheat Sheet
- .NET Security Cheat Sheet
- OWASP Top Ten Cheat Sheet
- Password Storage Cheat Sheet
- Pinning Cheat Sheet
- Query Parameterization Cheat Sheet
- Ruby on Rails Cheatsheet
- REST Security Cheat Sheet
- Session Management Cheat Sheet
- SAML Security Cheat Sheet
- SQL Injection Prevention Cheat Sheet
- Transaction Authorization Cheat Sheet
- Transport Layer Protection Cheat Sheet
- Unvalidated Redirects and Forwards Cheat Sheet
- User Privacy Protection Cheat Sheet
- Web Service Security Cheat Sheet
- XSS (Cross Site Scripting) Prevention Cheat Sheet
Assessment Cheat Sheets (Breaker)
- Attack Surface Analysis Cheat Sheet
- XSS Filter Evasion Cheat Sheet
- REST Assessment Cheat Sheet
- Web Application Security Testing Cheat Sheet
Mobile Cheat Sheets
OpSec Cheat Sheets (Defender)
Draft Cheat Sheets
- Access Control Cheat Sheet
- Application Security Architecture Cheat Sheet
- Business Logic Security Cheat Sheet
- PHP Security Cheat Sheet
- Secure Coding Cheat Sheet
- Secure SDLC Cheat Sheet
- Threat Modeling Cheat Sheet
- Grails Secure Code Review Cheat Sheet
- IOS Application Security Testing Cheat Sheet
- Key Management Cheat Sheet
- Insecure Direct Object Reference Prevention Cheat Sheet
- Content Security Policy Cheat Sheet