首页 > 其他分享 >开源密码存储引擎 Vault 的安装与使用

开源密码存储引擎 Vault 的安装与使用

时间:2024-02-27 15:11:41浏览次数:35  
标签:存储 0.1 secret 开源 复制 key vault Vault

https://cloud.tencent.com/developer/article/2197110

https://blog.csdn.net/WEARE001/article/details/131413961

1. 引言

 

vault 是一款 HCP 推出的密钥管理引擎,用来集中存储集群运行过程中所需要的秘密信息,例如数据库的访问凭证、密码、密钥等。它保证了存储与通信过程的保密性,这对于我们无处不在的敏感信息的数据安全显然是十分必要的。

与此同时,vault 拥有一系列可插拔功能扩展,可以支持将 vault 的实际数据存储到内存、文件系统、google cloud、AWS、etcd 等多种存储介质中,满足不同的集群部署需求,可谓是非常灵活。

本文我们就来初步介绍一下 vault 这款存储的搭建和使用。

2. Vault 安装

在不同的平台上,vault 安装略有不同,可以参考实际的文档:

https://www.vaultproject.io/downloads

例如在 centos 上,可以通过下面的命令来进行安装:

 sudo yum install -y yum-utils
 sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
 sudo yum -y install vault

3. 启动 Server

3.1 测试环境

如果仅用于测试,只需要执行下面的命令即可:

 vault server -dev

命令执行后的返回文本中会有 Unseal Key 和 Root Token 两个参数:

==> Vault server configuration:

       Api Address: http://127.0.0.1:8200
               Cgo: disabled
   Cluster Address: https://127.0.0.1:8201
        Listener 1: tcp (addr: "127.0.0.1:8200", cluster address: "127.0.0.1:8201", max_request_duration: "1m30s", max_request_size: "33554432", tls: "disabled")
         Log Level: info
             Mlock: supported: false, enabled: false
     Recovery Mode: false
           Storage: inmem
           Version: Vault v1.4.1

WARNING! dev mode is enabled! In this mode, Vault runs entirely in-memoryand starts unsealed with a single unseal key. The root token is alreadyauthenticated to the CLI, so you can immediately begin using Vault.

You may need to set the following environment variable:

$ export VAULT_ADDR='http://127.0.0.1:8200'

The unseal key and root token are displayed below in case you want toseal/unseal the Vault or re-authenticate.

Unseal Key: 1+yv+v5mz+aSCK67X6slL3ECxb4UDL8ujWZU/ONBpn0Root Token: s.XmpNPoi9sRhYtdKHaQhkHP6x

Development mode should NOT be used in production installations!

==> Vault server started! Log data will stream in below:

接下来,按照上述指引,需要 export 两个环境变量:

 export VAULT_ADDR='http://127.0.0.1:8200'
 export VAULT_TOKEN="s.XmpNPoi9sRhYtdKHaQhkHP6x"

通过 vault status 命令可以查看 vault 状态:

 $ vault status
 
 Key             Value
 ---             -----
 Seal Type       shamir
 Initialized     true
 Sealed          false
 Total Shares    1
 Threshold       1
 Version         1.7.0
 Storage Type    inmem
 Cluster Name    vault-cluster-4d862b44
 Cluster ID      92143a5a-0566-be89-f229-5a9f9c47fb1a
 HA Enabled      false

3.2 正式环境

3.2.1 启动 server

上述测试环境部署的 vault 使用了用于测试的一系列默认配置,如果我们要用于正式环境,我们自然需要进行一系列必要的配置,例如 vault 的数据具体存储在哪里,http 端口与 tls 协议支持等。

vault 支持通过 json、linux config、hcl 等多种配置方式,例如下面这个 config.hcl 配置:

 storage "raft" {
   path    = "./vault/data"
   node_id = "node1"
 }
 
 listener "tcp" {
   address     = "127.0.0.1:8200"
   tls_disable = "true"
 }
 
 api_addr = "http://127.0.0.1:8200"
 cluster_addr = "https://127.0.0.1:8201"
 ui = true

接下来就可以启动 server 了:

 mkdir -p ./vault/data
 vault server -config=config.hcl

