権限
権限とは、1つ以上のOracle NoSQL Databaseオブジェクトに対する操作の実行を承認することです。Oracle NoSQL Databaseでは、すべての権限が2つの大きいカテゴリに分類されます。
-
システム権限
ユーザーが特定のアクションを実行したり、特定のタイプのデータ・オブジェクトに対してアクションを実行したりできるようになります。
-
オブジェクト権限
ユーザーが表など特定のオブジェクトに対して特定のアクションを実行できるようになります。
システム権限
Oracle NoSQL Databaseには次のシステム権限があり、データ・アクセスから管理操作までが網羅されています。
-
SYSDBA
表の作成/削除/展開、索引の作成/削除などのOracle NoSQL Database管理を実行できます。
-
SYSVIEW
システム情報、構成、メタデータを表示できます。
-
DBVIEW
データ・オブジェクト情報を問い合せることができます。オブジェクトは、Oracle NoSQL Databaseではリソースとして定義され、アクセス制御の対象になります。現在、表および索引の情報を問い合せるために、この権限を持つことができます。
-
USRVIEW
独自のユーザー情報、発行したコマンドのステータスなど、ユーザー自身の情報を問い合せることができ、Oracle NoSQL Database Javaダイレクト・ドライバを使用して現在のトポロジ情報にアクセスできます。
-
SYSOPER
Oracle NoSQL Databaseのシステム構成、トポロジ管理、ユーザー権限/ロールの管理、診断およびメンテナンス操作を実行できます。プランの取消し、実行、中断、待機をロールが実行することを許可します。
-
WRITE_SYSTEM_TABLE
表に対して必要な読取りおよび書込み権限が付与されている場合は、システム表を変更できます。複数リージョンのエージェントは、この権限の対象ユーザーです。
Load
プログラムを使用してレコードをセキュアなデータ・ストアにリストアする必要がある場合、WRITE_SYSTEM_TABLE
権限が必要です。詳細は、「Loadプログラムの使用」を参照してください。一般的に、通常ユーザーはシステム表を変更できません。 -
READ_ANY
あらゆる表を含め、ストア全体でキーと値を取得/反復できます。
-
WRITE_ANY
あらゆる表を含め、ストア全体でキーと値を配置/削除できます。
-
CREATE_ANY_TABLE
ストアに任意の表を作成できます。
-
DROP_ANY_TABLE
ストアから任意の表を削除できます。
-
EVOLVE_ANY_TABLE
ストアで任意の表を展開できます。
-
CREATE_ANY_INDEX
ストアで任意の表に索引を作成できます。
-
DROP_ANY_INDEX
ストアで任意の表から索引を削除できます。
-
READ_ANY_TABLE
ストアで任意の表から読み取ることができます。
-
DELETE_ANY_TABLE
ストアで任意の表からデータを削除できます。
-
INSERT_ANY_TABLE
ストアの任意の表でデータを挿入および更新できます。
オブジェクト権限
Oracle NoSQL Databaseで定義されているオブジェクト権限は、次のとおりです。
-
READ_TABLE
特定の表から読み取ることができます。
-
DELETE_TABLE
特定の表からデータを削除できます。
-
INSERT_TABLE
特定の表でデータを挿入および更新できます。
-
EVOLVE_TABLE
特定の表を展開できます。
-
CREATE_INDEX
特定の表で索引を作成できます。
-
DROP_INDEX
特定の表から索引を削除できます。
ユーザーが特定のKVStore APIおよびCLIコマンドにアクセスするに必要なロールの詳細は、「KVStore必須権限」を参照してください。
ネームスペースに対してOracle NoSQL Databaseで定義されているオブジェクト権限は、次のとおりです:
-
CREATE_ANY_NAMESPACE
任意のネームスペースを作成できます。新しいネームスペースを作成する場合、ユーザーはそれぞれの新しいネームスペースでREAD_IN_NAMESPACE、INSERT_IN_NAMESPACE、DELETE_IN_NAMESPACEも使用できます。
-
DROP_ANY_NAMESPACE
任意のネームスペースを削除できます。
-
CREATE_TABLE_IN_NAMESPACE
特定のネームスペースで表を作成できます。
-
DROP_TABLE_IN_NAMESPACE
特定のネームスペースで表を削除できます。
-
EVOLVE_TABLE_IN_NAMESPACE
特定のネームスペースで表を展開できます。
-
CREATE_INDEX_IN_NAMESPACE
特定のネームスペースに索引を作成できます。
-
DROP_INDEX_IN_NAMESPACE
特定のネームスペースで索引を削除できます。
-
READ_IN_NAMESPACE
特定のネームスペースの項目を読み取ることができます。
-
INSERT_IN_NAMESPACE
特定のネームスペースに項目を挿入できます。
-
DELETE_IN_NAMESPACE
特定のネームスペースの項目を削除できます。
-
MODIFY_IN_NAMESPACE
特定のネームスペースに対するすべてのDDL権限を持ちます。
表の所有権
安全なストアを使用している場合、表はそれを作成したユーザーによって所有されます。表の所有者は、デフォルトでその表に対する権限をすべて保有します。つまり、所有者には表オブジェクトのあらゆる権限を持つということです。
ノート:
安全ではないストアで作成された表と、リリース3.3以前で作成された表の場合、表の所有者はありません。
いったん表を作成すると、その所有者を変更することはできません。表を削除してから再作成した場合、削除前に付与されていた表権限はすべて、改めて付与する必要があります。
親表と子表では、所有者が同じである必要があります。ただし表に対する権限は、表の子に自動的には付与されません。たとえば、READ_TABLE
がmyTable
に付与される場合、その権限がその表の子に自動的に付与されることはありません。子表にREAD_TABLE
を付与するには、子表ごとに順番でそれぞれ権限を付与する必要があります。
表の所有者は、表に関するすべての権限を他のロールに付与でき、また他のロールから取り消すことができます。これには、GRANT
DDL文を使用します。(詳細は「ロールまたは権限の付与」を参照。)所有者以外のユーザーが特定の表を読取り/挿入/削除できるようにするには、次の2つの条件を満たす必要があります。
-
ユーザーが、当該の表に対する読取り/挿入/削除の権限を持っていること。
-
ユーザーが、その表の親表すべてに対して同じ権限または読取り権限を持っていること。
たとえば、表myTable
とその子myTable.child1
がある場合、所有者以外のユーザーは、myTable.child1
に対するデータの挿入権限(またはそれ以上)を持っていれば、myTable.child1
に対して挿入のみ可能で、myTable
に対しては読取りまたは挿入権限(あるいはその両方)を持ちます。
ストア内に1つ以上のネームスペースがある場合は、ネームスペースに認可権限を付与すると、ネームスペースとネームスペース内の表の両方にアクセスできるユーザーを決定できます。詳細は、「ネームスペースへの認可アクセス権の付与」を参照してください。
権限の階層
Oracle NoSQL Databaseでは、既存の権限の一部の間に関係があり、これを包含と呼んでいます。包含とは、ある権限が他の権限のスーパーセットであることを意味します。
たとえば、権限AがBを包含する(=>)と言えば、権限Bに定義されているパーミッションのすべてを権限Aが持っていることを意味します。
次の図に、Oracle NoSQL Databaseの権限における包含関係をすべてまとめました。

ノート:
包含はすべて推移的な関係を持つので、A=>BかつB=>Cであれば、A=>Cとなります。
- READ_ANY
- READ_ANY_TABLE
- READ_IN_NAMESPACE ns1
- READ_TABLE ns1:t1