Hashicorp 保险库中的一次性秘密
Single use secret in Hashicorp vault
任何秘密引擎都可以使用“一次性”密码吗?
我有一个命令可以为用户生成一个 rsa 密钥对,并希望他们检索他们的私钥。我显然可以将其打印出来,或写入文件等,但我认为如果将其存储在保险库中的“一次性”位置会更好吗?然后用户可以通过 UI 检索它,并且知道没有其他人查看过它。如果其他人看到它,他们将需要重新生成。
基本上我们可以有一个只能读取一次的保管库密钥吗?
您可以创建一个只能访问该机密的策略,例如
# policy: rsa
path "secret/rsa" {
capabilities = ["read"]
}
然后为该策略创建一个包装令牌,例如
$ vault token create -policy=rsa -num_uses=1 -wrap-ttl=120
Key Value
--- -----
wrapping_token: s.9QFJ8mRxGJD0e7kFfFIbdpDM
wrapping_accessor: S0zKNUr2ENbnCtj0YyriO31b
wrapping_token_ttl: 2m
wrapping_token_creation_time: 2019-12-17 09:45:42.537057 -0800 PST
wrapping_token_creation_path: auth/token/create
wrapped_accessor: VmBKXoc19ZLZlHGl0nQCvV6r
这将生成一个包装令牌。
您可以将其提供给您的最终用户,他们可以使用
将其解包
VAULT_TOKEN="s.3Kf3Xfn58Asr3bSDkRXATHrw" vault unwrap
这将生成一个令牌。
使用该令牌,用户将只能登录到保险库并检索 rsa 信用一次,因为此后令牌将无效。
您现在可以保证信用仅被目标用户使用,因为包装的令牌只能解包一次。
注意:如果您的最终用户通过 UI 创建令牌,您可能需要调整 num_uses
,因为 UI 可能使用令牌执行多个操作动作。
任何秘密引擎都可以使用“一次性”密码吗?
我有一个命令可以为用户生成一个 rsa 密钥对,并希望他们检索他们的私钥。我显然可以将其打印出来,或写入文件等,但我认为如果将其存储在保险库中的“一次性”位置会更好吗?然后用户可以通过 UI 检索它,并且知道没有其他人查看过它。如果其他人看到它,他们将需要重新生成。
基本上我们可以有一个只能读取一次的保管库密钥吗?
您可以创建一个只能访问该机密的策略,例如
# policy: rsa
path "secret/rsa" {
capabilities = ["read"]
}
然后为该策略创建一个包装令牌,例如
$ vault token create -policy=rsa -num_uses=1 -wrap-ttl=120
Key Value
--- -----
wrapping_token: s.9QFJ8mRxGJD0e7kFfFIbdpDM
wrapping_accessor: S0zKNUr2ENbnCtj0YyriO31b
wrapping_token_ttl: 2m
wrapping_token_creation_time: 2019-12-17 09:45:42.537057 -0800 PST
wrapping_token_creation_path: auth/token/create
wrapped_accessor: VmBKXoc19ZLZlHGl0nQCvV6r
这将生成一个包装令牌。
您可以将其提供给您的最终用户,他们可以使用
将其解包VAULT_TOKEN="s.3Kf3Xfn58Asr3bSDkRXATHrw" vault unwrap
这将生成一个令牌。
使用该令牌,用户将只能登录到保险库并检索 rsa 信用一次,因为此后令牌将无效。
您现在可以保证信用仅被目标用户使用,因为包装的令牌只能解包一次。
注意:如果您的最终用户通过 UI 创建令牌,您可能需要调整 num_uses
,因为 UI 可能使用令牌执行多个操作动作。