データベースのセキュリティ
データベースの使用 への移動
データベースには、機密情報が保存されることがよくあります。そのような情報を保護するためのセキュリティ方式が、さまざまなデータベースに用意されています。Paradox や dBASE など、一部のデータベースでは、テーブル レベルまたはフィールド レベルのセキュリティのみ提供しています。保護されているテーブルにユーザーがアクセスしようとする際には、パスワードを入力する必要があります。ユーザーは、認証が完了したら、アクセス権を付与されているフィールド(列)に限って参照できます。
ほとんどの SQL サーバーでは、データベース サーバーを少しでも使用するには、パスワードとユーザー名が必要になります。ユーザーがいったんデータベースにログインしたら、そのユーザー名とパスワードによって、どのテーブルを使用できるかが決まります。SQL サーバーへのパスワードの入力については、「サーバー ログインの制御」を参照してください。
データベース アプリケーションを設計する際には、データベース サーバーで必要な認証の種類を検討する必要があります。多くの場合、データベースへの明示的なログインをユーザーに表示しないようにアプリケーションが設計されており、ユーザーはアプリケーションにログインさえすればよいようになっています。ユーザーがデータベース パスワードを入力しなくても済むようにする場合は、パスワードを必要としないデータベースを使用するか、パスワードとユーザー名をプログラムでサーバーに入力する必要があります。パスワードをプログラムで入力する場合は、アプリケーションからパスワードを読み取ることによってセキュリティを破ることができないように注意する必要があります。
ユーザーにパスワードを入力させる場合は、パスワードがいつ必要になるかを考えなければなりません。現在はローカル データベースを使用しているが、後でもっと大規模な SQL サーバーに拡張する予定であれば、個々のテーブルを開くときではなく、SQL データベースに最終的にログインする時点でパスワードの入力を要求するとよいでしょう。
保護されているいくつかのシステムまたはデータベースにログインするために複数のパスワードを必要とするアプリケーションの場合は、保護されているシステムで必要なパスワードのテーブルにアクセスするための単一のマスタ パスワードを、ユーザーに入力させることができます。そうすれば、アプリケーションがプログラムで自動的にパスワードを入力するため、ユーザーがパスワードをいくつも入力する必要はありません。
多層アプリケーションでは、まったく異なるセキュリティ モデルを使用する方がよいでしょう。HTTPS や COM+ を使用して中間層へのアクセスを制御し、データベース サーバーへのログインの詳細はすべて中間層に処理させることができます。