ロール
Oracle NoSQL Databaseにおけるロールとは、そのロールに割り当てられたユーザーの職権や責任を定義する一連の権限です。Oracle NoSQL Databaseには、システム組込みの一連のロールがあります。ユーザーは、新しいロールを作成して、権限または他のロールをまとめてグループ化できます。
システム組込みのロール
次のシステム・ロールが事前定義されています。
-
readonly
READ_ANY権限を含みます。このロールを持つユーザーはKVStore内のすべてのデータの読取りができます。
-
writeonly
WRITE_ANY権限を含みます。このロールを持つユーザーはKVStore全体に対して書込みができます。
-
readwrite
READ_ANY権限とWRITE_ANY権限の両方を含みます。このロールを持つユーザーはKVStore全体に対して読取りおよび書込みの両方ができます。
-
dbadmin
SYSDBA権限を含みます。このロールを持つユーザーは、表および索引の管理などのデータ定義操作を実行できます。
-
sysadmin
SYSDBA、SYSVIEWおよびSYSOPER権限を含みます。このロールを持つユーザーは、
dbadmin
と同じ操作を実行でき、すべてのOracle NoSQL Database管理タスクを実行できます。-admin
オプション付きで作成されたユーザーには、デフォルトのpublic
ロールの他にsysadmin
ロールが付与されます。 -
writesystable
WRITE_SYSTEM_TABLE権限を含みます。このロールを持つユーザーは、必要な読取りおよび書込み権限がある場合にシステム表を変更できます。複数リージョンの表エージェントは、このロールの対象ユーザーです。一般的に、通常ユーザーはシステム表を変更できません。
-
public
USRVIEWおよびDBVIEW権限を含みます。すべてのOracle NoSQL Databaseユーザーのデフォルト・ロールであり、取消しできません。このロールを持つユーザーは、データベースにログインでき自分が所有するプランのチェックおよび操作に加えて、自分のユーザー情報を表示および変更できます。このロールのユーザーは、データ・オブジェクト情報(たとえば、表名、索引)の読取り専用ビューを取得することもできます。
ユーザー定義のロール
Oracle NoSQL Databaseでは、ユーザーがkvstoreの組込み権限を使用して新しいロールを作成したり、定義されたロールをユーザーに割り当てて新しい権限グループをユーザーに追加できます。ロールと権限の付与および取消し操作を実行するには、SYSOPER権限のあるロール、たとえばsysadminロールが必要です。
ユーザー定義のロールを管理するには、管理CLIから次のコマンドを使用します。
kv-> execute 'CREATE ROLE role_name'
kv-> execute 'DROP ROLE role_name'
ノート:
ユーザー定義ロールの名前は、大文字小文字が区別されず、既存の権限の名前やシステム組込みロールの名前と同じではありません。また、予約されているキーワードはロール名として使用できません。予約済キーワードのリストは、SQLリファレンス・ガイドの予約語を参照してください。
次の例では、ユーザー定義のロールを作成し、ユーザーにロールを付与する方法、またはユーザーからロールを取り消す方法を示します。
次のコマンドを使用して、2つのユーザーを作成します。
kv-> execute 'CREATE USER Ken IDENTIFIED BY \"password\" '
kv-> execute 'CREATE USER Kate IDENTIFIED BY \"password\" '
ノート:
- パスワードは9文字以上にする必要があります。
- パスワードには大文字を2文字以上含める必要があります。
- パスワードには特殊文字を2文字以上含める必要があります。
ここで、write_any
権限を持つmanager
とread_any
権限を持つemployee
の2つのロールを作成します。
kv-> execute 'CREATE ROLE manager'
kv-> execute 'GRANT WRITE_ANY TO manager'
kv-> execute 'CREATE ROLE employee'
kv-> execute 'GRANT READ_ANY TO employee'
次の例では、ロールmanager
(マネージャのサブロール)にロールemployee
を付与し、ユーザーKate
にロールmanager
を付与します。これにより、ユーザーKateは、manager
とemployee
の両方のロールとその両方の権限(ストアへのデータのwrite_any
権限およびデータのread_any
権限)を持ちます。
kv-> execute 'GRANT employee TO ROLE manager'
kv-> execute 'GRANT manager TO USER Kate'
ノート:
Error: User error in query: GrantRoles failed for: Cannot grant or revoke roles. Please make sure the security
feature is enabled.
詳細は、Securityconfigによるセキュリティの構成を参照してください。
ユーザーのロールのステータスを確認するには、次のコマンドを使用します。
kv-> execute 'SHOW USER Kate'
id=u2 name=Kate enabled=true type=LOCAL retain-passwd=inactive
granted-role=[public, manager]
ユーザーがロールを削除すると、このロールとそのサブロールは、このロールを持つユーザーおよびユーザー定義ロールから自動的に取り消されます。ただし、サブロールのすべてがOracle NoSQL Databaseから削除されるわけではありません。
次に例を示します。
kv-> execute 'DROP ROLE manager'
kv->execute 'SHOW USERS Kate'
id=u2 name=Kate enabled=true type=LOCAL retain-passwd=inactive
granted-role=[public]
こうすると、show roles
コマンドによって'manager'ロールを持たないロールがリストされます。
管理者がmanager
ロールを削除することを決定した場合、ユーザーKateから、managerロールとemployee
ロールが自動的に取り消されます。上の例で、Kateには読取り/書込み操作を実行できません。
ノート:
循環ロールの付与は許可されていません。たとえば、ロールemployee
が以前ロールmanager
に付与されていた場合、ロールmanager
をロールemployee
に付与することはできません。