logstash-keystore保存Elasticsearch或其他密码

2024-04-02 23:48

本文主要是介绍logstash-keystore保存Elasticsearch或其他密码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考:https://www.phpmianshi.com/?id=249

背景

在配置Logstash时,你可能需要指定敏感设置或配置,比如密码,与依赖文件系统权限来保护这些值不同,你可以使用Logstash keystore来安全地存储用于配置设置的secret值。

在向keystore中添加key及其secret值之后,你可以在配置敏感设置时使用key代替secret值。

引用key的语法与环境变量的语法相同:${KEY}KEY是key的名称。例如:

jdbc_password => "${MYSQL_PWD}"

注意,Logstash keystore与Elasticsearch keystore不同,虽然Elasticsearch keystore允许你按名称存储elasticsearch.yml值,但是Logstash keystore允许你指定可在Logstash配置中引用的任意名称。

当前不支持从pipelines.yml或命令行(-e)引用keystore数据。

 

keystore密码

 

你可以通过在名为LOGSTASH_KEYSTORE_PASS的环境变量中存储密码来保护对Logstash keystore的访问,如果在设置此变量后创建Logstash keystore,它将受到密码保护。这意味着环境变量需要被正在运行的Logstash实例访问,这个环境变量还必须为需要发出keystore命令(添加、列表、删除等)的任何用户正确设置。

建议使用keystore密码,但这是可选的,即使你没有设置密码,数据也会被加密。但是,强烈建议配置keystore密码并对任何可能包含环境变量值的文件授予限制性权限,如果你选择不设置密码,那么你可以跳过本节的其余部分。

 

环境

logstash7.5.1 + supervisor

 

keystore位置

keystore必须位于Logstash的path.settings目录,这是包含logstash.yml文件的同一个目录。在对keystore执行任何操作时,建议为keystore命令设置path.settings

 

示例

这次我们logstash采用源码安装,安装目录为 /usr/local/logstash ,运行使用supervisor

 

#设置隐藏history记录
set +o history
#设置访问Logstash keystore的密码
export LOGSTASH_KEYSTORE_PASS=这里设置一个密码
#设置记录history
set -o history
cd /usr/local/logstash/bin
#创建
./logstash-keystore --path.settings /usr/local/logstash/config create
./logstash-keystore --path.settings /usr/local/logstash/config add MYSQL_PWD
#这里会提示我们设置密码 Enter value for MYSQL_PWD:  我们输入一个密码回车提示:Added 'mysql_pwd' to the Logstash keystore.
#查看设置过的参数
./logstash-keystore --path.settings /usr/local/logstash/config list
#移除一个key
./logstash-keystore remove MYSQL_PWD

 

 

当你从RPM或DEB包安装中运行Logstash时,环境变量来自/etc/sysconfig/logstash

# Have to save the password for service to kick start (installed by RPM), otherwise service will fail.
echo "LOGSTASH_KEYSTORE_PASS=changeme" > /etc/sysconfig/logstash

这个设置要求运行Logstash的用户定义环境变量LOGSTASH_KEYSTORE_PASS=mypassword,如果没有定义环境变量,Logstash就无法访问keystore。

你可能需要创建/etc/sysconfig/logstash,这个文件应该由具有600权限的root用户拥有,/etc/sysconfig/logstash的格式应该是ENVIRONMENT_VARIABLE=VALUE,每行一个条目。

对于其他发行版,如Docker或ZIP,请参阅运行时环境(Windows、Docker等)的文档,了解如何为运行Logstash的用户设置环境变量,确保该环境变量(以及密码)只能被该用户访问。

 

这时候,我们再去修改logstash同步的配置文件,把需要mysql密码的地方都改成 ${MYSQL_PWD}

 

jdbc_password => "${MYSQL_PWD}"

重新启动logstash

 

supervisorctl restart logstash

观察日志发现报错:

 

Found a file at /usr/local/logstash/config/logstash.keystore, but it is not a valid Logstash keystore.

原因是supervisor接管logstash的时候,没有设置环境变量  LOGSTASH_KEYSTORE_PASS,上面我们已经介绍过了,需要设置该变量才能访问logstash-keystore,我们设置下环境变量 environment

 

[program:logstash]
command = /usr/local/logstash/bin/logstash
directory = /usr/local/logstash/
numprocs = 1
process_name = %(program_name)s
user=root
environment=LOGSTASH_KEYSTORE_PASS=这里设置刚才设置的密码
autostart = false
autorestart = true
startsecs = 10
startretries = 10
redirect_stderr = true
stdout_logfile = /dev/null
stdout_logfile_maxbytes = 1000MB
loglevel = info

重新启动logstash

 

supervisorctl reload
supervisor start logstash

修改一条数据,测试一下,大功告成,这样我们就可以安全的设置一些敏感的密码等信息了

这篇关于logstash-keystore保存Elasticsearch或其他密码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/871385

相关文章

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

PostgreSQL数据库密码被遗忘时的操作步骤

《PostgreSQL数据库密码被遗忘时的操作步骤》密码遗忘是常见的用户问题,因此提供一种安全的遗忘密码找回机制是十分必要的,:本文主要介绍PostgreSQL数据库密码被遗忘时的操作步骤的相关资... 目录前言一、背景知识二、Windows环境下的解决步骤1. 找到PostgreSQL安装目录2. 修改p

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

SpringBoot如何对密码等敏感信息进行脱敏处理

《SpringBoot如何对密码等敏感信息进行脱敏处理》这篇文章主要为大家详细介绍了SpringBoot对密码等敏感信息进行脱敏处理的几个常用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录​1. 配置文件敏感信息脱敏​​2. 日志脱敏​​3. API响应脱敏​​4. 其他注意事项​​总结

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

使用Java实现Navicat密码的加密与解密的代码解析

《使用Java实现Navicat密码的加密与解密的代码解析》:本文主要介绍使用Java实现Navicat密码的加密与解密,通过本文,我们了解了如何利用Java语言实现对Navicat保存的数据库密... 目录一、背景介绍二、环境准备三、代码解析四、核心代码展示五、总结在日常开发过程中,我们有时需要处理各种软

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解