class LogStash::Filters::Anonymize

Anonymize fields using by replacing values with a consistent hash.

Public Instance Methods

filter(event) click to toggle source
# File lib/logstash/filters/anonymize.rb, line 38
def filter(event)
  return unless filter?(event)
  @fields.each do |field|
    next unless event.include?(field)
    if event[field].is_a?(Array)
      event[field] = event[field].collect { |v| anonymize(v) }
    else
      event[field] = anonymize(event[field])
    end
  end
end
register() click to toggle source
# File lib/logstash/filters/anonymize.rb, line 22
def register
  # require any library and set the anonymize function
  case @algorithm
  when "IPV4_NETWORK"
    require 'ipaddr'
    class << self; alias_method :anonymize, :anonymize_ipv4_network; end
  when "MURMUR3"
    require "murmurhash3"
    class << self; alias_method :anonymize, :anonymize_murmur3; end
  else
    require 'openssl'
    class << self; alias_method :anonymize, :anonymize_openssl; end
  end
end

Private Instance Methods

algorithm() click to toggle source
# File lib/logstash/filters/anonymize.rb, line 69
def algorithm
 
 case @algorithm
    #when 'SHA'
      #return OpenSSL::Digest::SHA.new
    when 'SHA1'
      return OpenSSL::Digest::SHA1.new
    #when 'SHA224'
      #return OpenSSL::Digest::SHA224.new
    when 'SHA256'
      return OpenSSL::Digest::SHA256.new
    when 'SHA384'
      return OpenSSL::Digest::SHA384.new
    when 'SHA512'
      return OpenSSL::Digest::SHA512.new
    #when 'MD4'
      #return OpenSSL::Digest::MD4.new
    when 'MD5'
      return OpenSSL::Digest::MD5.new
    else
      @logger.error("Unknown algorithm")
  end
end
anonymize_ipv4_network(ip_string) click to toggle source
# File lib/logstash/filters/anonymize.rb, line 51
def anonymize_ipv4_network(ip_string)
  IPAddr.new(ip_string).mask(@key.to_i).to_s
end
anonymize_murmur3(value) click to toggle source
# File lib/logstash/filters/anonymize.rb, line 60
def anonymize_murmur3(value)
  case value
  when Fixnum
    MurmurHash3::V32.int_hash(value)
  when String
    MurmurHash3::V32.str_hash(value)
  end
end
anonymize_openssl(data) click to toggle source
# File lib/logstash/filters/anonymize.rb, line 55
def anonymize_openssl(data)
  digest = algorithm()
  OpenSSL::HMAC.hexdigest(digest, @key, data)
end