権限とロールで効果的なユーザー管理をORACLE MASTER Silver DBA講座(7)

ORACLE MASTER資格の中級に位置付けられ、取得すればOracle技術者としてグローバルに認定される「ORACLE MASTER Silver Oracle Database 10g」。例題を利用してポイントを押さえ、確実な合格を目指そう!

» 2007年02月09日 00時00分 公開
[有限会社 G.F.インフィニティ (Project - ∞)]

 前回「Oracleユーザーを作成してみよう」に引き続き、ユーザーの管理方法について学びます。

ユーザーの管理:権限とロール

ポイント

 Oracleデータベースにおける権限には、システム権限とオブジェクト権限の2種類があります。複数の権限をグループ化して管理するためのものとして、ロールがあります。

 すべての権限やロールを覚える必要はありませんが、特殊な管理方法などを含めて理解しておく必要があります。

システム権限

 ユーザーに、データベースに対する特定の操作(テーブル作成、ユーザー作成など)を許可するものです。

 システム権限の中には、「ANY」キーワードが含まれているものがあります。これは、他スキーマにも権限が及ぶことを意味しています。

 例えばCREATE TABLEシステム権限では、自分のスキーマにテーブルを作成することができます。CREATE ANY TABLEシステム権限の場合はこれに加え、他スキーマとしてテーブルを作成することもできます。

 システム権限を付与するには、次の構文を使用します。

GRANT 権限名 TO {ユーザー名 | PUBLIC | ロール名}
[WITH ADMIN OPTION]

 ADMIN OPTIONを使用すると、付与されたユーザーは、別のユーザーにその権限を付与できるようになります。

図1 システム権限編集画面 図1 システム権限編集画面

オブジェクト権限

 特定のオブジェクトに対する操作(他スキーマのオブジェクトへのアクセスなど)を許可するものです。

 ユーザーは、自分のスキーマへのアクセスはすべて許可されています。ほかのスキーマにアクセスするためには、ANYキーワードを含むシステム権限、もしくはオブジェクト権限が必要です。

 オブジェクト権限を付与する場合、次の構文を使用します。

GRANT {権限名 | ALL} ON オブジェクト名
TO {ユーザー名 | PUBLIC | ロール名}
[WITH GRANT OPTION]

 ALLを使用すると、対象となるオブジェクトタイプに応じたすべての権限が付与されます。GRANT OPTIONを使用すると、付与されたユーザーは、別のユーザーに対してその権限を付与することができます。

図2 オブジェクト権限編集画面 図2 オブジェクト権限編集画面

ロール

 権限をグループ化するには、ロールを使用します。ロールに権限を付与し、そのロールをユーザーに付与することで、システム権限とオブジェクト権限を個別に付与するのではなく、グループ化して管理することが可能です。

図3 ロールと権限 図3 ロールと権限

 ロールの利点として、次のようなものがあります。

  • 簡単な権限管理
    ロールは別のロールに付与することもできます。ロールを階層化することで、権限の管理を容易にできます。
  • 動的な権限管理
    セッション確立後に、直接付与されたシステム権限とオブジェクト権限を変更しても、既存セッションには変更が反映されません。ロールを使用して権限を変更すると、既存セッションにも変更が反映されます。
  • 権限の選択的な利用
    ユーザーにデフォルトロールを設定することで、ログイン時から有効なロールを限定できます。また、SET ROLEコマンドを使用して一時的に使用可能にしたり使用禁止にしたりすることもできます。

問題

問題1

Database Controlコンソールを使用してユーザーを作成し、SELECT_CATALOG_ROLEロールを選択し、DEFAULTのチェックを外しました。このロールに関する説明として正しいものを選択しなさい。

a.このユーザーのみに割り当てられた状態になっている
b.ロールの有効化にはパスワードが必要である
c.ログオン時から有効化されている状態になっている
d.ログオン後、明示的に有効にする必要がある

正解:d

