連載
» 2004年12月03日 00時00分 公開

RDBMSアーキテクチャの深層(6):Oracle、DB2、SQL Serverの運用管理を比較する (2/4)

[楠智裕, 安間裕,アクセンチュア・テクノロジー・ソリューションズ]

権限の種類、設定、グルーピング

 前項で解説した認証だけではデータベースへの接続が可能になっただけです。まだデータを操作することはできません。データを操作するには、そのための権限を設定する必要があります。権限の種類については各製品のマニュアルを参照していただくとして、ここでは権限の設定方法について説明します。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ストアドプロシージャの名前にユーザー(メンバー)を追加するという意味が含まれていることからも理解できます。

図3 SQL Serverデータベースロールプロパティ画面 図3 SQL Serverデータベースロールプロパティ画面

権限の設定例

 権限の設定について、例を用いて説明します。図4のようにユーザー(User A、User B、User C)と権限のグループおよびテーブル(TABLE1、TABLE2、TABLE3)があり、各権限のグループはTABLE1、TABLE2、TABLE3に対するアクセス権限を割り当てているとします。

図4 各RDBMSの権限の設定例 図4 各RDBMSの権限の設定例

 User AだけTABLE1へのアクセス権限を割り当てないようにするには、以下のように行います。

OracleとDB2の場合

  1. User Aから各テーブルへのアクセス権限(権限のグループ)を取り消す(REVOKE)。
  2. User AにTABLE2、TABLE3それぞれのアクセス権限を許可する(GRANT)。
    または別の権限グループを作成し、その権限グループにTABLE2とTABLE3の権限を許可し、User Aにその権限グループを許可する。

SQL Serverの場合

  1. User AをTABLE1に対して拒否(DENY)する。

Point

  • SQL Serverには「DENY」(拒否)権限が存在する。
  • SQL Serverのロールはユーザーに設定するのではなく、ユーザーをグループ化したものに設定するイメージである。
  • DB2ではロールという考え方は存在せず、OSユーザーをグルーピングしたものに対して権限をGRANT/REVOKEで設定する。

 次ページでは、「データベースファイル管理」について、各RDBMSの違いを見ていきます。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。