ロール、権限およびユーザーの管理

Oracle NoSQL Databaseでは、ロールの作成、削除、表示、ユーザーへのロールの付与、ユーザーからのロールの取消し、ロールへの権限の付与、ロールからの権限の取消しを行うコマンドなど、一連のセキュリティ操作が提供されます。これらのすべての文は、SQL CLIまたは管理CLIのexecuteコマンド、あるいはKVStore.execute()やKVStore.executeSync()のAPIを介して実行できます。

ロールの作成

CREATE ROLE role_name 

ここで、role_nameはロールの名前であり、大/小文字は無視されます。

次に例を示します。

kv-> execute 'CREATE ROLE administrator'
Statement completed successfully 

ロールの削除

DROP ROLE role_name 

ここで、role_nameはロールの名前です。大文字小文字は無視されます。

次に例を示します。

kv-> execute 'DROP ROLE administrator'
Statement completed successfully 

ロールのステータス

SHOW [AS JSON] ROLES | ROLE role_name 

ここで、role_nameはロールの名前です。

'SHOW ROLES'を実行して、使用可能なロール名をすべてリストするか、ロール名が指定されている場合にはロールの詳細を表示します。

次に例を示します。

kv->execute 'SHOW ROLES'
role:name=dbadmin
role:name=public
role:name=readonly
role:name=readwrite
role:name=sysadmin
role:name=writeonly 

ロールの詳細情報は、次のようにロール名を指定して表示できます。

kv->execute 'SHOW ROLE dbadmin'
name=dbadmin assignable=true readonly=true
granted-privileges=[SYSDBA, DBVIEW] 

ノート:

assignableは、このロールをユーザーに対して明示的に付与または取消しできることを意味します。

オブジェクト権限は、PRIVILEGE(obj)の形で表示されます。たとえば、'emp'表に対するREAD_TABLEの権限は次のように表示されます。

kv->execute 'CREATE ROLE emptablereader'
kv->execute 'GRANT READ_TABLE ON emp TO emptablereader'
kv->execute 'SHOW ROLE emptablereader'
name=emptablereader assignable=true readonly=false
granted-privileges=[READ_TABLE(emp)] 

ロールまたは権限の付与

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は、オプションです。

たとえば、ロールmanageremployeeを付与するなど、より多くの権限を持つロールに、より少ない権限を持つロールを付与できます。


kv-> execute 'GRANT EMPLOYEE TO ROLE manager'
kv-> execute 'GRANT MANAGER TO USER Kate'
Statement completed successfully  

同じ役割を反対方向で付与しようとすると、エラーが発生します。


kv-> execute 'GRANT employee to ROLE manager' 

ロール・マネージャの循環定義になってしまうため、「Could not recursively grant role employee to role manager」のエラーが表示されます。

これでユーザーは、定義されているロールに新しい権限を追加できます。次に例を示します。

kv-> execute 'GRANT READ_ANY TO Kate' 

たとえば、表T1に対する読取り権限をKateに付与するには、次のようにします。

kv-> execute 'GRANT READ_TABLE on T1 TO Kate' 

「表の所有権」で、表に関する権限を付与する際のノートも参照してください。

ロールまたは権限の取消し

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は、オプションです。

たとえば、ロール'employee'をロール'manager'から取り消すには、次のようにします。

kv-> execute 'REVOKE employee FROM ROLE manager'
Statement completed successfully 

ロール'manager'をユーザー'Kate'から取り消す場合は、次のようにします。

kv-> execute 'REVOKE manager FROM USER Kate'
Statement completed successfully