【问题标题】:Unknown setting 'iv' for cipher密码的未知设置“iv”
【发布时间】:2021-03-02 04:41:14
【问题描述】:

我正在使用 logstash 管道将数据从 mysql db 导入到 elastic 中,其中包含一些由 aes-128-cbc 加密的字段。所以我需要在解密后将这些字段存储到弹性中。 我正在使用 logstash-filter-cipher 插件并配置为 -

cipher {
    algorithm => "aes-128-cbc"
    cipher_padding => 1

    # Use a static "iv"
    iv => "IvWa7bK1lqDUxE6d"
    key => "kYr2U8oP9AjkYm3V"
    key_size => 16

    mode => "decrypt"
    source => "current_company"
    target => "company"
    base64 => true
}  

但我在管道执行时遇到以下错误-

[2021-03-02T04:24:29,557][ERROR][logstash.filters.cipher  ] Unknown setting 'iv' for cipher
[2021-03-02T04:24:29,577][ERROR][logstash.agent           ] Failed to execute action {:action=>LogStash::PipelineAction::Create/pipeline_id:main, :exception=>"Java::JavaLang::IllegalStateException", :message=>"Unable to configure plugins: (ConfigurationError) Something is wrong with your configuration.", :backtrace=>["org.logstash.config.ir.CompiledPipeline.<init>(CompiledPipeline.java:119)", "org.logstash.execution.JavaBasePipelineExt.initialize(JavaBasePipelineExt.java:80)", "org.logstash.execution.JavaBasePipelineExt$INVOKER$i$1$0$initialize.call(JavaBasePipelineExt$INVOKER$i$1$0$initialize.gen)", "org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:837)", "org.jruby.ir.runtime.IRRuntimeHelpers.instanceSuper(IRRuntimeHelpers.java:1169)", "org.jruby.ir.runtime.IRRuntimeHelpers.instanceSuperSplatArgs(IRRuntimeHelpers.java:1156)", "org.jruby.ir.targets.InstanceSuperInvokeSite.invoke(InstanceSuperInvokeSite.java:39)", "usr.share.logstash.logstash_minus_core.lib.logstash.java_pipeline.RUBY$method$initialize$0(/usr/share/logstash/logstash-core/lib/logstash/java_pipeline.rb:43)", "org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:82)", "org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:70)", "org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:332)", "org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:86)", "org.jruby.RubyClass.newInstance(RubyClass.java:939)", "org.jruby.RubyClass$INVOKER$i$newInstance.call(RubyClass$INVOKER$i$newInstance.gen)", "org.jruby.ir.targets.InvokeSite.invoke(InvokeSite.java:207)", "usr.share.logstash.logstash_minus_core.lib.logstash.pipeline_action.create.RUBY$method$execute$0(/usr/share/logstash/logstash-core/lib/logstash/pipeline_action/create.rb:52)", "usr.share.logstash.logstash_minus_core.lib.logstash.pipeline_action.create.RUBY$method$execute$0$__VARARGS__(/usr/share/logstash/logstash-core/lib/logstash/pipeline_action/create.rb)", "org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:82)", "org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:70)", "org.jruby.ir.targets.InvokeSite.invoke(InvokeSite.java:207)", "usr.share.logstash.logstash_minus_core.lib.logstash.agent.RUBY$block$converge_state$2(/usr/share/logstash/logstash-core/lib/logstash/agent.rb:342)", "org.jruby.runtime.CompiledIRBlockBody.callDirect(CompiledIRBlockBody.java:138)", "org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:58)", "org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:52)", "org.jruby.runtime.Block.call(Block.java:139)", "org.jruby.RubyProc.call(RubyProc.java:318)", "org.jruby.internal.runtime.RubyRunnable.run(RubyRunnable.java:105)", "java.base/java.lang.Thread.run(Thread.java:834)"]}
warning: thread "Converge PipelineAction::Create<main>" terminated with exception (report_on_exception is true):
LogStash::Error: Don't know how to handle `Java::JavaLang::IllegalStateException` for `PipelineAction::Create<main>`
          create at org/logstash/execution/ConvergeResultExt.java:129
             add at org/logstash/execution/ConvergeResultExt.java:57
  converge_state at /usr/share/logstash/logstash-core/lib/logstash/agent.rb:355
[2021-03-02T04:24:29,588][ERROR][logstash.agent           ] An exception happened when converging configuration {:exception=>LogStash::Error, :message=>"Don't know how to handle `Java::JavaLang::IllegalStateException` for `PipelineAction::Create<main>`", :backtrace=>["org/logstash/execution/ConvergeResultExt.java:129:in `create'", "org/logstash/execution/ConvergeResultExt.java:57:in `add'", "/usr/share/logstash/logstash-core/lib/logstash/agent.rb:355:in `block in converge_state'"]}
[2021-03-02T04:24:29,624][FATAL][logstash.runner          ] An unexpected error occurred! {:error=>#<LogStash::Error: Don't know how to handle `Java::JavaLang::IllegalStateException` for `PipelineAction::Create<main>`>, :backtrace=>["org/logstash/execution/ConvergeResultExt.java:129:in `create'", "org/logstash/execution/ConvergeResultExt.java:57:in `add'", "/usr/share/logstash/logstash-core/lib/logstash/agent.rb:355:in `block in converge_state'"]}
warning: thread "Api Webserver" terminated with exception (report_on_exception is true):
NameError: uninitialized constant Rack::Builder
    const_missing at org/jruby/RubyModule.java:3760
              app at /usr/share/logstash/logstash-core/lib/logstash/api/rack_app.rb:97
  start_webserver at /usr/share/logstash/logstash-core/lib/logstash/webserver.rb:99
              run at /usr/share/logstash/logstash-core/lib/logstash/webserver.rb:60
             each at org/jruby/RubyRange.java:526
  each_with_index at org/jruby/RubyEnumerable.java:1258
              run at /usr/share/logstash/logstash-core/lib/logstash/webserver.rb:55
  start_webserver at /usr/share/logstash/logstash-core/lib/logstash/agent.rb:401
Exception in thread "Api Webserver" java.lang.NullPointerException
    at org.jruby.internal.runtime.ThreadService.getMainThread(ThreadService.java:233)
    at org.jruby.RubyThread.exceptionRaised(RubyThread.java:1822)
    at org.jruby.internal.runtime.RubyRunnable.run(RubyRunnable.java:112)
    at java.base/java.lang.Thread.run(Thread.java:834)
[2021-03-02T04:24:29,652][ERROR][org.logstash.Logstash    ] java.lang.IllegalStateException: Logstash stopped processing because of an error: (SystemExit) exit

谁能帮我找出我的配置中的问题。

【问题讨论】:

    标签: elasticsearch logstash logstash-grok logstash-configuration


    【解决方案1】:

    密码过滤器不再支持“iv”字段。它支持iv_random_length 字段。如果您正在解密,则应将 iv 添加到 encrypted text 之前,并设置 iv_random_length 字段以告诉过滤器将多少个字符拆分为 iv。

    5 年前,过滤器允许您在加密时指定 iv。那是个坏主意。旧(2016)代码是here

    【讨论】:

    • 感谢@Badger 的即时回复。那么是否可以使用静态 iv 解密该字段?
    • 我更新了答案以解释如何使用静态 iv 解密。
    猜你喜欢
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 2020-08-01
    相关资源
    最近更新 更多