Module: KmsEnv
- Defined in:
- lib/kms-env.rb,
lib/kms-env/railtie.rb
Defined Under Namespace
Classes: Railtie
Class Method Summary collapse
- .ciphertext_blob_for(text) ⇒ Object
-
.kms ⇒ Object
Load decrypted environment variables.
- .kms_decrypt_blob(blob) ⇒ Object
- .kms_key_matcher ⇒ Object
- .load ⇒ Object
- .logger ⇒ Object
- .plaintext_key_for(key) ⇒ Object
- .set_decrypted_env_for(key) ⇒ Object
Class Method Details
.ciphertext_blob_for(text) ⇒ Object
24 25 26 |
# File 'lib/kms-env.rb', line 24 def ciphertext_blob_for(text) Base64.decode64(text) end |
.kms ⇒ Object
Load decrypted environment variables
20 21 22 |
# File 'lib/kms-env.rb', line 20 def kms @kms ||= Aws::KMS::Client.new(region: ENV['AWS_REGION'] || 'us-east-1') end |
.kms_decrypt_blob(blob) ⇒ Object
28 29 30 31 32 33 34 35 |
# File 'lib/kms-env.rb', line 28 def kms_decrypt_blob(blob) kms.decrypt(ciphertext_blob: blob) rescue Exception => e self.logger.error("Failed to decrypt env with error #{e.class}") if defined?(Honeybadger) Honeybadger.notify(e) end end |
.kms_key_matcher ⇒ Object
46 47 48 |
# File 'lib/kms-env.rb', line 46 def kms_key_matcher /_KMS$/ end |
.load ⇒ Object
50 51 52 53 54 |
# File 'lib/kms-env.rb', line 50 def load ENV.keys.select {|k| k =~ kms_key_matcher}.each do |key| set_decrypted_env_for(key) end end |
.logger ⇒ Object
8 9 10 11 12 13 14 |
# File 'lib/kms-env.rb', line 8 def logger if defined?(Rails) and Rails.logger Rails.logger else Logger.new(STDERR) end end |
.plaintext_key_for(key) ⇒ Object
37 38 39 |
# File 'lib/kms-env.rb', line 37 def plaintext_key_for(key) key.gsub(kms_key_matcher, '') end |
.set_decrypted_env_for(key) ⇒ Object
41 42 43 44 |
# File 'lib/kms-env.rb', line 41 def set_decrypted_env_for(key) data = kms_decrypt_blob(ciphertext_blob_for(ENV[key])) ENV[plaintext_key_for(key)] = data.plaintext if data end |