我需要爲他人創建一個Postgres用戶來查詢我的數據庫,但由於它是敏感數據,他們不能讓他們看到列的值,他們應該只能看到計數。然而,他們需要能夠確定where語句的許多不同可能的排列組合。有沒有辦法做到這一點?只允許COUNT來Postgres角色?
1
A
回答
0
我認爲唯一足夠靈活的處理這種情況將是SECURITY DEFINER
function。基本上,這些函數中的查詢的行爲就好像它們是由函數的所有者運行的,而不是函數的調用者,允許調用者執行他們通常不會(以受控方式)許可的事情。
當然,你需要小心你在那裏運行什麼,你需要格外包含任何用戶輸入您的查詢,這將會使事情變得困難,如果你希望來電者指定當偏執他們自己的WHERE
條款。用戶定義的函數可能沒有問題,因爲像WHERE my_func(private_col)
這樣的約束可以簡單地將其輸入寫入某個表中。但是,如果呼叫者設法偷偷摸摸地對自己的=
運營商定義,那麼和WHERE private_col = 1
一樣無害的事情可能同樣糟糕;編寫這樣的函數時一定要lock down your search path。
所有這一切,即使你有一個完美的解決方案,這個設置可能不像看起來那麼安全。您可能沒有直接暴露這些值,但是您仍然會暴露有關這些值的信息,並且在幾次查詢過程中,這足以重建值本身。例如:
SELECT COUNT(*) FROM private_data WHERE creditcard >= '00000000' AND creditcard < '50000000';
SELECT COUNT(*) FROM private_data WHERE creditcard >= '25000000' AND creditcard < '50000000';
SELECT COUNT(*) FROM private_data WHERE creditcard >= '25000000' AND creditcard < '37500000';
...
這只是需要54個步驟才能收斂到一個單一的數字。即使是100個字符的字符串,通常也只需要幾百個查詢就可以查詢。
相關問題
- 1. 只允許postgres用戶列表角色
- 2. Sitecore的允許角色來發布僅
- 3. postgres regexp_replace只允許a-z和A-Z
- 4. Postgres SQL按日期過濾時,允許COUNT(*)爲零
- 5. 只允許特定用戶角色登錄WordPress網站
- 6. COUNT(*)允許組由空
- 7. 允許在cas中的特定角色
- 8. 允許用戶更改角色
- 9. 角色允許非常量值
- 10. 允許角色不起作用
- 11. Sitecore:允許用戶/角色發佈
- 12. PostgreSQL:角色不允許登錄
- 13. 如何通過preg_replace()中的範圍來允許'okina角色?
- 14. postgres角色來訪問所有模式
- 15. Postgres允許json []或jsonb []嗎?
- 16. Rails with Postgres - 角色
- 17. 只允許來自特定域
- 18. uiscrollview只允許滾動回來
- 19. Capistrano只允許'sudo su - user'允許
- 20. 如何只允許
- 21. 只允許上傳
- 22. 只允許一次
- 23. 只允許對UITextField
- 24. Postgres不會創建角色
- 25. 在postgres上創建角色
- 26. 只允許某些角色訪問Drupal中的自定義模塊
- 27. MDX允許成員只設置角色維度數據中的同胞
- 28. 只允許特定的電子郵件註冊用戶角色的Drupal 7
- 29. 擴展基於角色的安全性以允許特定實體的角色
- 30. Postgres「reverse count(*)」(unnest?)
做這些'WHERE'子句需要引用敏感列嗎? –
不幸的是,否則我知道我只能訪問不敏感的列。 – Ben