ロール

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権限を持つmanagerread_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は、manageremployeeの両方のロールとその両方の権限(ストアへのデータの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に付与することはできません。