解説

 前回、宿題とした問題です。

 デフォルトロールとは、ユーザーがログオンしたときから有効化されるロールのことです。デフォルトロールを使用している場合、後からユーザーに付与したロールは、明示的にデフォルトロールに追加しない限りログオン時からの有効化はされません。

 この問題にはDEFAULTチェックを外したとあるため、デフォルトロールではないことになります。従ってユーザーのログオン後、明示的に有効化する必要があります(正解d)。

 そのほかの選択肢の不正解の理由は次のとおりです。

選択肢a:ロールが特定のユーザーのみに割り当てられているかどうかは、Database Controlからでは確認できません。DBA_SYS_PRIVSディクショナリビューを使用して確認します。

選択肢b:ロールの作成、変更時にパスワードを設定することは可能です。デフォルトではパスワードは設定されません。

選択肢c:この問題でいえば、DEFAULTのチェックがされた状態であればログオン時から有効なロールになります。デフォルトロールを使用していないユーザーの場合、付与されたロールはすべてログオン時から有効になります。

問題2

新しいユーザーに対し、次の機能を与える必要があります。

  • データベースが制限付きモードでオープンしている場合でもログインできる
  • ほかのユーザーが所有する表でも検索できる

必要な権限を選択しなさい。

a.SELECT ANY TABLE権限
b.RESTRICTED SESSION権限
c.SYSOPER権限
d.CONNECTロール

正解:a、b

解説

 制限付きモードが有効化されている場合、RESTRICTED SESSION権限を付与されたユーザーのみがデータベースに接続可能です(正解b)。

 ほかのユーザーが所有する表への問い合わせを行うには、SELECT ANY TABLE権限が必要です(正解a)。ANYキーワードが含まれた権限は、ほかのユーザーが所有するものも対象とします。

 そのほかの選択肢の不正解の理由は次のとおりです。

選択肢c:SYSOPER権限は、SYSDBA権限同様、特権ユーザーとしてデータベースがオープンしていなくても接続できます。データベースの起動、停止、完全リカバリなどはできますが、DBAで始まるディクショナリビューやV$ビューへのアクセスはできません。SYSDBA権限より低い運用管理者向けの権限です。

選択肢d:CONNECTロールは、セッションの確立(CREATE SESSION)、表の作成(CREATE TABLE)などを行う権限が含まれたロールで、エンドユーザー向けロールという位置付けです。セッション制限があっても接続できるRESTRICTED SESSION権限、ほかのユーザーの表への問い合わせが可能なSELECT ANY TABLE権限などは含まれていません。

問題3

UNLIMITED TABLESPACEシステム権限に関する説明として正しいものを選択しなさい。

a.ユーザーのデフォルト表領域に対し、無制限の領域割り当て制限をユーザーに付与する
b.SYSTEM表領域とSYSAUX表領域を除く表領域に対し、無制限の領域割り当て制限をユーザーに付与する
c.すべての表領域に対し、無制限の領域割り当て制限をユーザーに付与する
d.すべての表領域から領域割り当て制限を取り消す

正解:c

解説

 UNLIMITED TABLESPACEシステム権限が付与されると、すべての表領域に対して無制限の領域割り当て(QUOTA)が行われます(正解c)。この権限は、RESOURCEロールを付与した場合にも自動的に付与されます。

 そのほかの選択肢の不正解の理由は次のとおりです。

選択肢a、b:これらの設定を行うためには、ユーザーの作成または変更時に明示的に領域割り当てを行う必要があります。

選択肢d:ユーザーに明示的に領域割り当てが行われていないのであれば、UNLIMITED TABLESPACE権限を取り消すことで対応できます。

宿題

 次回は、「スキーマオブジェクトの管理」を確認します。次の宿題を解いておいてください。

問題

遅延制約ではないPRIMARY KEY制約を定義することで自動的に設定されるものを2つ選択しなさい。

a.一意索引
b.一意ビットマップ索引
c.列に対するNOT NULL制約
d.列に対するCHECK制約

IT資格試験の模擬問題をWebベースで学習できる@IT自分戦略研究所の新サービス「@IT資格攻略」では、「Silver DBA(Oracle10g)」をはじめOracle関連の資格をテーマとして取り上げています。「無料お試し版」もありますので、記事と併せてご覧ください。



Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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