Security


Certification Mode

Windows 認証

SQL Server 認証

認証モードの変更

SQL Server のプロパティの [セキュリティ] タブで変更が可能です。

 

Encryption

パスワードの暗号化

自動的に必ず行われます。ユーザーは画面上でパスワードを確認できません。

Transact-SQL 定義

WITH ENCRYPTION を指定すると、 ストアドプロシージャ、トリガ、ビューの定義を syscomments システムテーブルに暗号化して保存できます。

ネットワークパケット暗号化

サーバークライアントユーティリティを使用して、クライアントとサーバー間での通信パケットを暗号化することができます。

 

Login Accounts

SQL Server では、SQL Server へ接続するアカウントを作成し、その中でどのユーザーがデータベースにアクセスできるかをデータベースごとに設定します。

Enterprise Manager のセキュリティフォルダのログインにて SQL Server にログインできるアカウントを登録します。ここに登録されていないと、SQL Server に接続できません。sp_grantlogin ストアドプロシージャにて設定も可能です。sp_revokelogin でアカウントの削除、sp_denylogin でアクセス拒否の設定が可能です。

データベースフォルダのユーザーにて、ログインで追加したユーザーを指定します。ここで、ログインと同時に設定することも可能です。

デフォルトのアカウント

 

Role

ロールとはデータベースで使用されるグループです。Windows の Global Group や Local Group にあたります。

固定サーバーロール

サーバーレベルの管理権限をグループ化します。syslogins システムテーブルに格納されています。sp_addsrvolemember ストアドプロシージャでログインアカウントを追加・削除できます。

固定サーバーロールの追加、削除、変更はできません。

固定データベースロール

データベースレベルの管理権限をグループ化します。sysusers システムテーブル格納されます。

Public データベースロール

特殊なデータベースロールに Public があります。このロールは、すべてのユーザーを示します。Windows の Everyone に近い存在です。また、すべてのデータベースに存在しています。削除することはできません。

アプリケーションロール

特定のアプリケーションに対してセキュリティの実装を許可します。アプリケーションロールを使用するにはアプリケーションがわで、SQL Server に接続後、sp_setapprole ストアドプロシージャでアプリケーションロールを有効にする必要があります。この権限はアプリケーションが接続している最中有効です。

同じ接続内で sp_setapprole を行うと、エラーになります。また、任意にアプリケーションロールを無効にすることはできません。

Web では「接続プール」があり、ページを落としても、一定時間接続を確保します。そのため、ASP などで DB にアクセスする場合は、エラーになることがあります。

 

Permission

アクセス権には次の 3 種類があります。

権限は継承されます。ユーザーはユーザー固有につけられたアクセス権と、ロールにつけられたアクセス権を組み合わせて、より厳しい方を優先します。

例えば以下のような場合、UserA に割り当てられる権限は、SELECT と INSERT のみです。

  SELECT INSERT UPDATE DELETE
Public なし 許可 許可 拒否
User A 許可 なし 拒否 許可

 

ビューとストアドプロシージャの権限

ビューとストアドプロシージャを使用すると、ビューやストアドプロシージャの権限を管理するだけで、これらが参照するオブジェクトを管理する必要がなくなります。

ただし、元となっているテーブルの作成者とビューやストアドプロシージャの作成者が違う場合、それぞれのアクセス権が適用されます。