2010-12-03 7 views
13

기밀 데이터가 저장되기 때문에 데이터베이스를 암호화하고 싶습니다. mongodb와 mongoid를 사용합니다. 이런 종류의 데이터베이스가 가능합니까? 그렇지 않은 경우 어떤 대안을 권할 수 있습니까?레일즈 : 암호화 된 데이터를 데이터베이스에 저장

P. 주된 목적은 : 누군가가 서버를 해킹하고 DB를 훔치면 암호화 할 수 없게됩니다.

업데이트 : nickh 주셔서 감사합니다. 매우 많은 soultions for ActiveRecord을 찾았지만 몽고이 (Mongoid) 및 기타 Mongo 클리에테리는 없습니다. Mongo와 Mongoid에 대한 호의를 찾는 것이 좋을 것입니다! ezcrypto 보석 기압과 PostgreSQL을 사용

+0

서버에서 개인 키를 가져 와서 다른 곳에 저장하지 않는 한 (예 : 응용 프로그램에서 저장된 데이터를 소비 할 필요가없는 경우) 일단 해킹 당하면 게임이 종료됩니다. 경험에 대한 조언. –

+1

한 서버에는 DB를 배포하고 다른 서버에는 DB를 배포합니다. 따라서 해킹 확률은 두 번 감소했습니다. 따라서 DB에서 데이터를 암호화하여 암호화 할 수 있습니까? – petRUShka

답변

11

저는 Mongo와 Mongoid와 협력하여 attr_encrypted를 받았습니다. 단 몇 번의 조정이 필요합니다.

attr_encrypted에 의해 자동으로 생성 된 모든 encrypted_ 필드가 모델에 명시 적으로 만들어 졌는지 확인하십시오. 예를 들어, 당신이있는 경우 :

attr_encrypted :email, :key => 'blah blah blah', :encode => true 

당신이 필요합니다 :

field :email, :type => String 
    field :encrypted_email, :type => String 

이 또한 그렇지 않으면 몽고 큰 소리로 불평 암호화 된 문자열을 인코딩을 말할 필요가 알 수 있습니다.당신이 해시를 암호화하는 경우

마지막으로, 다음을 수행하십시오

field :raw_auth_hash, :type => Hash 
    field :encrypted_raw_auth_hash, :type => String 

    attr_encrypted :raw_auth_hash, :key => 'blah', :marshal => true, :encode => true 
1

http://ezcrypto.rubyforge.org/

는 - 암호화 된 필드와 모델 사이의 연결을 사용에 제한이 (가 잘하지만 합리적으로 작동이 어쩌면의 정확한 최신의 포크를 찾아 내 무능력 아래로 이 프로젝트).

암호화 된 필드

는 BYTEA 데이터 타입과 PostgreSQL 데이터베이스에 저장되며 단일 따옴표 (플러그인 또 다른 문제) 이스케이프 대개

PostgreSQL을 또한 자신의 암호화/암호 해독에 액세스 할 수 있습니다 않으며, 필요합니다 modeul 'pgcrypto'또한 BYTEA 데이터 유형을 반환합니다. 이것이 Rails의 activerecord와 모델 들간의 연관성 (아마 나쁘다 : D)과 어떻게 통합 될지 확신 할 수 없다.

8

나는 attr_encrypted gem으로 많은 성공을 거뒀습니다. 그러나 ActiveRecord에서만 사용했습니다. MongoMapper 나 Mongoid와 함께 작동하는지 모르겠습니다.

구현 방법에 관계없이 특정 필드 만 암호화하는 것이 좋습니다. 모든 테이블의 모든 필드를 암호화하지 마십시오. 그렇게하면 연관을 사용하거나 LIKE를 사용하여 검색하는 것이 어려워집니다.

+0

감사합니다. 그러나 Mongoid 또는 다른 MongoDB 클라이언트에 대해 특별히 알고 있습니까? – petRUShka

+0

내 머리 꼭대기에서 벗어나지 않습니다. 그러나 attr_encrypted의 작성 방법을 보면 Mongoid 어댑터를 작성하는 것입니다. https://github.com/shuber/attr_encrypted/tree/master/lib/attr_encrypted/adapters – nickh

0

몽고이 루비 어댑터가있는 응용 프로그램에서 MongoDB를 사용합니다. Ryan Bates (Rails의 반신 반인)는 최근이 문제에 관해서 뛰어난 레일 스 캐스트를 만들었습니다 http://railscasts.com/episodes/250-authentication-from-scratch.

MongoDB 앱에서 사용하고 있으며 데이터 암호화에 완벽하게 작동합니다. 그의 자습서 비디오는 대부분 암호를 암호화하기위한 것이지만 원하는 다른 필드 값에 적용 할 수 있습니다.

나는 또한 attr_encrypted를 많은 성공과 함께 사용했지만 MongoDB와 함께 작동하는지 확신 할 수 없다. ActiveRecord에서만 사용했습니다.

7

mongoid-encrypted-fields 보석 시도 -이 mongoize/demongoize 방법을 사용하여 암호화 처리로 원활한이다. 그럼 당신은 정상처럼 액세스 할 수 있습니다

field :ssn, type: Mongoid::EncryptedString 

하지만 데이터는 암호화되어 저장된다

그냥처럼 필드를 정의합니다.

관련 문제