システム設計のセキュリティ対策とDB対応、DDL生成と実装
WEBサイトシステム構築上のセキュリティ対応策とDB対応、ER図からDDL生成方法とデータベース実装
WEBサイトのセキュリティ対応策※画像クリックで拡大表示
- 「サーバへの侵入防止」は、SSLで通信データを暗号化して通信系路上での盗聴・改ざんを防止し、DMZを設けて、ファイアウォールを設置して、内部LANへの侵入を防御する。
- 「データの暗号化とパスワード管理」は、
内部の開発・管理者からの漏洩防止を含めて、ユーザー認証、データの暗号化、パスワードハッシュ化、個人情報のDBアクセス権の設定などセキュリティ強化を図る。 - 「運用中のWebサイトをとりまく脅威と対策」は、
「DoS」攻撃によるサービス提供を妨害することや、DDoS攻撃のリソース消費を行なうことへの脅威があります。アクセス集中の対策も含めて基本的にはキャパシティプランニングを実施して、平常時と異常時を見分ける判断基準を設定します。(「通信量」「接続数」「応答時間」などについて、秒、分、時、日、週、月、年といった単位でトレンドを把握し、高負荷時の判断できるようにする。)
- イベント監視と監査機能の強化により、追跡できるシステム運用を確立する。
Apacheの脆弱性を狙った攻撃であれば、エラーログを見れば検出が容易かもしれないが、Webアプリケーションの脆弱性を狙った攻撃であれば、通常のアクセスログに記録されるため、エラーログだけを見ていては攻撃があったかどうかわからないので追跡ツール「SIEM」等で分析できるようにする。
- セキュリティ対策と効果は、
対策 セキュリティ対策の効果 SSL 通信系路上での盗聴・改ざんを防止。Webサーバが”本物”であることを証明 データの暗号化 万一OSレベルで不正アクセスされた場合においても、格納されたデータの漏えい・改ざんを防止する ハッシュ化して格納 パスワードなどの可逆性を求められないデータの機密性を確保 ファイルアクセス権 設定ファイルなどの機密情報への不正アクセスを防ぎ、漏えい・改ざんを防ぐ DBのアクセス権 table Privilege文で設定し、権限のないDBテーブルヘのアクセスを防ぎ、漏えい・改ざんを防ぐ 物理的な格納場所の考慮 設定ミスやOSレベルに侵入された場合でもデータを格納する場所を分けて安全性を高める デジタル署名の利用 改ざん防止
- 代表的なWeb認証方法については、
Web認証 特徴 ベーシック認証/ダイジェスト認証 HTTPのプロトコルでの認証の仕組みで、Apacheの場合、httpd.confや.htaccessファイルで設定する。認証情報は通常、ファイルに保存する。IlSの場合は、Windowsのユーザー情報が利用される 統合Windows認証 IISを使う場合に、Windowsドメイン認証やActive Directoryの認証情報を利用する形態。ログイン中のユーザー情報を用い、認証ダイアログなしで認証可能。イントラネットのWebアプリケーションにおける認証に向いている フォーム認証 HTMLフォームにID、パスワードなどを入力して認証させる方法で、通常はアプリケーション側で作り、認証情報をデータベースに保存して、パスワードはハッシュ化する。ID、パスワードとも暗号化されずに送られるため、通信にはSSLを用いるなどの対策が必要である SSLクライアント認証 SSLのクライアント証明書を利用して認証を行なう方式で、発行元が信頼する認証局かどうかや、公開キーと証明書に指定されている識別名:DN (Distinguished Name)などを基に認証判断を行なう - パスワード認証のシステム設計上で取り込む内容は、
- パスワードでユーザー認証を行なう場合、単純すぎるパスワードを禁止したり、定期的に変更を促すなど、パスワードポリシーの設定が重要となります。
パスワードポリシーの例 レベル ポリシー 最低ライン 8文字以上(数字のみは不可)ユーザー名などの利用禁止 中レベル 英数字の混在を強制1ヵ月程度ごとに変更を要求(難しい場合は通知のみ)前回と同じパスワードの再利用禁止 - パスワード認証の弱点の総当り攻撃や辞書攻撃に対し、一定回数、誤パスワード入力があったらアカウントをロックするといった対策が有効ですが、問い合わせが殺到するなどの可能性があるため、ロック解除を一定時間後に自動的に行なったり、パスワードリカバリで解除できるようにすることも検討すべきです。
- 「秘密の質問」などの形でユーザー本人しか知りえないような情報をあらかじめ登録しておき、正解すればパスワードを再設定できるようにしたりする「パスワードリマインダ」の仕組み利用することも必要です。
- 特に高いセキュリティが要求されるシステムでは、マトリクス認証(ネットバンキングサイトで採用)やワンタイムパスワード、ICカード、生体認証(サイト管理者などの特権ユーザーの認証)などを併用することを考慮します。
- パスワードでユーザー認証を行なう場合、単純すぎるパスワードを禁止したり、定期的に変更を促すなど、パスワードポリシーの設定が重要となります。
- データベース設計上のセキュリティ対応は、
- 「個人情報」等のより強化のセキュリティを設定するためには、SQLの「privilege」文で、該当するテーブルに対して、アクセスレベル権限を設定します。
- WEBのアクセス(ログイン)の設定テーブルと個人情報などの重要な情報のテーブルを分離し、アクセスできる処理を限定して、セキュリティレベルを高めるようにします。
- ログインのための「パスワード」については、ハッシュ化したデータを保存するカラムを設定し、セキュリティアップのため「パスワードリマインダ」の仕組み利用せず、平文のパスワードは保存しないようにします。
MD5の場合は「32文字」で、sha1の場合は「40文字」ですが、将来の拡張性から、「Password Hashing」関数を利用を考慮して、「可変255文字」とします。 - サイト管理者、通常のメンバ、メンバ登録時の一時メンバの区分をするため、「役割」のカラムを追加して、ログイン時の処理範囲を制限できるようにします。
ER図からDDL生成方法と実装
- 「ER図」への追加テーブルとして、「ER図とデータベース設計」で作成した事例の「コンテンツ共有サイト」のER図に「メンバー個人情報」のテーブルを追加した内容を作成します。
- 「メンバーマスタ」に「役割」のカラムを追加します。
- エンティティとして、「メンバー個人情報マスタ」(MemberPersonalMaster)を追加して、属性(列)フォームから必要とする属性を入力します。
- 「メンバー個人情報マスタ」と「メンバーマスタ」を「メンバーID」でリレーション(1 : 0 or 1)を結び、完成したER図です。
- 「ER図」から「エンティティ定義書」の出力は、
- 「ER図」のタブから「エンティティ定義書を出力する」を選択します。
- 「エンティティ定義書」のダイアログで「定義書出力対象」、「出力形式」、「MySQL」などを選択して、「エンティティ定義書作成」ボタンをクリックします。処理が終了した場合は、「閉じる」ボタンをクリックします。
- 作成されたExcelファイルの「エンティティ定義書」を保存します。
- 「ER図」から「DDL」の出力は、「ER図」のタブから「DDLを作成する」を選択します。
- RDBMS種類で「MySQL」を選択し、「table createの前にDrop tableステートメントを生成する」をチェックします。「外部参照キー制約」を出力する場合は、緑枠のところにチェックを入れると出力されます。
- DDL出力内容が、表示されますので、「sqlファイル」として保存をします。
- 作成された「DDL」ファイルからのデータベース実装は、MySQLコマンドを起動して、「webDesignSchool」データベースを作成と選択をし、「sourceコマンド」でドロップされたファイルを実行します。(以下、入力コマンド)
C:\Users\xxx>MySQL -uroot -padmin
事例のDB実装のMySQLコマンド実行モニタ(html)
...
mysql> create database webDesignSchool;
mysql> use webDesignSchool;
mysql> set names cp932;
mysql> source C:\...\WebdesignSchool01.sql
mysql> show tables;
mysql> describe contentsdata;
「コンテンツ共有サイト」のER図の更新版
『ER図の更新版』ダウンロード(a5er)
「コンテンツ共有サイト」のエンティティ定義書
『エンティティ定義書』ダウンロード(Excel)
「A5:SQL Mk-2」で作成のDDL
『DDL』ダウンロード(sql)