ネームスペース管理

ネームスペースは表のグループを定義するもので、その中ですべての表名を一意に識別する必要があります。ネームスペースを使用すると、表権限の管理をグループ操作として実行できます。

ネームスペース解決

ネームスペースに認可権限を付与すると、ネームスペースとネームスペース内の表の両方にアクセスできるユーザーを決定できます。

SQL文に含まれるtable_nameの表を解決するには、次のルールが適用されます。
    • table_nameにネームスペース名が含まれている場合、修飾表名によって表が一意に識別されるため、解決は必要ありません。
    • ネームスペース名を明示的に指定しなかった場合、使用されるネームスペースは、TableAPIのexecuteSync()execute()またはprepare()メソッドへの入力として指定される、ExecuteOptionsインスタンスに含まれるネームスペースです。
    • ExecuteOptionsでネームスペースが指定されていない場合、デフォルトのsysdefaultネームスペースが使用されます。

ExecuteOptionsで異なるネームスペースを使用すると、個別の同様の表で同じ問合せを実行できます。

ネームスペースの管理

SHOW NAMESPACES

SHOW NAMESPACES文は、システムのネームスペースのリストを提供します。出力をJSON形式にする場合は、AS JSONを指定できます。

例1: 次の文は、システムに存在するネームスペースをリストします。
SHOW NAMESPACES
出力:
namespaces
  sysdefault
例2: 次の文は、システムに存在するネームスペースをJSON形式でリストします。
SHOW AS JSON NAMESPACES
出力:
{"namespaces" : ["sysdefault"]}

DROP NAMESPACE

DROP NAMESPACE文を使用して、ネームスペースを削除できます。

IF EXISTSはオプションの句です。この句を指定し、同じ名前のネームスペースが存在しない場合、エラーは生成されません。この句を指定せず、同じ名前のネームスペースが存在しない場合は、ネームスペースが存在しないことを示すエラーが生成されます。

CASCADEは、表とその索引をこのネームスペース内で削除するかどうかを指定できるオプションの句です。この句を指定し、ネームスペースに表が含まれている場合は、このネームスペース内のすべての表とともにネームスペースが削除されます。この句を指定せず、ネームスペースに表が含まれている場合は、ネームスペースが空でないことを示すエラーが生成されます。

次の文は、ns1という名前のネームスペースを削除します。
DROP NAMESPACE IF EXISTS ns1 CASCADE

ネームスペース・スコープ指定権限

1つ以上のネームスペースをストアに追加したり、ストア内に表を作成したり、ユーザーにネームスペースや表にアクセスする権限を付与できます。ロールおよびユーザーの管理に関する一般的な情報は、セキュリティ・ガイドロールまたは権限の付与を参照してください。

Oracle NoSQL Database権限間の関係の詳細は、セキュリティ・ガイド権限階層を参照してください。

ネームスペースへの認可アクセス権の付与

ネームスペースおよび表にアクセスするためのユーザーまたはロールの権限を管理できます。開発者および他のユーザーに付与される適用可能な権限は次のとおりです:

表3-1 ネームスペースの権限

権限 説明

CREATE_ANY_NAMESPACE

DROP_ANY_NAMESPACE

ネームスペースを作成または削除する権限をユーザーまたはロールに付与します。
GRANT CREATE_ANY_NAMESPACE TO <User|Role>;
GRANT DROP_ANY_NAMESPACE TO <User|Role>;

CREATE_TABLE_IN_NAMESPACE

DROP_TABLE_IN_NAMESPACE

EVOLVE_TABLE_IN_NAMESPACE

特定のネームスペースの表を作成、削除または展開するための権限をユーザーまたはロールに付与します。表を展開して、表定義を更新したり、フィールドを追加または削除したり、デフォルト値などのフィールド・プロパティを変更できます。特定の種類の列(IDENTITY列など)を追加して、値を自動的に増やすこともできます。すでにストアに存在する表のみが表のエボリューションの候補となります。詳細は、表の変更を参照してください。
GRANT CREATE_TABLE_IN_NAMESPACE ON NAMESPACE namespace_name TO <User|Role>; 
GRANT DROP_TABLE_IN_NAMESPACE ON NAMESPACE  namespace_name TO <User|Role>;
GRANT EVOLVE_TABLE_IN_NAMESPACE ON NAMESPACE namespace_name TO <User|Role>user_role;

CREATE_INDEX_IN_NAMESPACE

DROP_INDEX_IN_NAMESPACE

