我用Rails 2.3.4紅寶石Rails的查詢選擇標準包括加密領域
我找少特定回答這個問題,但更多的在這個問題上的一般指導。
在我們的(MySQL)數據庫中,我們會加密個人身份信息(PII),例如姓名,地址,電話號碼等。但是我總是收到動態查詢的請求。
例如,「您可以查詢數據庫以獲取給定日期的條目值,但僅限於區域代碼列表中的用戶」。
因此,選擇標準包括一些PII加密數據,例如他們電話號碼的區號。
爲了這個討論,用戶和入境表有興趣以下字段:
User.id,User.phone
Entry.user_id,Entry.value,Entry.created_at
由於加密,我無法連接SQL客戶端,並執行我的查詢,以「簡單」的方式獲取用戶在區號(555,222,333)列表中的所有條目,如下所示:
SELECT E.value,SUBSTR(U.phone,2,3) FROM users U INNER JOIN entries E ON E.user_id = U.id WHERE DATE(E.sent_at)='2010-11-21' AND SUBSTR(U.phone,2,3)in('555', '222','333')
我想在控制檯中執行一個可能會給我類似數據的查詢。
看起來,加密的字段不能用作選擇標準,所以我猜測他們沒有解密,直到它們顯示它們(而不是查詢它們)。
我的蠻力痛苦的方式是下面的多步驟的過程:
- 選擇所有的ID和區域代碼ALL活躍用戶。 User.all(:選擇=> 「ID,電話」,:條件=> [ 「狀態= '有效'」])
- 執行終端的屏幕抓鬥,
- 複製到文本編輯器,按摩,
- 粘貼到Excel,
- 使用Excel「過濾器」搶的僅所希望的區域碼的用戶的ID,
- 它們粘貼到平面文件,按摩到逗號分隔的列表,然後
- 粘貼到我的SQL客戶端以通過user_id查詢 SELECT * FROM條目WHERE user_id IN()和date(created_at)=''。
「還有更好的辦法!」有什麼建議麼?在此先感謝,
約旦您好,感謝的:
而且你可以查找並在這樣的加密值登錄用戶參考。我們不在代碼中存儲加密密鑰。這將使任何有權訪問數據庫和代碼的人都可以解密。我們使用PGP證書,公鑰/私鑰等。當我檢索記錄時,它好像處理的解密很好。 (uu = User.find(23))將返回解密的整個用戶記錄。但uu = User.find_by_phone('6065551212')不會通過電話號碼找到用戶。也就是說,在啓用加密的生產服務器上,它不會通過電話號碼找到,但在dev上未啓用加密的設備上,它發現它很好。 – devGuy 2011-02-13 05:44:00