Oracle、DB2、SQL Serverの運用管理を比較する:RDBMSアーキテクチャの深層(6)(2/4 ページ)
本連載はOracleを使ったデータベースシステムの開発・運用管理にある程度の知識を持つ読者を対象に、Oracle以外の商用RDBMSであるMicrosoft SQL ServerとIBM DB2とのアーキテクチャの違いを明らかにし、マルチベンダに対応できるデータベースシステムの設計・開発・運用ノウハウを紹介していく。(編集局)
権限の種類、設定、グルーピング
前項で解説した認証だけではデータベースへの接続が可能になっただけです。まだデータを操作することはできません。データを操作するには、そのための権限を設定する必要があります。権限の種類については各製品のマニュアルを参照していただくとして、ここでは権限の設定方法について説明します。OracleとDB2は2つの権限コマンド「GRANT」と「REVOKE」でユーザーに対する権限を管理します。
一方、SQL Serverではさらに「DENY」という権限コマンドがあります。なぜこのようなコマンドがあるのでしょうか? Oracleは権限をまとめたロールをユーザーに付与し、DB2はOSのユーザーグループに対して権限を付与するためロールという考えはありません。一方、SQL Serverはユーザーグループが権限(ロール)の固まりだと考えられます。これはSQL ServerがWindowsの権限管理と同じ手法で作られているからです。そのため「DENY」権限コマンドは、ロール(グループ)の中で権限の割り当てを変更するために必要となります。
このSQL Serverのロールの考え方は、SQL Server Enterprise Managerのデータベースロールのプロパティ画面(図3)でロールを定義する際ユーザーを保持することや、sp_addrolememberストアドプロシージャの名前にユーザー(メンバー)を追加するという意味が含まれていることからも理解できます。
権限の設定例
権限の設定について、例を用いて説明します。図4のようにユーザー(User A、User B、User C)と権限のグループおよびテーブル(TABLE1、TABLE2、TABLE3)があり、各権限のグループはTABLE1、TABLE2、TABLE3に対するアクセス権限を割り当てているとします。
User AだけTABLE1へのアクセス権限を割り当てないようにするには、以下のように行います。
OracleとDB2の場合
- User Aから各テーブルへのアクセス権限(権限のグループ)を取り消す(REVOKE)。
- User AにTABLE2、TABLE3それぞれのアクセス権限を許可する(GRANT)。
または別の権限グループを作成し、その権限グループにTABLE2とTABLE3の権限を許可し、User Aにその権限グループを許可する。
SQL Serverの場合
- User AをTABLE1に対して拒否(DENY)する。
Point
- SQL Serverには「DENY」(拒否)権限が存在する。
- SQL Serverのロールはユーザーに設定するのではなく、ユーザーをグループ化したものに設定するイメージである。
- DB2ではロールという考え方は存在せず、OSユーザーをグルーピングしたものに対して権限をGRANT/REVOKEで設定する。
次ページでは、「データベースファイル管理」について、各RDBMSの違いを見ていきます。
Copyright © ITmedia, Inc. All Rights Reserved.