通常,可以通過ACL List(禁止)允許與特定鍵模式匹配的鍵的特定 Redis 命令。
例如,在具有遵循某種myKeyN模式(iemyKey1 : [ myField : myVal1 ]等myKey2 : [ myField : myVal2 ])的散列的資料庫中,將用戶配置為只能獲取這些密鑰可以使用 ie 進行配置user myUser -@all hget ~myKey*,這很簡單,但非常強大和靈活。
但是,當使用RediSearch 模塊通過資料庫(命令)進行全文搜索時FT.SEARCH,會出現問題。搜索結果的關鍵模式似乎與搜索命令的 ACL 無關。
在上面的示例中,如果將規則擴展為包含搜索命令(即user myUser -@all hget ft.search ~myKey*),并且使用 建立搜索索引,則搜索FT.CREATE mySearch ON HASH PREFIX 1 myKey SCHEMA myField TEXT包含 的鍵myVal*,就像這樣FT.SEARCH mySearch "myVal",將回傳訪問控制錯誤NOPERM this user has no permissions to access one of the keys used as arguments,即使所有搜索結果都是遵循允許的鍵模式myKey*。
如何將搜索配置為僅允許特定用戶搜索特定鍵模式?
uj5u.com熱心網友回復:
在搜索了很長時間之后,在 Redis 和 RediSearch 官方檔案以及其他任何地方都沒有找到任何資訊,嘗試不同的選項讓我意識到這一點:
搜索索引名稱(不是搜索索引鍵前綴,也不是搜索結果鍵模式)在 RediSeach 命令的 ACL 規則中被視為“鍵”,盡管不是鍵名,而是索引名。為了使問題中的示例 ACL 正常作業,需要將其格式化為:user myUser -@all hget ~myKey* ft.search ~mySearch*,因為索引稱為mySearch,并且索引名稱是FT.SEARCH命令的第一個引數。
~<pattern>因此,在檔案中稱為“鍵模式”的 ACL 規則陳述句更像是“任何第一個命令引數的模式”。因此,需要為任何需要的ft.*命令定義一個單獨的“鍵模式”,它將與搜索索引名稱匹配。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/519777.html
標籤:安全雷迪斯全文搜索
