My Realm dbは暗号化されています。 encryptionKeyはKeychainに格納されます。この鍵を管理するより安全な方法は何ですか?defaultConfigurationに暗号化キーを保存するのは安全ですか?
現在、RealSがインスタンス化される前に、application(application:didFinishLaunchingWithOptions:)
からdefaultConfiguration(schemaVersion、migrationBlock、fileURL、etcおよびencryptionKeyも同様)を設定するメソッドを呼び出しています。その後、レルムはアプリケーション全体でこのdefaultConfigurationでインスタンス化されます。そのような :
// AppDelegate
var config = Realm.Configuration.defaultConfiguration
config.schemaVersion = 5
config.migrationBlock = { migration, oldSchemaVersion in ... }
config.encryptionKey = KeychainManager.getRealmEncryptionKey()
Realm.Configuration.defaultConfiguration = config
// Somewhere else, later
Realm()
それはdefaultConfigurationにencryptionKeyを入れても安全ですか?実行時にdefaultConfigurationがどこに格納され、そこからキーを押し出すのが簡単でしょうか?
また、RealmインスタンシエーションごとにKeychainからencryptionKeyを要求し、Realmインスタンスの存続期間中にのみメモリに表示されるカスタム構成に入れることをお勧めします。このように:
// AppDelegate
var config = Realm.Configuration.defaultConfiguration
config.schemaVersion = 5
config.migrationBlock = { migration, oldSchemaVersion in ... }
Realm.Configuration.defaultConfiguration = config
// Somewhere else, later
var configTemp = Realm.Configuration.defaultConfiguration
configTemp.encryptionKey = KeychainManager.getRealmEncryptionKey()
Realm(configuration: configTemp)