Orientdb-security

提供:Dev Guides
移動先:案内検索

OrientDB-セキュリティ

RDBMSと同様に、OrientDBは、よく知られた概念、ユーザー、および役割に基づいたセキュリティも提供します。 各データベースには独自のユーザーがあり、各ユーザーには1つ以上のロールがあります。 ロールは、作業モードと一連の権限の組み合わせです。

ユーザー

デフォルトでは、OrientDBはサーバー内のすべてのデータベースに対して3人の異なるユーザーを維持します-

  • Admin -このユーザーは、データベースのすべての機能に制限なくアクセスできます。
  • リーダー-このユーザーは読み取り専用ユーザーです。 リーダーはデータベース内のレコードを照会できますが、それらを変更または削除することはできません。 ユーザーやロール自体などの内部情報にはアクセスできません。
  • Writer -このユーザーはユーザーリーダーと同じですが、レコードを作成、更新、削除することもできます。

ユーザーとの連携

データベースに接続している場合、 OUser クラスで SELECT クエリを使用して、データベース上の現在のユーザーにクエリを実行できます。

orientdb> SELECT RID, name, status FROM OUser

上記のクエリが正常に実行されると、次の出力が得られます。

---+--------+--------+--------
#  | @CLASS | name   | status
---+--------+--------+--------
0  | null   | admin  | ACTIVE
1  | null   | reader | ACTIVE
2  | null   | writer | ACTIVE
---+--------+--------+--------
3 item(s) found. Query executed in 0.005 sec(s).

新しいユーザーを作成する

新しいユーザーを作成するには、INSERTコマンドを使用します。 その際、ステータスをACTIVEに設定し、有効なロールを付与する必要があります。

orientdb> INSERT INTO OUser SET
               name = 'jay',
               password = 'JaY',
               status = 'ACTIVE',
               roles = (SELECT FROM ORole WHERE name = 'reader')

ユーザーの更新

UPDATEステートメントを使用して、ユーザーの名前を変更できます。

orientdb> UPDATE OUser SET name = 'jay' WHERE name = 'reader'

同様に、ユーザーのパスワードを変更することもできます。

orientdb> UPDATE OUser SET password = 'hello' WHERE name = 'reader'

OrientDBはパスワードをハッシュ形式で保存します。 トリガー OUserTrigger は、レコードを保存する前にパスワードを透過的に暗号化します。

ユーザーを無効にする

ユーザーを無効にするには、UPDATEを使用して、ステータスをACTIVEからSUSPENDEDに切り替えます。 たとえば、管理者を除くすべてのユーザーを無効にする場合は、次のコマンドを使用します-

orientdb> UPDATE OUser SET status = 'SUSPENDED' WHERE name <> 'admin'

役割

ロールは、ユーザーがリソースに対して実行できる操作を決定します。 主に、この決定は作業モードとルールに依存します。 ルール自体の動作は、動作モードに応じて異なります。

ロールの使用

データベースに接続している場合、 ORole クラスで SELECT クエリを使用して、データベースの現在のロールをクエリできます。

orientdb> SELECT RID, mode, name, rules FROM ORole

上記のクエリが正常に実行されると、次の出力が得られます。

--+------+----+--------+-------------------------------------------------------
# |@CLASS|mode| name   | rules
--+------+----+--------+-------------------------------------------------------
0 | null | 1  | admin  | {database.bypassRestricted = 15}
1 | null | 0  | reader | {database.cluster.internal = 2, database.cluster.orole = 0...
2 | null | 0  | writer | {database.cluster.internal = 2, database.cluster.orole = 0...
--+------+----+--------+-------------------------------------------------------
3 item(s) found.  Query executed in 0.002 sec(s).

新しい役割の作成

新しいロールを作成するには、INSERTステートメントを使用します。

orientdb> INSERT INTO ORole SET name = 'developer', mode = 0

モードの使用

特定のロールに属するユーザーがデータベースで実行できることをルールが決定する場合、作業モードはOrientDBがこれらのルールを解釈する方法を決定します。 1と0で指定された2種類の作業モードがあります。

  • (ルール以外のすべてを許可)-デフォルトでは、スーパーユーザーモードです。 ルールを使用して、これに対する例外を指定します。 OrientDBが要求されたリソースのルールを見つけられない場合、ユーザーは操作を実行できます。 このモードは、主にパワーユーザーと管理者に使用してください。 デフォルトのロール管理者はデフォルトでこのモードを使用し、例外ルールはありません。 データベースには1として書き込まれます。
  • * Deny All But But(Rules)*-デフォルトでは、このモードでは何も許可されません。 ルールを使用して、これに対する例外を指定します。 OrientDBが要求されたリソースのルールを見つけると、ユーザーは操作を実行できます。 このモードをすべてのクラシックユーザーのデフォルトとして使用します。 デフォルトの役割であるリーダーとライターは、このモードを使用します。 データベースには0として書き込まれます。