ロール、権限およびユーザーの管理
Oracle NoSQL Databaseでは、ロールの作成、削除、表示、ユーザーへのロールの付与、ユーザーからのロールの取消し、ロールへの権限の付与、ロールからの権限の取消しを行うコマンドなど、一連のセキュリティ操作が提供されます。これらの文はすべて、SQL CLIを使用して実行できます。
SQL CLIを起動するには、SQLシェルの起動を参照してください。
ロールの作成
CREATE ROLE role_name ここで、role_nameはロールの名前であり、大/小文字は無視されます。
たとえば、
sql->create ROLE administrator;ロールのステータス
SHOW [AS JSON] ROLES | ROLE role_name ここで、role_nameはロールの名前です。
'SHOW ROLES'を実行して、使用可能なロール名をすべてリストするか、ロール名が指定されている場合にはロールの詳細を表示します。
たとえば、
sql->show ROLES;
role:name=dbadmin
role:name=public
role:name=readonly
role:name=readwrite
role:name=sysadmin
role:name=writeonly ロールの詳細情報は、次のようにロール名を指定して表示できます。
sql->show AS JSON ROLE dbadmin;
{"name":"dbadmin", "assignable":"true", "readonly":"true","granted-privileges":["SYSDBA","DBVIEW"],"granted-roles":[]} ノート:
assignableは、このロールをユーザーに対して明示的に付与または取消しできることを意味します。
オブジェクト権限は、PRIVILEGE(obj)の形で表示されます。たとえば、'emp'表に対するREAD_TABLEの権限は次のように表示されます。
sql->create ROLE emptablereader;
sql->grant READ_TABLE ON emp to emptablereader;
sql->show ROLE emptablereader
RoleInstance[ name=emptablereader assignable=true readonly=false granted-privileges=[READ_TABLE(emptable)]]ロールまたは権限の付与
GRANT { grant_roles | grant_system_privileges
| grant_object_privileges }
grant_roles ::= role [, role]... TO { USER user | ROLE role }
grant_system_privileges ::=
{system_privilege | ALL PRIVILEGES}
[,{system_privilege | ALL PRIVILEGES}]...
TO role
grant_object_privileges ::=
{object_privileges| ALL [PRIVILEGES]}
[,{object_privileges| ALL [PRIVILEGES]}]...
ON object TO role 説明:
-
role付与されるロール。
-
user権限が付与されるユーザー。
-
system_privileges付与されるシステム権限。
-
object_privileges付与されるオブジェクト権限。
-
object権限が付与されるオブジェクト。現在は、表に対する権限のみサポートされています。
-
ALL PRIVILEGESすべてのシステム権限を付与します。これはすべてのシステム権限を指定する際のショートカットです。
-
ALL [PRIVILEGES]オブジェクトに定義されているすべてのオブジェクト権限を付与します。セマンティック的に明確にするためのキーワードPRIVILEGESは、オプションです。
たとえば、ロールmanagerにemployeeを付与するなど、より多くの権限を持つロールに、より少ない権限を持つロールを付与できます。
sql->grant employee to ROLE manager; ロールmanagerをユーザーKateに次のように付与できます:
sql->grant manager to USER Kate;同じ役割を反対方向で付与しようとすると、ロール・マネージャの循環定義につながるため、エラーが発生します。
sql->grant manager to ROLE employee;
Error handling command grant manager to ROLE employee: Error: User error in query: GrantRoles failed for: Could not complete grant, circular role grant detected
これで、定義されているロールに新しい権限を追加できます。たとえば、システム権限READ_ANYをmanagerに付与するには:
sql->grant READ_ANY to manager; 表T1に対する読取り権限をmanagerに付与するには:
sql->grant READ_TABLE ON T1 to manager;表権限の付与の詳細は、「表の所有権」を参照してください。
ロールまたは権限の取消し
REVOKE { revoke_roles | revoke_system_privileges
| revoke_object_privileges}
revoke_roles ::= role [, role]... FROM { USER user | ROLE role }
revoke_system_privileges ::=
{ system_privilege | ALL PRIVILEGES }
[, {system_privilege | ALL PRIVILEGES}]...
FROM role
revoke_object_privileges ::=
{ object_privileges| ALL [PRIVILEGES] }
[, { object_privileges | ALL [PRIVILEGES] }]...
ON object FROM role 説明:
-
role取り消すロール。
-
user権限を取り消す対象のユーザー。
-
system_privileges取り消すシステム権限。
-
object_privileges取り消すオブジェクト権限。
-
object権限を取り消す対象の表。現在サポートされているオブジェクトは表のみです。
-
ALL PRIVILEGES対象のユーザーに付与されているシステム権限をすべて取り消します。
-
ALL [PRIVILEGES]オブジェクトに対して定義されているオブジェクト権限をすべて、対象から取り消します。セマンティック的に明確にするためのキーワードPRIVILEGESは、オプションです。
たとえば、ロールmanagerからロールemployeeを取り消すには:
sql->revoke employee from ROLE manager; ユーザーKateからロールmanagerを取り消すには:
sql->revoke manager from USER Kate;ネームスペースへの認可アクセス権の付与
表9-1 ネームスペースの権限
| 権限 | 説明 |
|---|---|
|
|
ネームスペースを作成または削除する権限をロールに付与します。
|
|
|
特定のネームスペースの表を作成、削除または展開するための権限をユーザーまたはロールに付与します。表を展開して、表定義を更新したり、フィールドを追加または削除したり、デフォルト値などのフィールド・プロパティを変更できます。特定の種類の列(IDENTITY列など)を追加して、値を自動的に増やすこともできます。すでにストアに存在する表のみが表のエボリューションの候補となります。詳細は、表の変更を参照してください。
|
|
|
特定のネームスペースの索引を作成または削除するための権限をユーザーまたはロールに付与します。
|
|
|
特定のネームスペースで項目を読取り、挿入または削除するユーザーまたはロールに権限を付与します。
|
|
|
特定のネームスペースのすべてのDDL権限に対する権限をユーザーまたはロールに付与または取り消すためのヘルパー・ラベル。
|
ネームスペースに対する権限の付与
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ユーザーの名前またはユーザーのロール。
GRANT READ_IN_NAMESPACE ON NAMESPACE ns1 TO 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ユーザーの名前またはユーザーのロール。
REVOKE READ_IN_NAMESPACE ON NAMESPACE ns1 FROM Kateノート:
ラベルMODIFY_IN_NAMESPACEは、特定のネームスペースに対するすべてのDDL権限に対する権限をユーザーまたはロールに付与または取り消すためのヘルパーとして使用できます。次の例は、ネームスペースに対する権限をユーザーまたはロールに付与および取り消す一連のコマンドを示しています:
CREATE NAMESPACE IF NOT EXISTS ns1;
GRANT MODIFY_IN_NAMESPACE ON NAMESPACE ns1 TO <User|Role>;
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 <User|Role>;
DROP NAMESPACE ns1 CASCADE;ノート:
前述のコマンドをすべてsqlスクリプトとして保存し、1つのコマンドで実行できます。