トップページへ PASSJ ブログへ
トップページへ
分科会
特集!
コミュニケーション
資格
セミナー・コンファレンス
インフォメーション
Oracleキーワードから学ぶ、逆引き! SQL Server入門
文=株式会社CSK 教育サービス事業部
第9回
ユーザー管理編 スペシャルキーワード
ロール
Oracle ServerでもSQL Serverでも、ユーザー管理の負荷を軽減する上で、ロールの活用は欠かせません。どちらもその目的は同じですが、権限の管理方法が微妙に異なります。両者の違いやSQL Serverでのロールを活用した権限管理について、ご紹介しましょう。

なお、「エラーでおぼえる!? SQL Server 2000 管理運用術」第3回では、権限について詳しく解説されています。ぜひそちらもご参照ください。

Oracle ServerとSQL Serverとの違い


Oracle Serverのロールは、「権限のグループ」です(図1)。一方、SQL Serverのロールは、「ユーザーのグループ」です(図2)。SQL Serverでロールに権限を付与すると、そのロールに属しているユーザーは権限を使用できるようになり、反対に権限を取り消すとロールに属するユーザー全員が権限を使用できなくなります。

Oracle ServerでもSQL Serverでも、結果としてやっていることは同じと言えるでしょう。セキュリティ管理を容易にするためにロールを使うのです。

■ 図1 Oracle Serverのロール
(図)Oracle Serverのロール

■ 図2 SQL Serverのロール
(図)SQL Serverのロール


SQL Serverのロールの種類


SQL Serverのロールには、次の4種類があります。

1. 固定サーバーロール
    インスタンスレベルの管理権限。インスタンス作成時に自動作成される。
2. 固定データベースロール
    データベースレベルの管理権限とオブジェクトの操作権限。
3. ユーザー定義データベースロール
    ユーザーが独自に作成するロール。
  4. アプリケーションロール
    Oracle同様、特定のアプリケーションを通してのみアクセスを許可するためのロール。ロールをアクティブにするときにパスワードが必要。

また、1と2には次のロールがあります。「固定〜」という名前のとおり、私たちユーザーが変更できないロールですが、publicのみ例外で変更が可能です。publicはOracle ServerでいうGRANTステートメントのPUBLICと同じで、データベースユーザー全員が属します。

■ 固定サーバーロールの種類
固定サーバーロール ロールに付与されている権限
sysadmin SQL Server でのすべてのステートメント権限と、すべてのオブジェクト権限
serveradmin サーバー全体の環境設定オプションの設定と、サーバーをシャットダウンする権限
setupadmin リンクサーバーと起動プロシージャを管理する権限
securityadmin ログインの管理、 CREATE DATABASE 権限の管理、エラーログの読み取り、パスワードの変更をする権限
processadmin SQL Server 内で実行されるプロセスの管理権限
dbcreator データベースを作成、変更、削除する権限
diskadmin ディスクファイルを管理する権限
bulkadmin BULK INSERT ステートメントを実行する権限

■ 固定データベースロールの種類
固定データベースロール ロールに付与されている権限
public すべてのデフォルト権限
db_owner データベース内のすべての権限
db_accessadmin ユーザー ID の追加と削除をする権限
db_securityadmin すべての権限、オブジェクト所有権、ロール、ロールのメンバーを管理する権限
db_ddladmin すべて のDDLの 実行権限(GRANT、REVOKE、DENYは入らない)
db_backupoperator DBCC、CHECKPOINT、BACKUP の各ステートメントを実行する権限
db_datareader データベース内のすべてのユーザー テーブルのSELECT権限
db_datawriter データベース内のすべてのユーザー テーブルのINSERT、UPDATE、DELETE権限
db_denydatareader データベース内のどのユーザー テーブルのデータもSELECTできない権限
db_denydatawriter データベース内のどのユーザー テーブルのデータもINSERT、UPDATE、DELETEできない権限


SQL Serverでの権限の管理


SQL Serverでは、権限の「許可(GRANT)」と「取り消し(REVOKE)」以外に、「拒否(DENY)」があります。ユーザーが操作を許可されるのは、次の2つの条件を満たしたときです。

ユーザーまたはそのユーザーが属するロールに対して権限が許可(GRANT)されている。
  ユーザーまたはそのユーザーが属するロールに対して権限が拒否(DENY)されていない。

この条件を利用すると、たとえば【図3】のケースでUSER1のみTABLE Aにはアクセスさせたくない場合は、ロールにはTABLE A、B、Cを許可し、USER1をTABLE Aに対しては拒否することで実現できます。

■ 図3 ロールを活用した権限の管理
(図)ロールを活用した権限の管理

なお、同じことをOracle Serverで実現するには、USER1からロールを取り消し、別途、USER1に対してTABLE BとTABLE Cの権限を許可する必要があり、処理が複雑になってしまいます。SQL Serverのロールの特性をよく理解して、このような便利な使い方を覚えれば、セキュリティ管理の負荷をぐっと軽減できるはずです。ぜひ、活用してください。





・ 第1回 基本用語編:データベースオブジェクト
・ 第2回 ユーティリティ編:SQL*Plus
・ 第3回 アーキテクチャ編(1):インスタンスとデータベース
・ 第4回 アーキテクチャ編(2):セグメント/エクステント/データブロック
・ 第5回 アーキテクチャ編(3):索引
・ 第6回 プログラミング編:カーソル
・ 第7回 トランザクション/ロック編:読み取り一貫性
・ 第8回 バックアップとリカバリ編:スタンバイ・データベース
・ 第9回 ユーザー管理編:ロール
・ 第10回 パフォーマンスチューニング編:EXPLAIN PLAN(実行プランの表示)


著者プロフィール
株式会社CSK 教育サービス事業部
http://www.cskedu.com/
OracleとSQL Server、それぞれのトレーニングコースを担当するトレーナー3名体制で執筆しています。メンバーは、金子真由美、浦山裕恭、浅見淳子。
今回の執筆担当
浅見淳子(ASAMI, Junko)
OracleデータベースとSQL Server、両方のインストラクターを担当しています。Oracleユーザー歴の方が長いので、SQL ServerとOracleとの違いに驚かされることがしばしば。ちなみに埼玉出身ですが、お酒はけっこう強い(?)です。

← 特集!DBバイリンガル 目次

PASSJメールニュース 著作権ついて プライバシーポリシー リンクポリシー お問い合わせ
(C) 2005 Professional Association for SQL Server Japan. All rights reserved.