Vault: 基础教程之密码引擎及动态密码生成

二、密码引擎

在前面看到的所有密码的写入和读出,你可能发现他们都是以secret/开头的,尝试一下不同的前缀:

vault write foo/bar a=b

会得到一个错误:no handler for route 'foo/bar'

因此,前缀代表的是vault所用的密码引擎,默认为secret/

启动密码引擎

使用命令vault secrets enable -path=kv kv可以启动密码引擎kv/

也可以使用命令vault secrets list查看系统中含有的其他引擎。

禁用密码引擎

命令vault secrets disable kv/可以关闭。

做了以上这些后,到底什么是密码引擎呢?

vault在不同的文件系统上的表现都一致,read/write/delete/list操作都会被转递到这个密码引擎,而密码引擎则会决定如何回应这些操作。

三、动态密码生成

接下来开始体验vault的其他特性了:动态秘钥。和kv(键值对)方式需要你把数据放入不同,动态密码在访问时自动生成,它在你读取之前都不存在,所以也不会有被盗取的风险,因为vault有内置的过期管理办法,动态秘钥可以随时过期。

注意:在开始这一部分前,请先注册好AWS的账户,这里的所有特性都是免费的,但注意你可能产生的任何费用。

启用并配置AWS密码引擎

使用命令vault secrets enable -path=aws aws可以启用AWS密码引擎。不同的引擎允许不同的行为。

在配置好密码引擎后,需要配置并启用使得它能够和AWS通信,这需要有权限的账户认证,你也可以用root账户秘钥。

$ vault write aws/config/root \
    access_key=AKIAI4SGLQPBX6CSENIQ \
    secret_key=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
Success! Data written to: aws/config/root

现在上面的信息都被存储在密码引擎中,这个引擎会在将来和AWS通信时使用这些信息。

创建一个角色

接下来我们配置一个角色,角色是友好的标识。vault知道怎么通过AWS的API创建一个IAM用户,不过他也不知道你想在这个用户里使用什么权限,组和权限。这是配置在 - roles的配置选项下的。

举个例子,这里是一个IAM策略,这个策略允许所有的对EC2的操作。当vault生成一个可访问的键时,会自动添加这些策略。生成的一个秘钥具有对EC2的完全访问权限,除了IAM和其他AWS的服务。如果你不熟悉AWS的IAM策略,那也可以,先使用这个先。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1426528957000",
      "Effect": "Allow",
      "Action": [
        "ec2:*"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

按照线面所说,我们需要把这个策略文件写入到一个命名的role下,我们将它写入到aws/roles/:name

$ vault write aws/roles/my-role policy=-<<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1426528957000",
      "Effect": "Allow",
      "Action": [
        "ec2:*"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
EOF
Success! Data written to: aws/roles/my-role

使用上面aws/roles/:name就是告诉vault,当我请求my-role的验证时,创造并添加IAM的策略{ "Version": "2012..." }

生成秘钥和废弃

现在AWS密码引擎是启用的,并配置了角色,我们可以请求vault生成一个可访问的密钥对,通过读取aws/creds/:name:name是一个存在的角色的名字。

$ vault read aws/creds/my-role
Key                Value
---                -----
lease_id           aws/creds/my-role/0bce0782-32aa-25ec-f61d-c026ff22106e
lease_duration     768h
lease_renewable    true
access_key         AKIAJELUDIANQGRXCTZQ
secret_key         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
security_token     <nil>

现在这个access和secretkey可以用来在AWS部署所有的EC2操作,这些key是心生成的,每次运行这个命令都会重新生成key。注意一下lease_id,可以用来刷新、废弃和检查。

现在可以使用:

$ vault lease revoke aws/creds/my-role/0bce0782-32aa-25ec-f61d-c026ff22106e
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值