私は私のアプローチは、@のaitchnyuの回答と同様であると思います。私はしかし、メタデータ内の個々のユーザーを使用しません。 各文書にグループを作成する場合は、セキュリティ理由のために頻繁に再索引付けする必要があります。与えられた文書については
、あなたはaccess_rolesれている場合があります。このようにGROUP_1、group_3
を、GROUP_1とgroup_3は常にドキュメントの権利を保有。ただし、各ユーザーのグループを変更して、それに応じてクエリを調整することもできます。
クエリが生成されると、クエリの一部としてユーザーのグループが常に渡されます。私はGROUP_1とGROUP_2に属している場合、私のクエリは次のようになります。
q=mainquery
&fq=access_roles:group_1
&fq=access_roles:group_2
グループは動的にクエリで生成されているので、私は単純にグループからユーザーを削除し、新しいクエリが発行されたとき、彼ら削除されたグループはクエリに含まれなくなります。だから、GROUP_1からユーザーを削除すると、新しい、このようなクエリを作成します。
q=mainquery
&fq=access_roles:group_2
グループ1を必要とするすべての文書は、もはやユーザーがアクセスできなくなります。
の変更は、ドキュメントを再インデックスする必要がないため、リアルタイムで行うことができます。セキュリティ上の理由から再インデックスする必要がある唯一の理由は、特定のグループがもはやドキュメントにアクセスできないと決めた場合です。
多くの現実のシナリオでは、これは比較的一般的ではありません。人事部の文書はいつでも人事部で利用できるようになるはずですが、特定のユーザーが必ずしも人事部グループの一部であるとは限りません。
希望に役立ちます。
このアプローチでは、アクセスロールに変更があったときに再インデックスする必要がありますか?これを避ける手段はありますか? – Manny
**ドキュメント**のアクセスロールを変更する場合は、ドキュメントにアクセスできるアクセスロールの種類を変更する必要があります。各ユーザーごとに異なる**クエリ**です。 – aitchnyu
これを含むように編集 – aitchnyu