如何使用Vault安全的存储密码和API密钥

如何使用Vault安全的存储密码和API密钥

Vault是用来安全的获取秘密信息的工具,它可以保存密码、API密钥、证书等信息。Vault提供了一个统一的接口来访问秘密信息,其具有健壮的访问控制机制和丰富的事件日志。

对关键信息的授权访问是一个困难的问题,尤其是当有许多用户角色,并且用户请求不同的关键信息时,例如用不同权限登录数据库的登录配置,用于外部服务的API密钥,SOA通信的证书等。当保密信息由不同的平台进行管理,并使用一些自定义的配置时,情况变得更糟,因此,安全的存储、管理审计日志几乎是不可能的。但Vault为这种复杂情况提供了一个解决方案。

突出特点

数据加密:Vault能够在不存储数据的情况下对数据进行加密、解密。开发者们便可以存储加密后的数据而无需开发自己的加密技术,Vault还允许安全团队自定义安全参数。

安全密码存储:Vault在将秘密信息(API密钥、密码、证书)存储到持久化存储之前对数据进行加密。因此,如果有人偶尔拿到了存储的数据,这也没有任何意义,除非加密后的信息能被解密。

动态密码:Vault可以随时为AWS、SQL数据库等类似的系统产生密码。比如,如果应用需要访问AWS S3 桶,它向Vault请求AWS密钥对,Vault将给出带有租期的所需秘密信息。一旦租用期过期,这个秘密信息就不再存储。

租赁和更新:Vault给出的秘密信息带有租期,一旦租用期过期,它便立刻收回秘密信息,如果应用仍需要该秘密信息,则可以通过API更新租用期。

撤销:在租用期到期之前,Vault可以撤销一个秘密信息或者一个秘密信息树。

安装Vault

有两种方式来安装使用Vault。

1. 预编译的Vault二进制 能用于所有的Linux发行版,下载地址如下,下载之后,解压并将它放在系统PATH路径下,以方便调用。

下载相应的预编译的Vault二进制版本。

解压下载到本地的二进制版本。

祝贺你!您现在可以使用Vault了。

2. 从源代码编译是另一种在系统中安装Vault的方式。在安装Vault之前需要安装GO和GIT。

在 Redhat系统中安装GO 使用下面的指令:


  1. sudo yum install go

在 Debin系统中安装GO 使用下面的指令:


  1. sudo apt-get install golang

或者


  1. sudo add-apt-repository ppa:gophers/go
  2. sudo apt-get update
  3. sudo apt-get install golang-stable

在 Redhat系统中安装GIT 使用下面的命令:


  1. sudo yum install git

在 Debian系统中安装GIT 使用下面的命令:


  1. sudo apt-get install git

一旦GO和GIT都已被安装好,我们便可以开始从源码编译安装Vault。

将下列的Vault仓库拷贝至GOPATH


  1. https://github.com/hashicorp/vault

测试下面的文件是否存在,如果它不存在,那么Vault没有被克隆到合适的路径。


  1. $GOPATH/src/github.com/hashicorp/vault/main.go

执行下面的指令来编译Vault,并将二进制文件放到系统bin目录下。


  1. make dev

path

一份Vault入门教程

我们已经编制了一份Vault的官方交互式教程,并带有它在SSH上的输出信息。

概述

这份教程包括下列步骤:

  • 初始化并启封您的Vault
  • 在Vault中对您的请求授权
  • 读写秘密信息
  • 密封您的Vault

初始化您的Vault

首先,我们需要为您初始化一个Vault的工作实例。在初始化过程中,您可以配置Vault的密封行为。简单起见,现在使用一个启封密钥来初始化Vault,命令如下:


  1. vault init -key-shares=1 -key-threshold=1

您会注意到Vault在这里输出了几个密钥。不要清除您的终端,这些密钥在后面的步骤中会使用到。

Initializing SSH

启封您的Vault

