背景 在企业实践中,HashiCorp Vault 作为密钥管理的事实标准,官方及社区已经提供了 AWS、AliCloud、TencentCloud 等主流云厂商的 Secrets Engine 插件。然而,当我试图为火山引擎(Volcengine)寻找类似方案时,发现市面上并没有现成的插件可用。
既然没有轮子,那现在咱们在AI的加持下,可以非常方便的造出一个轮子来了。
插件能做什么 这个插件(vault-plugin-secrets-volcengine)为 Vault 提供了火山引擎的动态凭证管理能力,支持两种模式:
STS 临时凭证 — 通过 AssumeRole 签发短期临时 AK/SK + SecurityToken,适合短生命周期的作业场景,凭证到期自动失效,无需主动回收。
IAM 动态用户 — 按需创建 IAM 子用户并挂载策略,生成长期 AK/SK。Vault 负责完整的生命周期管理:创建、续期、到期自动回收(删除 AccessKey → 解绑策略 → 删除用户)。
etcd集群在默认情况下是没有安全验证的,如果存储了机密信息的话,则需要为其添加账号密码验证。这里记录一下具体的添加过程。
添加root用户 etcdctl user add root
添加root角色 etcdctl role add root
关联用户与角色 #etcdctl user grant-role username rolename etcdctl user grant-role root root
如果要取消关联 #etcdctl user revoke-role username rolename etcdctl user revoke-role root root
在学习golang的过程中,有注意到对于随机字符串的生成方式有很多种,下面就网上的罗列一下,最后一种是我最喜欢的方式,够优雅。
第一种 通用方案 最普通方案就是随机产生每个字符,所以整体字符串也是随机的。这样的好处是可以控制要使用的字符。
func init() { rand.Seed(time.Now().UnixNano()) } var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") func RandStringRunes(n int) string { b := make([]rune, n) for i := range b { b[i] = letterRuens[rand.
准备工作 对于ElastAlert的介绍我就不说了,网上一搜一大堆的。这里直接进入正题。
对应你的kibana版本去下载elastalert-kibana-plugin,到这里去下 https://github.com/bitsensor/elastalert-kibana-plugin/releases 下载ElastAlert程序本身,到这里去下 https://github.com/Yelp/elastalert 安装 进入ElastAlert目录,执行 # yum install python-setuptools # git clone https://github.com/Yelp/elastalert.git # cd elastalert # python setup.py install 中间或许会提示报错,缺一些包,库什么的,根据报错装上对应的就行了。比如我就提示了缺gcc,所以
# yum install gcc 下面就是安装kibana的插件
# /usr/share/kibana/bin/kibana-plugin install file:///path/to/elastalert-kibana-plugin-1.
系统环境:Centos 7
安装ELASTICSEARCH 按照官方文档(https://opendistro.github.io/for-elasticsearch-docs/)的说明,首先需要安装JDK(使用官方源地址)
cd /etc/yum.repos.d/ curl https://d3g5vo6xdbdb9a.cloudfront.net/yum/opendistroforelasticsearch-artifacts.repo -o opendistroforelasticsearch-artifacts.repo yum install java-11-openjdk-devel #如果需要在本机上安装logstash,则建议安装yum install java-1.8.0-openjdk-devel 因为新版的logstash-6.3.2不支持最新版的jdk-10.0.2,需要降为上一个稳定版jdk-8u181。否则会报错Unrecognized VM option ‘UseParNewGC’参考链接https://github.com/elastic/logstash/issues/9345
如果安装java-1.8.0-openjdk-devel,则需要在安装之后做如下操作,否则后面会起不来elasticsearch ln -s /usr/lib/jvm/java-1.8.0/lib/tools.jar /usr/share/elasticsearch/lib/ 我们目前的方案是logstash在另外一台机器上,所以可以不考虑JDK的问题。
下面开始安装:
yum install opendistroforelasticsearch systemctl start elasticsearch.
在日常的lua脚本调试中,我们通常会用ngx.say或者ngx.print来打印信息,但是要注意了,当你在ngx.redirect前面使用这两个方法时,就会报错哦
lua entry thread aborted: runtime error: attempt to call ngx.redirect after sending out the headers 但是用ngx.log方法一般是没有问题的
另外这里再记录一下,lua中的split实现方法,下面这个方法够简洁
string.split = function(s, p) local rt= {} string.gsub(s, '[^'..p..']+', function(w) table.insert(rt, w) end ) return rt end 使用示例:
CentOS 7 以后命名主机名,需要用到hostnamectl命令,具体用法如下:
# hostnamectl set-hostname TestHostname 但这个命令会将所有字母转换成小写字母,也就是最后的主机名实际是testhostname。
如果我们还是想要驼峰规则的主机名怎么办。
这样就可以了
# hostnamectl --static set-hostname TestHostname