|
… データベース単位で設定
|
|
※ SQL Server 6.5 でのグループ/別名 |
|
|
・ |
対象:データベースユーザーアカウント |
・ |
データベースレベルの接続権限管理、オブジェクトの操作権限管理 |
・ |
ロール情報は sysusers システムテーブル内に格納 |
・ |
Enterprise Manager または sp_addrolemember システムストアドプロシージャでユーザーを割り当て |
⇒ |
sp_addrolemember 'ロール名', 'アカウント名' |
|
→ |
sysadmin または db_owner メンバーのみ実行可 |
|
→ |
ユーザー定義トランザクション内では実行不可 |
|
→ |
sp_droprolemember 'ロール名', 'アカウント名' で削除 |
・ |
固定データベースロールの追加、変更、削除は不可 |
・ |
特殊ロール「public」 |
|
− |
全データベースユーザーが所属 |
|
− |
PRINT ステートメントなど権限を必要としないステートメントを実行可 |
|
− |
メタデータを取得できる特殊システムストアドプロシージャを実行可 |
|
− |
guest アカウントでデータベースにアクセス可 |
|
|
・ |
対象:データベースユーザーアカウント |
・ |
オブジェクト権限の付与簡素化、データベースユーザーのグループ化目的 |
・ |
データベースレベルの接続権限をユーザーが定義 |
・ |
設定はデータベースごとに行う |
|
− |
データベースユーザーは複数のロールに入れる |
・ |
作成したロールの情報はカレントデータベースの sysusers システムテーブル内に格納 |
・ |
Enterprise Manager または sp_addrole システムストアドプロシージャでロールを作成 |
⇒ |
sp_addrole 'ロール名' |
|
→ |
sysadmin、db_owner、db_securityadmin メンバーのみ実行可 |
|
→ |
sp_droprole 'ロール名' でロール削除 |
・ |
Enterprise Manager または sp_addrolemember システムストアドプロシージャでユーザーを割り当て |
|
→
|
sp_addrolemember はsysadmin、db_owner、db_securityadmin メンバー、ロールの所有者のみ実行可 |
・ |
循環してしまうロール設定は不可 |
|
|
・ |
対象:アプリケーション |
・ |
データベース接続許可権限をユーザーが定義 |
|
→ |
特定のアプリケーションからのみの間接的アクセスを許可 |
・ |
ロールでアクセス権を与えられたアプリケーションを実行した全ユーザーがアクセス可
|
|
→ |
詳細なアクセス権はアプリケーション側で設定、ユーザー直接権限を設定する必要なし |
・ |
作成したロールの情報はカレントデータベースの sysusers システムテーブル内に格納 |
・ |
カレントデータベースでユーザーアカウント/ロールが既に持っている権限を一時喪失 |
|
→ |
publicロール適用権限を除く |
・ |
カレントデータベースですべてのアプリケーションロール権限は継承 |
・ |
完全修飾オブジェクト名を使用すると、guest アカウントが有効なデータベースにアクセス可 |
・ |
Enterprise Manager または sp_addapprole システムストアドプロシージャでロールを作成 |
⇒ |
sp_addapprole 'ロール名', 'パスワード' |
|
→ |
sysadmin、db_owner、db_securityadmin メンバーのみ実行可 |
|
→ |
sp_dropapprole 'ロール名' で削除 |
|
→ |
sp_approlepassword 'ロール名', '新パスワード' でロールのパスワードを変更 |
・ |
Enterprise Manager または GRANT、DENY、REVOKE ステートメントでロール権限を管理 |
・
|
クライアントは SQL Server 接続後、以下のストアドプロシージャを実行してロールをアクティブ化する必要あり(これ以外の方法なし) |
|
|
⇒ sp_setapprole 'ロール名', 'パスワード' |
|
※ |
ロールの有効範囲はカレントデータベースのみ |
|
|
→ 別データベース切り替え後はそのデータベースの guest アカウント権限が許可 |
|
※ |
sp_setapprole でアクティブ化後はユーザーが SQL Server から切断するまでロールを無効にできない |
|
※ |
標準データベースロールに優先 ← アプリケーションロールは排他的 |
・ |
アプリケーションロールをアクティブにするにはパスワードが必要 |
|
※ |
オプションとして、ODBC ENCYPT 機能を使用してパスワード暗号化可 |
|
※ |
暗号化関数を使用する場合、パスワードの先頭に「N」を付加して Unicode 文字列に変換 |
・ |
ODBC 接続プールが働く以下の環境では正しく動作せず |
|
→ |
アプリケーションがプールされた接続を使用、使用のたびに接続の再確立は不要 |
|
→ |
接続のプロパティに依存 |
|
− |
Web アプリケーション環境(ASP、ASP.NET) |
|
− |
COM+ を利用した多階層環境 |