当一个Vault服务器启动时,它是密封的状态。在这种状态下,Vault被配置为知道物理存储在哪里及如何存取它,但不知道如何对其进行解密。Vault使用加密密钥来加密数据。这个密钥由"主密钥"加密,主密钥不保存。解密主密钥需要入口密钥。在这个例子中,我们使用了一个入口密钥来解密这个主密钥。


  1. vault unseal <key 1>

Unsealing SSH

为您的请求授权

在执行任何操作之前,连接的客户端必须是被授权的。授权的过程是检验一个人或者机器是否如其所申明的那样具有正确的身份。这个身份用在向Vault发送请求时。为简单起见,我们将使用在步骤2中生成的root令牌,这个信息可以回滚终端屏幕看到。使用一个客户端令牌进行授权:


  1. vault auth <root token>

Authorize SSH

读写保密信息

现在Vault已经被设置妥当,我们可以开始读写默认挂载的秘密后端里面的秘密信息了。写在Vault中的秘密信息首先被加密,然后被写入后端存储中。后端存储机制绝不会看到未加密的信息,并且也没有在Vault之外解密的需要。


  1. vault write secret/hello value=world

当然,您接下来便可以读这个保密信息了:


  1. vault read secret/hello

RW_SSH

密封您的Vault

还有一个用I来密封Vault的API。它将丢掉现在的加密密钥并需要另一个启封过程来恢复它。密封仅需要一个拥有root权限的操作者。这是一种罕见的"打破玻璃过程"的典型部分。

这种方式中,如果检测到一个入侵,Vault数据将会立刻被锁住,以便最小化损失。如果不能访问到主密钥碎片的话,就不能再次获取数据。


  1. vault seal

Seal Vault SSH

这便是入门教程的结尾。

总结

Vault是一个非常有用的应用,它提供了一个可靠且安全的存储关键信息的方式。另外,它在存储前加密关键信息、审计日志维护、以租期的方式获取秘密信息,且一旦租用期过期它将立刻收回秘密信息。Vault是平台无关的,并且可以免费下载和安装。要发掘Vault的更多信息,请访问其官方网站

原文发布时间:2015-05-11

本文来自云栖合作伙伴“linux中国”

时间: 2024-08-04 20:15:53

如何使用Vault安全的存储密码和API密钥的相关文章

加密-如何能够知道网站是明文存储还是密文存储密码

问题描述 如何能够知道网站是明文存储还是密文存储密码 比如我知道南通长途汽车站就是明文存储的,有些网站登录的时候,登录瞬间能看到密文变成,估计是被hash然后才上传的.如何能够有效地判断一个网站是不是被加密后储存密码的呢? 解决方案 除非能接触到网站的数据库或者程序代码,否则没法知道.如何接触到数据库和程序代码,那需要用非正常的手段. 解决方案二: 客户端只能看到是明文还是密文传输的,至于是如何存储的,就没办法知道了.除非有源码或暴库. 解决方案三: 一般都是密文存储,如果MD5加密了,是不可程

调查显示40%的管理员使用Word文档存储密码

据最近的一项安全调查研究显示,40%的管理员使用Word文档存储密码.这项调查研究对象是大约750名 IT管理员和决策者.受访者中,79%的人确信他们已经吸取了重大网络攻击的教训,但是,只有67%的受访者认为公司有强有力的安全反应机制和领导,57%的受访者表示,他们觉得公司在安全方面有点令人担心. 根据这项研究显示,40%的受访者表示,他们会使用微软的Word文档或电子表格存储各种访问级别的密码和管理密码.另有28%的受访者使用共享服务器或U盘.此外,近一半的受访者承认,他们允许第三方供应商访问

安全存储密码:Hashing 还是加密?

