業務システムの開発において、必要なセキュリティ要件を定義し、設計や実装に反映させていますか。
(自組織での開発、外部委託による開発を問わず、開発の際に必要なセキュリティ対策としては、仕様書にセキュリティ上の要求事項を盛り込むこと、設計や開発に際してぜい弱性を作りこまないように配慮すること、ぜい弱性を残さないための適切なシステム試験を実施することなどがあります。)
業務システムは、完成してしまった後に改変を加えることは困難で、コストも嵩みます。企画、設計などの初期の段階から情報セキュリティについて配慮することが必要です。そのためには、自組織での開発、外部委託による開発を問わず、仕様書にセキュリティ上の要求事項を盛り込むこと、設計や開発に際してぜい弱性を作りこまないように配慮すること、ぜい弱性を残さないための適切なシステム試験を実施することなどが重要です。
1.セキュリティ上の要求事項を仕様書に盛り込んでいるか
2.入力データに対するチェック機能を適切に実装しているか
3.業務処理プロセスを適切に実装しているか
4.情報の保護機能を適切に実装しているか
5.出力データの妥当性や表示メッセージの正しさなどに関するチェックを適切に行っているか
6.ぜい弱性を作り込まないために、プログラミング上の配慮がなされているか
業務システムは、一旦完成してしまったら、後から改変を加えることは困難で、コストも嵩みます。したがって、企画、設計などの初期の段階から情報セキュリティについて配慮することが重要であり、情報セキュリティ上の要求事項をシステムの仕様書に盛り込むことが必要にあります。そのためには、どのような人たちが使用するのか、どのような権限の区分があるのか、複数の業務フローの交差(複数の役割を持つ人の存在)など、扱うデータや文書の種類などを整理し、把握しておく必要があります。また、どの利用者がどのような操作をおこなったのかをログに記録するなどして、あとから参照できるようにしておくことも大切です。これによって、事故が発生した場合に原因を追究することができるだけでなく、操作のログが残されていることを周知することで、使用者の悪意ある行為を未然に防ぐことにもつながります。
データの入力に際しては、業務処理プロセスに不具合があると、データが正しく入力されても、データ処理が適切に行われないということが起こります。必要な機能の動作確認、誤動作分析、ぜい弱性分析などにより、業務処理プロセスが適切に実装されているかを確認します。要求されていない数値や文字列の入力ができないように制限を設けることも必要です。数値の範囲が決まっている場合や文字の種類が決まっている場合、文字列の長さが決まっている場合などには、条件に合わないデータの入力ができないようなチェックの仕組みを組み込んでおくのが良いでしょう。
読み書きの制限や削除の制限など、システムに記録されている情報(ファイル)の保護機能が実装されている必要があります。利用者ごとに読み書きや削除の制限を変えることは最低でも必要です。その他、利用する形態に応じて、部署単位や職務形態単位など、グループごとに保護機能があることが望ましく、必要に応じてアクセス制限による保護などを実装します。
出力データが妥当であるか、また表示されるメッセージが正確であるかといった観点から検証することも重要です。
システムには、開発時には意図していなかったデータの入力などによって動作が不安定になるぜい弱性が潜んでいる場合があるため、ぜい弱性をチェックするサービスやソフトウェアなどを利用して、潜在的なぜい弱性を取り除いておく必要があります。このとき、どのようなソフトウェアを使い、どのような方法を用いてぜい弱性をチェックしたのかをあとでわかるように記録しておきます。
攻撃の手法は年々進化しており、セキュリティ意識が低い開発者によって、コーディング時にぜい弱性を内包してしまうことも多くあります。開発者向けにセキュアなコーディング手法を教育する、あるいは開発ガイドラインを定めておくのもよい方法でしょう。