特定のネームスペースの索引を作成または削除するための権限をユーザーまたはロールに付与します。
GRANT CREATE_INDEX_IN_NAMESPACE ON NAMESPACE namespace_name TO <User|Role>; 
GRANT DROP_INDEX_IN_NAMESPACE ON NAMESPACE namespace_name TO <User|Role>;

READ_IN_NAMESPACE

INSERT_IN_NAMESPACE

DELETE_IN_NAMESPACE

特定のネームスペースで項目を読取り、挿入または削除するロールに権限を付与します。
GRANT READ_IN_NAMESPACE ON NAMESPACE namespace_name TO <User|Role>; 
GRANT INSERT_IN_NAMESPACE ON NAMESPACE  namespace_name TO <User|Role>;
GRANT DELETE_IN_NAMESPACE ON NAMESPACE namespace_name TO <User|Role>;

MODIFY_IN_NAMESPACE

特定のネームスペースのすべてのDDL権限に対する権限をユーザーまたはロールに付与または取り消すためのヘルパー・ラベル。
GRANT MODIFY_IN_NAMESPACE ON NAMESPACE namespace_name TO <User|Role>; 
REVOKE MODIFY_IN_NAMESPACE ON NAMESPACE namespace_name TO <User|Role>;

ネームスペースに対する権限の付与

ネームスペースに対する権限をロールまたはユーザーに付与できます。ネームスペースに対する権限を付与するための構文を次に示します:
GRANT {Namespace-scoped privileges} ON NAMESPACE namespace_name TO <User|Role>
Namespace-scoped privileges ::= namespace_privilege [, namespace_privilege]

ここで、

  • namespace_privilege

    ユーザーまたはロールに付与できるネームスペース権限。適用可能な権限の詳細は、「ネームスペースの権限」表の権限列を参照してください。

  • namespace_name

    ユーザーがアクセスするネームスペース。

  • <User|Role>

    KVStoreユーザーの名前またはユーザーのロール。

たとえば、ネームスペース内のすべての表に対する読取りアクセス権をユーザーに付与できます。
Example:

GRANT READ_IN_NAMESPACE ON NAMESPACE ns1 TO Kate;

ここで、ns1はネームスペースで、Kateはユーザーです。

ノート:

ラベルMODIFY_IN_NAMESPACEは、特定のネームスペースに対するすべてのDDL権限に対する権限をユーザーまたはロールに付与または取り消すためのヘルパーとして使用できます。

ネームスペースに対する権限の取消し

ロールまたはユーザーからネームスペースに対する権限を取り消すことができます。ネームスペースに対する権限を取り消すための構文を次に示します。
REVOKE {Namespace-scoped privileges} ON NAMESPACE namespace_name FROM <User|Role>
Namespace-scoped privileges ::= namespace_privilege [, namespace_privilege]

ここで、

  • namespace_privilege

    ユーザーまたはロールから取り消すことができるネームスペース権限。適用可能な権限の詳細は、「ネームスペースの権限」表の権限列を参照してください。

  • namespace_name

    ユーザーがアクセスするネームスペース。

  • <User|Role>

    KVStoreユーザーの名前またはユーザーのロール。

たとえば、ネームスペース内のすべての表のユーザーから読取りアクセス権を取り消すことができます。
Example:

REVOKE READ_IN_NAMESPACE ON NAMESPACE ns1 FROM Kate;

ここで、ns1はネームスペースで、Kateはユーザーです。

ノート:

ラベルMODIFY_IN_NAMESPACEは、特定のネームスペースに対するすべてのDDL権限に対する権限をユーザーまたはロールに付与または取り消すためのヘルパーとして使用できます。
次に例を示します:
  1. ネームスペースおよび表を作成します。
  2. ネームスペース内に他の新しい表を作成する権限を取り消しますが、表の削除を許可します。
Example: Namespace Scoped Privileges

CREATE NAMESPACE IF NOT EXISTS ns1; 
GRANT MODIFY_IN_NAMESPACE ON NAMESPACE ns1 TO usersRole; 
CREATE TABLE ns1:t (id INTEGER, name STRING, primary key (id)); 
INSERT INTO ns1:t VALUES (1, 'Smith'); 
SELECT * FROM ns1:t; 
REVOKE CREATE_TABLE_IN_NAMESPACE ON NAMESPACE ns1 FROM usersRole; 
DROP NAMESPACE ns1 CASCADE;

ノート:

前述のコマンドをすべてsqlスクリプトとして保存し、1つのコマンドで実行できます。前述のコマンドのいずれかをSQLプロンプトの外部で実行する場合は、文末のセミコロンを削除します。