JP:Requirements Checklist

必須条件チェックリスト

はじめに:

  • 本稿はあなたがセキュリティのベストプラクティスを理解するIT/セキュリティのプロフェッショナルだと仮定します。

  • より詳細な情報を得るにはセキュリティガイダンスガイドをご参照ください。
  • セキュリティレビューをパスする為に必ずしも下記の全ての項目が要求されない場合もあります。セキュリティレビューは客観的なプロセスであり、実際のレビューでは組織規模やアプリケーションのアーキテクチャ、データのハンドリング等を考慮されます。

Force.comソースコード

Apex:

  • 共有:ビジネス上の理由がない限り、現在のユーザに適用されている共有ルールが遵守され続けるため、クラス宣言の時"with sharing"というキーワードを使用してください。ユーザ固有のオブジェクトを読み取るコントローラは常に"with sharing"を使用すべきです。
  • VisualforceページのXSRF(クロースサイトリクエストフォージェリ):重要なデータを変更したり削除したりする際、各リクエストにXSRFを防ぐためのランダムに生成された変数もしくはその他の認証トークンが含まれているか確認して下さい( http://www.cgisecurity.com/csrf-faq.html )。もしくは、別のXSRF対策としてアクションが実行される前に、ユーザに確認を求めるよう別の「確認」ページを送信して下さい。その「確認」ページを開発する際、HTML及びJavaScriptのみで作成された「確認」ページは悪意のあるユーザにとって簡単に回避することが可能なので、 XSS対策トークンが自動的に組み込まれているVisualForceフォームを含んだVisualForceページを使用して下さい。
  • トリガー:トリガーのバルク化
  • テスト:アプリケーションの正常な稼動を証明するために、出来るだけSystem.assertを使用して下さい。 System.assertの適切な使用は期待値及び動作に合わせてアプリケーションが正常に実行されているかを証明するために重要な役割を果たします。トリガーのベストプラクティスにつきましてはこちらをご参照ください: Apexコードテストメソッドの概要


カスタムJavascript及びHTML:

  • XSS攻撃を防ぐため、ページが表示される前、ページエレメント、リクエストパラメータ、クエリデータ等の全てのユーザ入力データが< ' > &という文字がそれぞれ安全なエスケープシーケンスに変換されているかご確認ください。


機密情報の保存(例:認証情報や別のアプリケーションへのAPIキー):

  • 顧客組織内の全てのユーザに機密データへの適切なアクセス制限を実施して下さい。アクセス制限を実施するにはカスタム設定を”Protected"モードにし、承認済のユーザのみがデータ変更出来るようにVisualForceページを作成して下さい。こちらのVisualForceページでは過去に保存されたデータ等の余分な情報はユーザに表示すべきではありません。上記の更なる情報につきましては組織のヘルプから「カスタム設定」を検索してご参照ください。


上記のより詳細な情報につきましてはこちらをご参照ください : Apex及びVisualForceセキュリティTips


クライアント (デスクトップ)とコンポジット(ホスティング)アプリケーション

ポリシー

  • 定期的にチェックされ、上級職者の承認済みかつ全社員に通知済みの情報セキュリティーポリシーの実施


標準化と明記的な手順化、ポリシー

  • システム設定
  • アプリケーション開発
  • アプリケーション設定
  • データベース設定
  • ネットワーク設定 (ファイヤーウォール、IDSを含む)
  • パッチプロセス
  • ロギングプロセス/ログレビュー
  • 物理セキュリティ
  • 問い合わせ管理プロセス
  • 認証と承認
  • 暗号化標準


ホスト/プラットフォーム自体のセキュリティ

  • 該当サーバの不必要なサービスの無効化(ウェブアプリケーション,データベース等)
  • 強固なパッチ管理手法を実践
  • デフォルトアカウントの削除/名称変更とデフォルトパスワードの変更
  • 全てのパスワードの暗号化
  • すべてのユーザでユニークなユーザー名の使用
  • 強固なパスワードポリシーの実施(組織とアプリケーション)
    • 6〜8文字以上
    • 次の4つ中3つを含む
      • 数字(0〜9)
      • ラテン文字小文字(a〜z)
      • ラテン文字大文字)(A〜Z)
      • ドル記号($)、感嘆符(!)等の英数字以外の文字
    • 連続認証失敗でのロックアウトは有効化(3〜5回)
    • パスワードの有効期限設定(90〜180日)
    • パスワード履歴は有効化(直近5パスワードまでの履歴を許可しない)
  • システムのロギングとログの定期的なチェックの実施
  • クリティカルなシステムでのホストベースのファイアウォールを実現
  • セキュアなリモートアクセス環境の実現(VPN – SSHv2, SSL, IPSEC 3DES, AES)
    • 適切なACLによってトンネリングがなされているか
  • 企業全体で毎日更新されるアンチウィルスソリューションの導入
  • 外部ネットワークからのリモートデスクトップやターミナルサービス等のリモートアクセスソフトウェアへのアクセス禁止


