7.2 データベース操作のための権限付与

データベースへ接続するためには、CREATE SESSION権限が必要。

データベースからデータを取り出したり、データベースに何らかのオブジェクト(表や索引など)を作成するには、それぞれの操作を実行するために権限が必要となる。

データベース管理者は、各ユーザアカウントに対して、操作に必要な権限を付与する必要がある。

■データベースにおける権限

権限は、ユーザによるデータベース操作を制御するために必要不可欠である。権限を付与することで、各ユーザのデータベースに対する操作を1つ1つ管理・制限することができる。

■権限の種類

権限には、システム権限とオブジェクト権限の2種類がある。

権限説明
システム権限特定のデータベー操作の実行を許可するために使用する。例えば、表を作成するには、CREATE TBLEシステム権限が必要。
システム権限は常にデータベース管理者が付与する。
・CREATE SESSION
・CREATE TABLE
オブジェクト権限特定のデータベースオブジェクトへのアクセスを制御するために使用する。
・SELECT ON スキーマ名.オブジェクト名
・INSERT ON スキーマ名.オブジェクト名

■管理権限

データベースの作成やインスタンスの起動/停止の実行、バックアップ/リカバリといった、特別な管理操作を実行するための権限は、通常のシステム権限、オブジェクト権限では、付与できない。

これら特別な管理権限は、SYSDBA、SYSOPERとい特別なシステム権限によって、付与される。

権限名説明
SYSDBAシステム権限全ての権限を持つデータベース管理者用のシステム権限
SYSOPERシステム権限基本的な管理タスクを実行するユーザ用のシステム権限。インスタンスの起動/停止はできるが、データベースの作成やユーザデータの表示などはできない。

Oracleの Database 12cからは、SYSBACKUP、SYSDGおよびSYSKMシステム権限を使用できるようになった。Oracle Database 11g以前は、これらの操作を行うためにSYSDBAシステム権限を使用していた。

Oracle Database 12cで追加された管理権限

権限名用途
SYSBACKUPシステム権限バックアップおよびリカバリ操作の実行
SYSDGシステム権限Data Guard操作の実行
SYSKMシステム権限都岡的データ暗号化キーストア操作の実行

これらの管理権限を使用すれば、各領域のタスクを完了するために必要な最小限の権限を付与することができる。これらを用いれば、最も強い権限であるSYSDBAシステム権限の付与を回避でき、セキュリティ面で強化できる。

■管理者権限を使用する場合の認証方式

SYSDBAやSYSOPER、Oracle Database 12cから追加された3つの管理権限を使用した接続と一般ユーザとして接続では、認証方式に違いがある。

一般ユーザの一般的な認証は、パスワード認証であり、ユーザのパスワードは、データディクショナリに格納されている。そのため、一般ユーザは、DatabaseがOPEN状態でないとDatabaseに接続できない。

一方で、管理者権限を使用して接続する場合は、ユーザはDatabaseがオープンになっていない場合でも、インスタンスへのアクセスが可能である。

データベース管理者として、インスタンスの起動/停止や、バックアップ/リカバリをする際に、管理者権限を行使して、接続する必要がある。

管理者権限を使用した接続の認証は、データディクショナリではなく、データベースの外部で行われ、OS認証とパスワードファイル認証の2つの認証方式がある。

認証方式説明
OS認証OSのグループ(OSDBAグループ、OSOPERグループ、OSBACKUPDBAグループ、OSDGDBAグループ、OSKMDBAグループ)によって、認証を行う方式。Databaseと同じマシン上(ローカル)で、データベースを管理する場合に使用する。
パスワードファイル認証Oracleデータベース外にパスワードファイルを作成することによって、認証を行う方式。単一のリモートクライアントから複数のデータベースを管理する場合に使用する。

▼OS認証とは、OS(オペレーティングシステム)を経由して、データベースに対する認証を行う認証方式です。

