ロール

システム組込みのロール
ユーザー定義のロール

Oracle NoSQL Databaseにおけるロールとは、そのロールに割り当てられたユーザーの職権や責任を定義する一連の権限です。Oracle NoSQL Databaseには、システム組込みの一連のロールがあります。ユーザーは、新しいロールを作成して、権限または他のロールをまとめてグループ化できます。

システム組込みのロール

次のシステム・ロールが事前定義されています。

  • readonly

    READ_ANY権限を含みます。このロールを持つユーザーはKVStore内のすべてのデータの読取りができます。

  • writeonly

    WRITE_ANY権限を含みます。このロールを持つユーザーはKVStore全体に対して書込みができます。

  • readwrite

    READ_ANY権限とWRITE_ANY権限の両方を含みます。このロールを持つユーザーはKVStore全体に対して読取りおよび書込みの両方ができます。

  • dbadmin

    SYSDBA権限を含みます。このロールを持つユーザーは、表、索引およびAvroスキーマ管理を含むデータ定義操作を実行できます。

  • sysadmin

    SYSDBA、SYSVIEWおよびSYSOPER権限を含みます。このロールを持つユーザーは、dbadminと同じ操作を実行でき、Oracle NoSQL Database管理タスクを実行できます。-adminオプション付きで作成されたユーザーには、デフォルトのpublicロールの他にsysadminロールが付与されます。

  • public

    USRVIEWおよびDBVIEW権限を含みます。すべてのOracle NoSQL Databaseユーザーのデフォルト・ロールであり、取消しできません。このロールを持つユーザーは、データベースにログインでき自分が所有するプランのチェックおよび操作に加えて、自分のユーザー情報を表示および変更できます。このロールのユーザーは、データ・オブジェクト情報(たとえば、表名、索引)の読取り専用ビューを取得することもできます。

ユーザー定義のロール

Oracle NoSQL Databaseでは、ユーザーがkvstoreの組込み権限を使用して新しいロールを作成したり、定義されたロールをユーザーに割り当てて新しい権限グループをユーザーに追加したりできます。ロールと権限の付与および取消し操作を実行するには、SYSOPER権限のあるロール、たとえばsysadminロールが必要です。

ユーザー定義のロールを管理するには、次のコマンドを使用します。

kv-> execute 'CREATE ROLE role_name' 
kv-> execute 'DROP ROLE role_name' 

注意

ユーザー定義ロールの名前は、大文字小文字が区別されず、既存の権限の名前やシステム組込みロールの名前と同じではありません。また、予約されているキーワードはロール名として使用できません。予約されたキーワードのリストについては、Oracle NoSQL Database Table APIスタート・ガイドで、表データ定義言語の概要に関する付録で、名前の制約を参照してください。

次の例では、ユーザー定義ロールを作成してそれをユーザーに対して付与/取消しする方法を示しています。

次のコマンドを使用して2つのユーザーを作成します。

kv-> execute 'CREATE USER Ken IDENTIFIED BY \”123\” '
kv-> execute 'CREATE USER Kate IDENTIFIED BY \”123\” '

次に、'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'

ロール'employee'が'manager' (managerのサブロール)に付与されます。次に、ロール・マネージャをユーザーKateに付与すると、Kateは'manager'と'employee'の両方のロールを持つようになります。こうすると、彼女はストアに対してどんなデータの読取り/書込みも可能になります。

次に例を示します。

kv-> execute 'GRANT employee TO ROLE manager'
kv-> execute 'GRANT manager TO USER Kate'

ユーザーのロールのステータスを確認するには、次のコマンドを使用します。

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 USER Kate'
id=u2 name=Kate enabled=true type=LOCAL retain-passwd=inactive
granted-role=[public]

こうすると、show rolesコマンドによって'manager'ロールを持たないロールがリストされます。

管理者が'manager'ロールの削除する場合、ロール・マネージャはユーザーKateからも、ロール'employee'からも自動的に取り消されます。上の例で、Kateには読取り/書込み操作を実行できません。

注意

ロールの循環付与は許可されません。たとえば、ロール'employee'が以前ロール'manager'に割り当てられていた場合、ロール'manager'にロール'employee'を付与することはできません。