Module: Karafka::Pro::Encryption

Defined in:
lib/karafka/pro/encryption.rb,
lib/karafka/pro/encryption/cipher.rb,
lib/karafka/pro/encryption/errors.rb,
lib/karafka/pro/encryption/setup/config.rb,
lib/karafka/pro/encryption/messages/parser.rb,
lib/karafka/pro/encryption/contracts/config.rb,
lib/karafka/pro/encryption/messages/middleware.rb

Overview

Out of the box encryption engine for both Karafka and WaterDrop It uses asymmetric encryption via RSA. We use asymmetric so we can have producers that won’t have ability (when private key not added) to decrypt messages.

Defined Under Namespace

Modules: Contracts, Errors, Messages, Setup Classes: Cipher

Class Method Summary collapse

Class Method Details

.post_fork(_config, _pre_fork_producer) ⇒ Object

This feature does not need any changes post-fork

Parameters:

  • _config (Karafka::Core::Configurable::Node)
  • _pre_fork_producer (WaterDrop::Producer)


69
70
71
# File 'lib/karafka/pro/encryption.rb', line 69

def post_fork(_config, _pre_fork_producer)
  true
end

.post_setup(config) ⇒ Object

Parameters:

  • config (Karafka::Core::Configurable::Node)

    root node config



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/karafka/pro/encryption.rb', line 49

def post_setup(config)
  Encryption::Contracts::Config.new.validate!(
    config.to_h,
    scope: %w[config]
  )

  # Don't inject extra components if encryption is not active
  return unless config.encryption.active

  # This parser is encryption aware
  config.internal.messages.parser = Messages::Parser.new

  # Encryption for WaterDrop
  config.producer.middleware.append(Messages::Middleware.new)
end

.pre_setup(config) ⇒ Object

Sets up additional config scope, validations and other things

Parameters:

  • config (Karafka::Core::Configurable::Node)

    root node config



41
42
43
44
45
46
# File 'lib/karafka/pro/encryption.rb', line 41

def pre_setup(config)
  # Expand the config with this feature specific stuff
  config.instance_eval do
    setting(:encryption, default: Setup::Config.config)
  end
end