3.2.2 server 的初始化

对于单机模式的 server 来说,每个 server 都需要进行一次且只能进行一次初始化操作,用来应用上述配置。对于 HA 模式的 vault 来说,则每个 cluster 需要执行一次初始化操作。

执行下面的命令对 vault 进行初始化操作:

 export VAULT_ADDR='http://127.0.0.1:8200'
 vault operator init

会打印出下列信息:

Unseal Key 1: 4jYbl2CBIv6SpkKj6Hos9iD32k5RfGkLzlosrrq/JgOmUnseal Key 2: B05G1DRtfYckFV5BbdBvXq0wkK5HFqB9g2jcDmNfTQiSUnseal Key 3: Arig0N9rN9ezkTRo7qTB7gsIZDaonOcc53EHo83F5chAUnseal Key 4: 0cZE0C/gEk3YHaKjIWxhyyfs8REhqkRW/CSXTnmTilv+Unseal Key 5: fYhZOseRgzxmJCmIqUdxEm9C3jB5Q27AowER9w4FC2Ck Initial Root Token: s.KkNJYWF5g0pomcCLEmDdOVCW Vault initialized with 5 key shares and a key threshold of 3. Please securelydistribute the key shares printed above. When the Vault is re-sealed,restarted, or stopped, you must supply at least 3 of these keys to unseal itbefore it can start servicing requests. Vault does not store the generated root key (previously known as master key).Without at least 3 key to reconstruct the root key, Vault will remainpermanently sealed! It is possible to generate new unseal keys, provided you have a quorum ofexisting unseal keys shares. See "vault operator rekey" for more information.

3.2.3 对 key 解封

初始化后,vault 还不知道如何使用具体的存储,因此处于封锁状态,在上面的 output 内容中有这样一句话:

Vault initialized with 5 key shares and a key threshold of 3.

说明 threshold 为 3,也就是说,我们至少要对 3 个 key 执行解封操作后,server 才可以使用。

执行下面的命令即可:

 vault operator unseal <key>

3.2.4 创建 engine

和其他数据存储一样,要使用 vault 我们同样需要创建 database,但在 vault 中,数据是按照类似文件系统的 path 来组织的,需要用下面的命令来开启相应的 engine:

 vault secrets enable -path=secret kv

我们创建了一个 path secret,并且以 kv 类型进行存储。

4. vault 的基本使用

4.1 数据写入

使用下面的命令就可以写入数据了:

 vault kv put -mount=secret hello foo=world

他表示在 path 为 secret 的子 path hello 中写入 kv 对 foo=world。

你也可以一次写入多个数据:

 vault kv put -mount=secret hello foo=world excited=yes

4.2 数据读取

我们可以直接读取 secret path 下 hello 子 path 的所有数据:

 vault kv get -mount=secret hello

会打印出:

 == Secret Path ==
 secret/data/hello
 
 ======= Metadata =======
 Key                Value
 ---                -----
 created_time       2022-01-15T01:40:09.888293Z
 custom_metadata    <nil>
 deletion_time      n/a
 destroyed          false
 version            2
 
 ===== Data =====
 Key        Value
 ---        -----
 excited    yes
 foo        world

我们也可以指定 path 下具体的 field 来获取某个值:

 vault kv get -mount=secret -field=excited hello

这样就会直接打印出值:

yes

4.3 删除数据

把上述查询语句中的 get 关键字改成 delete 关键字就可以删除对应数据:

 vault kv delete -mount=secret -field=excited hello

但是,如果你是误删除的话,vault 是支持误删恢复的,前提是你需要将 destroyed 配置为 false。

通过下面的命令,可以将已删除数据进行恢复:

 vault kv undelete -mount=secret -versions=2 hello

标签:存储,0.1,secret,开源,复制,key,vault,Vault
From: https://www.cnblogs.com/jason-zhao/p/18036916

