Oracle NoSQL Databaseには、セキュリティ操作に関する一連の宣言型言語が用意されており、ユーザーに対してロールを作成、削除、表示、付与または取消ししたり、ロールに対して権限を付与または取消ししたりできるコマンドがあります。すべての文は、管理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]
オブジェクト権限は、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は、オプションです。
たとえば、ロール'manager'を他のロール'employee'に付与するには、次のようにします。
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