2005年08月11日

ロール (SQL Server 7.0 以降)

○ サーバーロール
  … サーバー(インスタンス)単位で設定、サーバー全体に設定適用
 
固定サーバーロール
対象:ログインアカウント
サーバーレベルのログイン権限管理
ロール情報は master..sysxlogins システムテーブル内に格納
  検索時は「syslogins」で実行?
Enterprise Manager または sp_addsrvrolemember システムストアドプロシージャでログインを割り当て
sp_addsrvrolemember 'ログイン名', 'ロール名'
  固定サーバーロールメンバのみが実行可
  ユーザー定義トランザクション内では実行不可
  sp_dropsrvrolemember 'ログイン名', 'ロール名' で削除
固定サーバーロール自体の追加、変更、削除は不可
固定サーバーロールのメンバーはそのロールに他のログインアカウントを追加可

○ データベースロール
  … データベース単位で設定
  ※ 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+ を利用した多階層環境
posted by w@ko at 18:54|  ・SQL Server ノート | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。