对于网站来说, 再没有什么比用户信息泄露更让人尴尬的了. 尤其是当存有用户密码的文件如果被黑客获取, 对网站的安全和用户的信心来说都是巨大的打击. 如最近的Ebay泄密事件和小米的用户数据泄露事件. 保证用户信息安全首先需要正确理解对于用户密码的安全控制和保护. 这里OWASP的主席Michael Coates最近的一篇关于一些基本概念的介绍能够帮助开发人员更好的理解现代Hashing算法和加密对于用户密码保护的作用. 安全牛编译如下: 在过去几个月, 我们看到了一些严重的数据泄露事件, Eba

cURL操作Openstack对象存储的ReST API详解_OpenStack

 由于最近工作需要使用Openstack ,使用cURL操作Openstack对象存储的ReST API,这是本人找了好多资料完成的,这里记录下. 使用Openstack ,使用cURL操作Openstack对象存储的ReST API      cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.本文主要是介绍使用该工具和HTTP协议与swift服务如何交互.cURL允许你从命令行或shell脚本传送和接收HTTP的请求和响应.这使得直接与

请问,环信有没有修改密码的 api

问题描述 请问,环信有没有修改密码的 api 解决方案 环信客户端没有提供修改密码的方法,修改密码应该是修改您app的密码,如果您需要修改您app密码的同时修改环信密码,可以调用rest接口进行重置密码http://www.easemob.com/docs/re ... sword

找回Win8/Win8.1网页和应用存储密码

第一步,为本地账户设置密码保护 (已设置密码的读者,可以直接看第二步教程) 1.为本地账户设置密码保护,打开控制面板,定位到用户账户选项,管理账户 2.选择自己的账户,更改一个密码,生效 3.然后开始找回IE浏览器之前存储的账户和密码 4.由于之前输入用户名和密码,都是使用记住密码. 第二步:开始找回密码 1.使用Win+Q组合键,调出系统内置的搜索工具,输入:凭据管理器 2.打开凭据管理器,一共有两项功能:Web凭据.Windows凭据 3.其中我们需要的百度网盘账户密码都已经显示 4.输入当

Win8/Win8.1网页和应用存储密码的找回方法

  第一步,为本地账户设置密码保护 (已设置密码的读者,可以直接看第二步教程) 1.为本地账户设置密码保护,打开控制面板,定位到用户账户选项,管理账户 2.选择自己的账户,更改一个密码,生效 3.然后开始找回IE浏览器之前存储的账户和密码 4.由于之前输入用户名和密码,都是使用记住密码. 第二步:开始找回密码 1.使用Win+Q组合键,调出系统内置的搜索工具,输入:凭据管理器 2.打开凭据管理器,一共有两项功能:Web凭据.Windows凭据 3.其中我们需要的百度网盘账户密码都已经显示 4.输

Opera浏览器同步服务被黑,用户数据和存储密码泄露

8月26日晚,知名浏览器厂商Opera发布公告,表示其云同步服务遭遇黑客攻击,开启了浏览器同步功能的用户将受影响. Opera公司的一台用于存储用户同步数据的服务器被攻破,如果用户开启了跨平台数据同步功能,则存储在浏览器中的用户名密码以及其他敏感数据都可能已被黑客获取.目前Opera浏览器紧急重置了该服务器上所有用户的密码. 在上周五承认黑客攻击事实时,Opera方面表示: "尽管我们迅速封锁了黑客的攻击,但不幸的是,包括用户同步到云端的用户名密码等一部分重要信息很可能已经泄露." 据

Linux服务器 scp 不需要密码配置与密钥转换(id_rsa-&amp;gt;ppk)

Linux服务器 scp 不需要密码配置 案例: ▲服务器A对服务器B.C进行ssh连接,免输入密码     或 ▲服务器A向服务器B.C复制文件(源文件在服务器A上),免输入密码 主机A:192.168.0.221 主机B:192.168.0.227 主机C:192.168.0.228 1.首先每个服务器上执行一下命令脚本(主机A.B.C都执行,目的是生成公钥和私钥) mkdir -p ~/.ssh chmod 700 ~/.ssh /usr/bin/ssh-keygen -t rsa