Skip to content

セキュリティおよびAPIチェックリスト

本章ではTQS-S/W認証のセキュリティおよびAPI領域に対する詳細チェックリストを定義します。セキュリティチェックリストは認証/認可、暗号化、入力検証、脆弱性防御を検証し、APIチェックリストはRESTful設計規則、ドキュメント化、エラー処理を検証します。各項目の分類は必須(O)、推奨(R)、任意(S)に区分され、検証方法を併せて明示します。


32.5.1. セキュリティ

セキュリティチェックリストはプロジェクトのセキュリティ実装レベルを検証します。通信暗号化、認証/認可、入力検証、依存関係セキュリティ、シークレット管理等、ソフトウェアセキュリティの核心領域を含みます。

番号項目分類検証方法
1TLS 1.2以上を使用して通信を暗号化するOサーバー設定確認
2パスワードをBCryptハッシュで保存するOコードレビュー
3Spring Securityを適用するOpom.xml依存関係および設定ファイル確認
4Bean Validationを適用して入力値を検証するOコードレビュー
5v-htmlディレクティブを使用しない(やむを得ない場合はDOMPurify適用)Oコード検索
6SQLパラメータバインディングを使用する(文字列連結未使用)Oコードレビュー
7ソースコード内にシークレットをハードコーディングしない(APIキー、パスワード等)Oコード検索
8OWASP Dependency-Checkを適用して依存関係セキュリティをスキャンするRpom.xmlプラグイン確認
9CORS (Cross-Origin Resource Sharing)ポリシーを明示的に設定するOSpring Security設定確認
10CSRF (Cross-Site Request Forgery)防御を実装するOSpring Security設定確認
11セキュリティヘッダーを設定する(X-Frame-OptionsX-Content-Type-OptionsX-XSS-ProtectionRレスポンスヘッダー確認
12セッションまたはトークンに有効期限ポリシーを適用するO設定ファイルおよびコード確認
13入力値の長さ制限を適用するOBean Validationアノテーション確認
14認可失敗時に適切なHTTPステータスコード(403)を返却するOコードレビュー
15ログに機密情報(パスワード、トークン等)を出力しないOコード検索

セキュリティ領域はTQS認証において最も厳格に検証される分野です。セキュリティ項目の未充足はプロジェクトの完全性に直接的な脅威となるため、必須項目を必ず充足しなければなりません。TLS (Transport Layer Security)の適用、パスワードハッシュ、SQLパラメータバインディングは基本セキュリティ要件です。

32.5.1.1. セキュリティ検証詳細基準

セキュリティ項目の検証は以下の詳細基準を適用します。

  • TLS 1.2以上の適用有無は本番環境(prod)のサーバー設定を基準に検証します。開発環境ではHTTPを許可することができます。
  • BCryptハッシュのcost factorは10以上を推奨します。
  • CORS設定はワイルドカード(*)を使用せず、許可ドメインを明示的に列挙しなければなりません。
  • CSRF防御はSPA構造でトークンベース認証を使用する場合、Spring SecurityのCSRF設定を適切に構成しなければなりません。

32.5.2. API設計

API設計チェックリストはRESTful APIの設計規則、ドキュメント化レベル、エラー処理標準を検証します。

番号項目分類検証方法
16RESTful URLネーミング規則を遵守する(名詞形、複数形、kebab-case)OAPIエンドポイントリスト確認
17標準エラーレスポンス形式を適用する(エラーコード、メッセージ、タイムスタンプ)OAPIレスポンス構造確認
18SpringDoc (Swagger UI)を適用してAPIをドキュメント化するOpom.xml依存関係およびSwagger UIアクセス確認
19日付および時刻形式にISO 8601を使用するOAPIリクエスト/レスポンスサンプル確認
20ページネーション標準を適用する(page、size、totalElements、totalPages)OAPIレスポンス構造確認
21APIバージョニング戦略を適用する(URLパスまたはヘッダー方式)RAPIエンドポイントリスト確認
22リクエストおよびレスポンス例をAPIドキュメントに含めるRSwagger UI確認
23Rate Limitingを適用してAPI呼び出しを制限するR設定ファイルまたはコード確認
24HTTPメソッドを正しく使用する(GET 照会、POST 作成、PUT 更新、DELETE 削除)OAPIエンドポイントリスト確認
25適切なHTTPステータスコードを返却する(200、201、204、400、404、500等)OAPIレスポンス確認

API設計領域は外部システムとの相互運用性と開発者体験を決定する核心要素です。RESTful規則の一貫した適用とSpringDocを通じたAPIドキュメント化は必須要件です。

32.5.2.1. API設計検証詳細基準

API設計項目の検証は以下の詳細基準を適用します。

  • RESTful URLはリソースを名詞形複数名称で表現しなければなりません(例:/api/users/api/products)。
  • URLパスに動詞を使用しません(例:/api/getUsers未使用)。
  • 標準エラーレスポンスには最低限codemessagetimestampフィールドを含めなければなりません。
  • ISO 8601日付形式はyyyy-MM-dd'T'HH:mm:ss.SSSZパターンに従います。
  • ページネーションレスポンスにはpagesizetotalElementstotalPagesフィールドを含めなければなりません。

32.5.3. 項目要約

セキュリティおよびAPIチェックリストの全項目数と分類別分布は以下のとおりです。

領域必須(O)推奨(R)任意(S)合計
セキュリティ123015
API設計73010
合計196025

セキュリティおよびAPIチェックリストは合計25項目で構成されます。必須項目19個を全て充足しなければ基本認証を取得できず、推奨項目6個の充足率に応じて優秀または最優秀認証等級が決定されます。

セキュリティ領域の必須項目比率が80%と他の領域より高い理由は、セキュリティ脆弱性がサービス全体の信頼性に致命的な影響を及ぼすためです。


32.5.4. セキュリティ検証時の留意事項

セキュリティチェックリストの検証時に以下の事項に留意しなければなりません。

  • セキュリティ項目は自動検証と手動レビューを併用して検証します。ツールで検出可能な項目(シークレットのハードコーディング、SQL文字列連結等)は自動検証を優先適用します。
  • OWASP Dependency-Checkスキャン結果、CVSS (Common Vulnerability Scoring System) 7以上の脆弱性が発見された場合、当該脆弱性の解消または対応方針を提示しなければなりません。
  • セキュリティヘッダー設定は本番環境(prod)のレスポンスヘッダーを基準に検証します。開発環境(local/dev)ではデバッグ利便性のため一部ヘッダーを無効化することができます。
  • シークレット管理は環境変数または外部シークレット管理ツールを通じて実施しなければならず、.envファイルが.gitignoreに含まれているか確認します。

32.5.5. API検証時の留意事項

APIチェックリストの検証時に以下の事項に留意しなければなりません。

  • APIドキュメント化はSpringDocが自動生成したSwagger UIを基準に検証します。別途の手書きドキュメントは認めません。
  • Rate Limitingの適用有無は本番環境(prod)の設定を基準に検証します。開発環境ではRate Limitingを無効化することができます。
  • APIバージョニングはURLパス方式(/api/v1/)とヘッダー方式の両方を許可します。プロジェクト内で1つの方式を一貫して適用しなければなりません。
  • ページネーション標準はリスト照会APIに限り適用します。単件照会APIには適用しません。

TIENIPIA QUALIFIED STANDARD