相关文章

  • 《安富莱嵌入式周报》第333期:F35战斗机软件使用编程语言占比,开源10V基准电源,不断电运
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 视频版:https://www.bilibili.com/video/BV1y1421f7ip目录:1、F35战斗机软件使用编程语言占比2、开源10V基准电源,不断电运行一年,误差小于1uV3、资讯(1)苹果开源配置语言Pkl......
  • 开源流程引擎三巨头:activiti、flowable、camunda,最推荐使用哪个?
    From: https://mp.weixin.qq.com/s?__biz=MzI4Njc5NjM1NQ==&mid=2247551521市场上比较有名的开源流程引擎有osworkflow、jbpm、activiti、flowable、camunda。其中:Jbpm4、Activiti、Flowable、camunda四个框架同宗同源,祖先都是Jbpm4,开发者只要用过其中一个框架,基本上就会用其它......
  • 在K8S中,如何知道Pod的数据存储在哪里?
    在Kubernetes(K8S)中,Pod的数据存储位置主要取决于Pod中容器挂载的卷(volume)。Pod的数据存储可以通过多种方式在Kubernetes集群中持久化或临时存储,以下是如何确定Pod数据存储位置的方法:查看PodYAML配置:检查Pod的YAML定义文件,可以明确看到容器挂载的卷类型和挂载路径。例如,查......
  • 2024年Apache DolphinScheduler RoadMap:引领开源调度系统的未来
    非常欢迎大家来到ApacheDolphinScheduler社区!随着开源技术在全球范围内的快速发展,社区的贡献者“同仁”一直致力于构建一个强大而活跃的开源调度系统社区,为用户提供高效、可靠的任务调度和工作流管理解决方案。在过去的一段时间里,我们取得了一些重要的成就,但我们的愿景远未实......
  • LightDB-X 24.1 支持 Oracle DBMS_STATS.GATHER_TABLE_STATS 存储过程
    LightDB-X24.1支持OracleDBMS_STATS.GATHER_TABLE_STATS存储过程背景LightDB-X一直在不断提升对Oralce的兼容性,降低基于Oracle的业务系统迁移到LightDB-X的门槛。在24.1版本中支持了Oracle的DBMS_STATS.GATHER_TABLE_STATS存储过程,提高了对Oracle管理功能......
  • Excelize 开源基础发布 2.8.1 版本,2024 年首个更新
    Excelize是Go语言编写的用于操作电子表格办公文档的开源基础库,基于ISO/IEC29500、ECMA-376国际标准。可以使用它来读取、写入由MicrosoftExcel、WPS、ApacheOpenOffice、LibreOffice等办公软件创建的电子表格文档。支持XLAM/XLSM/XLSX/XLTM/XLTX等多种文档格......
  • 阿里云SQLServer存储空间已满,回收空间
    今天发现SQLServer的存储空间已满,需要进行清除。操作步骤:先清除表数据再回收空间TRUNCATETABLE表名DBCCCLEANTABLE(数据库名,表名,0)WITHNO_INFOMSGS;GO--1.查看数据库总空间,已用空间,未用空间,使用率SELECTa.nameas逻辑文件名,size/128[totalspace文件大小(兆)],......
  • 选择最适合数据的嵌入模型:OpenAI 和开源多语言嵌入的对比测试
    OpenAI最近发布了他们的新一代嵌入模型embeddingv3,他们将其描述为性能最好的嵌入模型,具有更高的多语言性能。这些模型分为两类:较小的称为text-embeddings-3-small,较大且功能更强大的称为text-embeddings-3-large。这些模型的设计和训练方式的信息披露得很少,模型只能通过付......
  • 开源产品测评之 SQL 上线能力
    背景 近期,我司准备引入一款SQL审核产品来供内部流程使用,解决目前SQL人工上线的流程管控问题,目标是对业内的开源产品进行调研,选型一款作为落地方案,后期如果内部有需求可能会进行二次开发。我们最终选取 SQLE[1]、Yearning[2]、Archery[3] 进行了初步的使用和调研,我们内部......
  • docker使用btrfs存储驱动
    ubuntu22环境1.ddif=/dev/zeroof=btrfs.imgbs=1mcount=20002.losetup/dev/loop16btrfs.img3.aptinstallbtrfs-progs4.mkfs.btrfs-f/dev/loop165.mount-tbtrfs/dev/loop16/var/lib/docker6.root@nmx-virtual-machine:/home/nmx#df-TFilesystemType1K......