アプリケーションセキュリティ

  • 強固なシステム開発ライフサイクル(SDLC)とセキュリティをコアコンポーネントに適用
    • コードレビューの実施
    • テスティング/QAメソトロジーの実践
    • rolling code to production(アジャイルメソトロジ)の実践
  • 開発、テスト、プロダクション環境管理等、メンバーを適切な責務で分割
  • 必要がなければセッションID等のsalesforce.comの識別情報等を保持しない(セッションIDを使用)
    • 識別情報の保存が必要な場合にはセールスフォース・ドットコムにその理由をお伝え下さい。
  • ログイン情報や重要なデータに対して、保存時と転送時にそれぞれ暗号化を実施
    • SSLv3よりも新しいバージョンの対応
    • ソースコード内に暗号化キーのハードコードを禁止
    • 暗号化キー管理の機能を実現
  • 動的SQLクエリの回避
    • もし動的SQLを使用する場合、利用の理由や詳細をセールスフォース・ドットコムへお伝え下さい
    • 動的SQLクエリの危険性を軽減するための対策の実施
  • SQLインジェクションやクロスサイトスクリプティング(XSS)攻撃を防ぐための入力値の検証及びURL検証の実施
  • SalesforceのセッションIDを適切に管理し保護する仕組みの実装。具体的には:
    • セッションIDは通信中常に暗号化する
    • Google AnalyticsのようなサードパーティにセッションIDを送信しない
  • 接続が実際のセールスフォースドットコムサーバからの接続であることを確保して下さい。実際のセールスフォースドットコムサーバからの接続であることを確保するには下記の正規表現をご利用下さい:

運用上のセキュリティ

  • ネットワークの常時監視
  • ディザスタリカバリーの実装とサービス提供プランを策定し継続的なテスト
  • 従業員にセキュリティへの啓蒙とトレーニングプログラムの実施
  • 暗号化キーと特権ユーザーのパスワード定期変更ポリシーの実施
  • ドキュメント化や全ての変更に対して承認を要する様な強力な変更管理プロセスの実施
  • サードパーティのセキュリティレビューを実施


ネットワークセキュリティ(ホスティングアプリケーションのみ)

  • 動的にパケット検査を行うファイヤーウォールの導入
  • Webアプリケーションとデータベースサーバのネットワーク上でのセグメント分割
  • ネットワークのIDS/IPSは導入(もしパスワード等の重要なデータを外部サーバに保存する場合)
  • アプリケーションとデータベースサーバのログ収集、アラート、核となるネットワーク機器の点検
  • ワイヤレスネットワーク
    • 近隣施設からのワイヤレス接続遮断
    • WPA2やワイヤレスIDSは企業レベルの実装
  • Eメールスパムフィルタとアンチウィルスは実現(プロダクトでEメールを使っている場合は必須)


物理セキュリティ(ホスティングアプリケーションのみ)

  • データセンターへのアクセス制御の実施
  • データセンターへの入場をログの記録
  • セキュリティカメラ、動作探知機、警報機等をデータセンターに設置し、24時間365日モニタリングの実装
  • 火事、自身、浸水等の災害など、外部の脅威に対して対策を講じているか?



Updated: May 29, 2010
英語原文ドキュメント : Requirements_Checklist