2017-01-16 1 views
1

(3.1:http://neo4j.com/docs/operations-manual/current/security/authentication-authorization/subgraph-access-control/サブグラフ公式ドキュメントにアクセス制御

「例えば、ユーザは、従業員で標識されたノードおよびタイプの報告先の関係を読み取ることができるが、書き込まないことができる」

を言われています

しかし、このページやその他の方法ではどこにも書かれていません。 "call dbms.procedures()"では、エンタープライズ版でもっと多くの機能を見ることができますが、このサブグラフコントロールの定義については何もありません。

エンタープライズ版の変更について考えていますが、それを行う。 は、誰も私を説明したり、ドキュメントがすべての権利がある

おかげ

答えて

2

私に関連する文書のアドレスを与えることができます。 管理者はグラフの 特定部分へのユーザーのアクセスと後続のアクションを制限することができる、ユーザ定義の手順カスタムロールの使用により

:最初の文に注意してください。

アプローチは、作成(または既存の使用)、彼らが行うことを許可されている何の操作を行うために、ユーザ定義プロシージャを、必要に応じてそれらのための役割を作成、書き込み権限のないユーザーのために、のようです。その後、プロシージャの権限を適切なレベルに構成し、プロシージャのロールを(以前のロールに変更してdbms.security.procedures.rolesを変更して)関連付けます。これにより、作成したプロシージャを、関連付けられたロールで実行することができます。

たとえば、書込み権限を持たないHRユーザーの場合、次の間のREPORTS_TO関係を作成または削除するプロシージャを作成できます。従業員ノード。このプロシージャは、書き込みアクセスが必要なため、mode = WRITEに設定する必要があります。これは通常、このHRユーザーが書き込み権限を持たないため実行できません。

しかし、ロールを作成し、このロールをこのユーザーに追加し、hrロールでアクセスできるように手順を設定すると、hrユーザーはこの手順を実行することができます。必要な書き込み操作を実行します。

要するに、Neo4jのサブグラフアクセス制御は、ノードまたはラベル自体には定義されておらず、Cypherでのwrite文の実行時にも適用されません。このアクセス制御は、ユーザー定義のプロシージャに固有のものであり、アクセスレベルのために通常は実行できない場合でも、特定のロール(そのロールがそのプロシージャに関連付けられている)を持つユーザーにこれらのプロシージャを実行させることができます。

EDIT

あなたのために働く可能性が最後にもう一つの事は...のNeo4jは、進行中のトランザクションにチェックし、ロジックを実行し、いくつかの基準が満たされない場合は拒否できtransaction event handlersを登録する手段を有しています。私はあなたがここでユーザーの役割を果たすことができ、おそらく特定のラベルの作家操作のトランザクションをチェックすると思います。奇妙なことは、ドキュメントの部分グラフセクションのセキュリティで参照されていないことです。私はこのアプローチを自分で試したことはありません(自分のテストを後で試してみる)ので、必要なものが実現するかどうかはわかりませんが、一見価値があります。

+0

ご回答ありがとうございます。まず、私はそれがこの手技の他の何かであると思った。 あなたが本当に後で説明したことが、私たちが期待していたものではないので、私はそれを再確認しました。 私たちは先史時代ではなく動的なものを探していました。オリエントデータベース BTWを使用してグラフレイヤーを再コーディングすることができました(Javaのコーディング/サーバーのデプロイ、サーバーの再起動など)。 、 再度、感謝します! – user954156

+0

トランザクションハンドラで可能な代替案を1つ追加しました。 – InverseFalcon