テクニカルエンジニア・情報セキュリティに向けて勉強するよ
16日目 本日のトピック 今日はシステムテストとセキュリティ設計についの勉強メモ
システムテストについて
システムの提供者は、情報システムのサービス品質を保障する責任がある。システムテストはこの責任を果たすための具体的な手法
テスト対象を明確に意識して、テスト項目、テスト方法、テストの判定の結果を決定する。テスト計画を作り、計画に従い実行する。基本テスト→システムテスト、単体テスト→組み合わせテスト→総合テスト といった順番に実行する。
テスト方法として、設置状態、ケーブル配線の物理的な状態の確認、測定器によるテスト、テストプログラムによるテスト、実際のオペレーションテストなどがある。テストプログラムを利用するものや、測定器の準備など、大規模システムのテストは準備に時間がかかるので注意すること。テストを手際よく行うためには、綿密な計画が必要。テスト項目をあらかじめ決めておくことが重要。テスト項目を決めるには、開発の上流工程での要件規定やシステム仕様書を基本とする。
検査ツールを使った動作確認をテスト手段にするのは危険。ツールは製品仕様に基づいて設計されているため、ユーザの要件とは整合が取れていないことがある。ユーザが示した全ての要件をテストできることが最重要。
定性的に合否を判定する項目と、実測データに基づいて定量的に合否を判定する項目がある。テスト毎に判断基準を決めておく。合否はシステム仕様書を基準にする。
プログラムを使うテストでは、実行結果が想定どおりであれば合格と判断。計測テストでは計測方法を確認しておく。過負荷、連続稼動など潜在的不良を見つけるため、テスト期間はできるだけ長く取れるようにする。
ネットワークシステムでは多種類のハード、ソフトが離れた場所に分散設置されるので、以下のことに注意が必要。距離の問題で担当者同士が直接会えない。個々が正常でも、システム全体が正しく動作する保障が無い。データ転送ネットワークの遅延がシステムの安定性やサービス品質に影響する。トラフィック増大時の異常動作の懸念。各機器やインフラなど、ベンダーの分散と、それぞれの責任範囲の明確化と、トラブル原因特定の対応。各ベンダー間、拠点間での連絡体制作りが重要。
サービス品質を保証するためには、異常動作が発生したときのシステム動作の確認も重要。システムの誤動作、ユーザの御操作、運用員の不注意などでひこおこされる。セキュアなシステムでは、テストプログラム実行中に人為的に異常動作を発生させることも。想定される御操作、不注意は、仕様書に明記されずとも考慮し、場合によっては迅速な改善アクションが必要
テストの結果は判定結果だけでなく、テスト中発生したこと、発見したことを明確に記録して残す。異常が発生した場合、安直に原因を操作ミスとするのではなく、再現性の低い現象も確実に記録をのこしていくことが、後に役立つこともある。
情報システムのセキュリティ設計
保護対象、想定する攻撃、セキュリティレベルによって実現すべきセキュリティ機能が異なるため、規範は決められない。セキュリティポリシーとそれに基づく機能要件が重要な役割になる
基本は「情報の流通ルートを性格に把握すること」。例えば不正進入の対策には、実際に発生した問題を把握することが重要。設計段階で情報の流通ルートをできるだけ制限しガードを固めることで、高度なセキュリティを実現する。
ファイアウォールはネットワークアドレスをに基づいたセキュリティ機能を提供する。複雑なネットワークシステムでは情報の発信元、あて先が同じでも、複数のルートが存在することがある。時にコネクションレス型通信のIPネットワークではIPパケットの転送ルートが決まっていないことが重要な特徴だが、これは同時にセキュリティ上の弱点となりうる。
セキュリティ設計で大切なことは、情報流通ルートの抜け道を放置しないこと。冗長化など、障害時の迂回ルートも性格に把握して、要所へのセキュリティ対策を怠らないこと。
サーバやネットワークの過負荷時にユーザから見た品質が低下するのは、待ち行列が発生しているから。待ち行列理論を使用することで、待ち行列を適切な大きさにするのに必要なサーバ性能、ネットワーク帯域の概算値を求められる。サービス品質とコストのバランスを考えたシステム設計には重要。
サービス要求の時間間隔分布、サービス時間(処理時間)分布、サーバ数で構成される関数。M/M/nモデルの簡易計算を用いる。モデル計算で使う代表的な分布をM(ランダム分布、あるいは指数分布)、D(一定値)、サーバ数をnで表す。n=1すなわちサーバ数が1の時の待ち時間は「δ÷(1-δ)」。これは暗記!平均待ち時間は平均サービス時間からの相対値なので、実際の待ち時間は、平均サービス時間をTsとして、「Ts×δ÷(1-δ)」であらわす。
ネットワークの待ち時間の計算では、出力側リンク(通信回線)がサーバに相当し、出力リンクに出ていく出力パケットの時間長がサービス時間に相当する。ルータの送信待ち時間の計算ではM/M/1モデルを用いる。出力リンクの平均待ち時間をδ、出力パケットの平均待ち時間をTで表すと、待ち時間は「T×δ÷(1-δ)」。例えば出力リンクの伝送速度が10Mビット/秒で、出力パケット長が1500バイトだとるすと、(1,500X8)÷10,000=1.2でT=1.2ミリ秒。δ=0.5では1.2ミリ秒なのに対し、δ=0.75だと3.6ミリ秒となり、使用率が上がると遅延が対数的に増大するのがわかる。