目次
Oracle NoSQL Databaseには、ロールベースの認可の機能があり、ユーザーがkvstoreロールをユーザー・アカウントに割り当てて、アクセス可能なデータを定義でき、データベース管理者はユーザー・アカウントごとに操作することができます。
ユーザーはロール付与によって、目的の権限を取得できます。ユーザー定義のロールの機能を利用すると、ユーザーがkvstoreの組込み権限を使用して新しいロールを作成でき、新しく定義したロールをユーザーに割り当てることによって新しい権限グループをユーザーに追加することができます。ユーザーに複数のロールを付与することができます。
詳細は、次を参照してください。
権限とは、1つ以上のOracle NoSQL Databaseオブジェクトに対する操作の実行を承認することです。Oracle NoSQL Databaseでは、すべての権限が2つの大きいカテゴリに分類されます。
システム権限
ユーザーが特定のアクションを実行したり、特定のタイプのデータ・オブジェクトに対してアクションを実行したりできるようになります。
オブジェクト権限
ユーザーが表など特定のオブジェクトに対して特定のアクションを実行できるようになります。
Oracle NoSQL Databaseには次のシステム権限があり、データ・アクセスから管理操作までが網羅されています。
SYSDBA
表の作成/削除/展開、索引の作成/削除、Avroスキーマの作成/展開など、Oracle NoSQL Databaseの管理を実行できます。
SYSVIEW
システム情報、構成、メタデータを表示できます。
DBVIEW
データ・オブジェクト情報を問い合せることができます。
USRVIEW
それ自体の情報を問い合せることができます。
SYSOPER
Oracle NoSQL Databaseのシステム構成、トポロジ管理、ユーザー権限/ロールの管理、診断およびメンテナンス操作を実行できます。プランの取消し、実行、中断、待機をロールが実行することを許可します。
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必須権限」を参照してください。
安全なストアを使用している場合、表はそれを作成したユーザーによって所有されます。表の所有者は、デフォルトでその表に対する権限をすべて保有します。つまり、所有者には表オブジェクトのあらゆる権限を持つということです。
安全ではないストアで作成された表と、リリース3.3以前で作成された表の場合、表の所有者はありません。
いったん表を作成すると、その所有者を変更することはできません。表を削除してから再作成した場合、削除前に付与されていた表権限はすべて、改めて付与する必要があります。
親表と子表では、所有者が同じである必要があります。ただし表に対する権限は、表の子に自動的には付与されません。たとえば、READ_TABLE
がmyTable
に付与される場合、その権限がその表の子に自動的に付与されることはありません。子表にREAD_TABLE
を付与するには、子表ごとに順番でそれぞれ権限を付与する必要があります。
表の所有者は、表に関するすべての権限を他のロールに付与でき、また他のロールから取り消すことができます。これには、GRANT
DDL文を使用します。(詳細は「ロールまたは権限の付与」を参照。)所有者以外のユーザーが特定の表を読取り/挿入/削除できるようにするには、次の2つの条件を満たす必要があります。
ユーザーが、当該の表に対する読取り/挿入/削除の権限を持っていること。
ユーザーが、その表の親表すべてに対して同じ権限または読取り権限を持っていること。
たとえば、表myTable
とその子myTable.child1
がある場合、所有者以外のユーザーは、myTable.child1
に対するデータの挿入権限(またはそれ以上)を持っていれば、myTable.child1
に対して挿入のみ可能で、myTable
に対しては読取りまたは挿入権限(あるいはその両方)を持ちます。