class LogStash::Filters::Anonymize
deprecated[3.0.3,We recommend that you use the <<plugins-filters-fingerprint,fingerprint filter plugin>> instead.]
Anonymize
fields by replacing values with a consistent hash.
Public Instance Methods
filter(event)
click to toggle source
# File lib/logstash/filters/anonymize.rb, line 39 def filter(event) @fields.each do |field| next unless event.include?(field) if event.get(field).is_a?(Array) event.set(field, event.get(field).collect { |v| anonymize(v) }) else event.set(field, anonymize(event.get(field))) end end end
register()
click to toggle source
# File lib/logstash/filters/anonymize.rb, line 23 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 72 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 52 def anonymize_ipv4_network(ip_string) # in JRuby 1.7.11 outputs as US-ASCII IPAddr.new(ip_string).mask(@key.to_i).to_s.force_encoding(Encoding::UTF_8) end
anonymize_murmur3(value)
click to toggle source
# File lib/logstash/filters/anonymize.rb, line 63 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 57 def anonymize_openssl(data) digest = algorithm() # in JRuby 1.7.11 outputs as ASCII-8BIT OpenSSL::HMAC.hexdigest(digest, @key, data).force_encoding(Encoding::UTF_8) end