特別なOSグループにメンバーシップがあると、データベースのユーザ名、パスワードを使用します。

OSで認証が行われたユーザを管理権限を持つユーザとして、認証できる。

この場合は、ユーザ名、パスワードを入力する必要がない。

▼パスワードファイル認証とは、データベースに対して、パスワードファイルを作成して、そのファイルに管理権限が付与されたユーザを登録しておき、認証を行う認証方式です。

データベースのインストール時に規定の設定でデータベースを作成した場合、DBCAによって、パスワードファイルが作成され、デフォルトでSYSが登録されている。

■管理権限を使用した接続

SYSDBAシステム権限が必要な操作を行いたい場合は、AS SYSDBAを指定して、接続します。SYSユーザには、インストール時にSYSDBAシステム権限が自動的に付与されます。

SYSDBAとして、接続する方法は、下記の通りです。

▼OS認証で接続

 CONNECT / AS SYSDBA

▼パスワードファイル認証で接続

 CONNECT ユーザ名/パスワード AS SYSDBA

SYSDBAシステム権限または、SYSOPERシステム権限で接続すると、指定したユーザ名に関連付けられているスキーマではなく、SYSDBAの場合は、SYS、SYSOPERの場合はPUBLICとして、接続が確立される。

SYSDBAとして、接続した場合は、SYSユーザとなるため、データディクショナリの表の所有者と成り、データディクショナリに対する権限は無制限となる。

そのため、データディクショナリの表を誤って変更しないように注意する必要がある。

■権限の付与と取り消し EM Expressを使用したシステム権限の付与

■EM Expressを使用したオブジェクト権限の付与

■SQL文を使用したシステム権限の付与

SQL文を使用して、オブジェクト権限を付与するには、GRANT文を使用する。

オブジェクト権限の付与

GRANT オブジェクト権限 ON オブジェクト名

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

オブジェクト権限を付与する際に、WITH GRANT OPTIONを指定すると、その権限が付与されたユーザは、第三者のユーザに同じ権限を付与できる。

■SQL文を使用した権限の取り消し

SQL文を使用して、権限を取り消すには、REVOKE文を用いる。

システム権限の取り消し

REVOKE システム権限 FROM {ユーザ名 | ロール名 | PUBLIC}

オブジェクト権限の取り消し

REVOKE {オブジェクト権限 | ALL}ON オブジェクト名

FROM {ユーザ名 | ロール名 | PUBLIC};

権限の付与を行った時に、WITH ADMIN OPTIONまたは、WITH GRANT OPTIONが指定されている場合は、取り消される権限の有効範囲が異なってくる。違いは下記の通りとなる。

○WITH ADMIN OPTIONが指定されているシステム権限の取り消し

ユーザにADMIN OPTION付きでシステム権限を付与している場合、そのユーザのシステム権限を取り消しても、そのユーザがすでに第三者に付与したシステム権限は、取り消されない。

○WITH GRANT OPTIONが指定されているオブジェクト権限の取り消し

WITH GRANT OPTIONが指定されているオブジェクト権限を取り消した場合、第三者に付与したオブジェクト権限をも同時に取り消される。

■ロールの作成および管理

システム権限やオブジェクト権限をは、種類が多く、ユーザ数が多い場合の付与作業が面倒になってくる。この場合、管理者が権限を1つにまとめることができるロールと呼ぶ機能を用いると、手間が省ける。

ロールは別のロールを含めることもできる。

ロールを使用して、権限管理を行うメリットの1つに、複数のユーザに対する複数の権限管理が用意となる。

▼定義されたロール

データベースには、いくつかの事前に定義されたロールがある。

SYSユーザやSYSTEMユーザがデータベースに接続すると、DBAロールという、WITH ADMIN OPTION付きの全てのシステム権限を提供するロールが付与される。

▼EM Expressを使用したローリの作成と変更

あわせて読みたい