第 8章 認可の構成

目次

権限
システム権限
オブジェクト権限
表の所有権
権限の階層
ロール
システム組込みのロール
ユーザー定義のロール
ロール、権限およびユーザーの管理
ロールの作成
ロールの削除
ロールのステータス
ロールまたは権限の付与
ロールまたは権限の取消し

Oracle NoSQL Databaseには、ロールベースの認可の機能があり、ユーザーがkvstoreロールをユーザー・アカウントに割り当てて、アクセス可能なデータを定義でき、データベース管理者はユーザー・アカウントごとに操作することができます。

ユーザーはロール付与によって、目的の権限を取得できます。ユーザー定義のロールの機能を利用すると、ユーザーがkvstoreの組込み権限を使用して新しいロールを作成でき、新しく定義したロールをユーザーに割り当てることによって新しい権限グループをユーザーに追加することができます。ユーザーに複数のロールを付与することができます。

詳細は、次を参照してください。

権限

権限とは、1つ以上のOracle NoSQL Databaseオブジェクトに対する操作の実行を承認することです。Oracle NoSQL Databaseでは、すべての権限が2つの大きいカテゴリに分類されます。

  • システム権限

    ユーザーが特定のアクションを実行したり、特定のタイプのデータ・オブジェクトに対してアクションを実行したりできるようになります。

  • オブジェクト権限

    ユーザーが表など特定のオブジェクトに対して特定のアクションを実行できるようになります。

システム権限

Oracle NoSQL Databaseには次のシステム権限があり、データ・アクセスから管理操作までが網羅されています。

  • SYSDBA

    表の作成/削除/展開、索引の作成/削除、Avroスキーマの作成/展開など、Oracle NoSQL Databaseの管理を実行できます。

  • SYSVIEW

    システム情報、構成、メタデータを表示できます。

  • DBVIEW

    データ・オブジェクト情報を問い合せることができます。

  • USRVIEW

    それ自体の情報を問い合せることができます。

  • SYSOPER

    Oracle NoSQL Databaseのシステム構成、トポロジ管理、ユーザー権限/ロールの管理、診断およびメンテナンス操作を実行できます。プランの取消し、実行、中断、待機をロールが実行することを許可します。

  • READ_ANY

    あらゆる表を含め、ストア全体でキーと値を取得/反復できます。

  • WRITE_ANY

    あらゆる表を含め、ストア全体でキーと値を配置/削除できます。

  • CREATE_ANY_TABLE

    ストアに任意の表を作成できます。

  • DROP_ANY_TABLE

    ストアから任意の表を削除できます。

  • EVOLVE_ANY_TABLE

    ストアで任意の表を展開できます。

  • CREATE_ANY_INDEX

    ストアで任意の表に索引を作成できます。

  • DROP_ANY_INDEX

    ストアで任意の表から索引を削除できます。

  • READ_ANY_TABLE

    ストアで任意の表から読み取ることができます。

  • DELETE_ANY_TABLE

    ストアで任意の表からデータを削除できます。

  • INSERT_ANY_TABLE

    ストアの任意の表でデータを挿入および更新できます。

オブジェクト権限

Oracle NoSQL Databaseで定義されているオブジェクト権限は、次のとおりです。

  • READ_TABLE

    特定の表から読み取ることができます。

  • DELETE_TABLE

    ストアで特定の表からデータを削除できます。

  • INSERT_TABLE

    ストアの特定の表でデータを挿入および更新できます。

  • EVOLVE_TABLE

    特定の表を展開できます。

  • CREATE_INDEX

    特定の表で索引を作成できます。

  • DROP_INDEX

    特定の表から索引を削除できます。

ユーザーが特定のKVStore APIおよびCLIコマンドにアクセスするに必要なロールの詳細は、「KVStore必須権限」を参照してください。

表の所有権

安全なストアを使用している場合、表はそれを作成したユーザーによって所有されます。表の所有者は、デフォルトでその表に対する権限をすべて保有します。つまり、所有者には表オブジェクトのあらゆる権限を持つということです。

注意

安全ではないストアで作成された表と、リリース3.3以前で作成された表の場合、表の所有者はありません。

いったん表を作成すると、その所有者を変更することはできません。表を削除してから再作成した場合、削除前に付与されていた表権限はすべて、改めて付与する必要があります。

親表と子表では、所有者が同じである必要があります。ただし表に対する権限は、表の子に自動的には付与されません。たとえば、READ_TABLEmyTableに付与される場合、その権限がその表の子に自動的に付与されることはありません。子表にREAD_TABLEを付与するには、子表ごとに順番でそれぞれ権限を付与する必要があります。

表の所有者は、表に関するすべての権限を他のロールに付与でき、また他のロールから取り消すことができます。これには、GRANT DDL文を使用します。(詳細は「ロールまたは権限の付与」を参照。)所有者以外のユーザーが特定の表を読取り/挿入/削除できるようにするには、次の2つの条件を満たす必要があります。

  1. ユーザーが、当該の表に対する読取り/挿入/削除の権限を持っていること。

  2. ユーザーが、その表の親表すべてに対して同じ権限または読取り権限を持っていること。

たとえば、表myTableとその子myTable.child1がある場合、所有者以外のユーザーは、myTable.child1に対するデータの挿入権限(またはそれ以上)を持っていれば、myTable.child1に対して挿入のみ可能で、myTableに対しては読取りまたは挿入権限(あるいはその両方)を持ちます。

権限の階層

Oracle NoSQL Databaseでは、既存の権限の一部の間に関係があり、これを「包含」と呼んでいます。包含とは、ある権限が他の権限のスーパーセットであることを意味します。

たとえば、権限AがBを包含する(=>)と言えば、権限Bに定義されているパーミッションのすべてを権限Aが持っていることを意味します。

次の図に、Oracle NoSQL Databaseの権限における包含関係をすべてまとめました。

NoSQL Databaseにおける権限の階層

注意

包含はすべて推移的な関係を持つので、A=>BかつB=>Cであれば、A=>Cとなります。