如何pipe理dockerized应用程序中的GPG钥匙串?

我正在开发一个dockerized的Ruby on Rails应用程序,它有一个工作负责解密一系列文件,然后将它们加载到我们的数据库中。

由于gpg钥匙串不保证在部署之间包含私钥,工作人员必须下载私钥并每次导入。

require 'gpgme' def setup_gpg private_key = Tempfile.new(PRIVATE_KEY).binmode s3_client.get_object(bucket: config[:bucket], key: PRIVATE_KEY, response_target: private_key) GPGME::Key.import(private_key) end def decrypt_file(enc_file) decrypted_filename = enc_file.path.sub('.gpg', '.csv') File.open(enc_file) do |encrypted_file| File.open(decrypted_filename, 'w+') do |decrypted_file| crypto = GPGME::Crypto.new crypto.decrypt(encrypted_file, output: decrypted_file, password: config[:passphrase]) return decrypted_file end end end 

我使用GPGME gem与ruby中的gpg二进制文件进行交互。

这种方法的问题是:

  • 私钥存在于S3存储桶中
  • 每次作业运行时都必须下载并导入私钥

我们可以通过检查密钥是否已经在keychain中来干这个过程,但是我想要完全消除这个步骤。

是否有一个最佳做法,如何维护dockerized应用程序的gpg钥匙串? 我有什么select来消除在S3中存储密钥而不提交密钥到源代码控制的需要?

Interesting Posts