elasticsearchで特定のユーザーが特定のドキュメントを参照できないようにするセキュリティフィルタを作成しようとしています。例として、文書に「ABC:123」と「ABC:XYZ」が含まれている場合、ユーザーはその文書を見るためにプロファイルにそれらの両方を持たなければなりません。私達は口ひげのテンプレートを使ってこれを作成しています。私の最初の試みは、これらの行に沿ったものでした:elasticsearchでセキュリティフィルタを作成する
"bool": {
"filter": {
"bool": {
"minimum_should_match": 1,
"should": {
"bool": [{
"must_not": {
"prefix": {
"controlSet": "ABC:"
}
}
},{
"must": {
"terms": {
"controlSet": ["ABC:123","ABC:XYZ"]
}
}
}]
}
}
}
}
しかし、私はすぐに、1つのコントロールを持つユーザーが複数のドキュメントを表示できるようになりました。ドキュメントには、ユーザーが一致させる必要があるコントロールのサブセットが必要です。したがって、ユーザーに「ABC:XYZ」がある場合にのみ、「ABC:XYZ」が含まれていても、「ABC:123」の文書を見ることができません。
これを達成する方法はありますか?私は行方不明ですか?現在、私たちはシステム内の制御を列挙し、それらをmust_notに追加しますが、制御を定期的に変更して、そのリストを手動で維持しないでください。あなたの文書を想定し
問題は '' controlSet ":[" ABC:123 "]'も一致します。私は、ユーザーがドキュメントにあるコントロールのスーパーセットを持っていることを強制するいくつかの方法が必要です。 – Derek