📅  最后修改于: 2023-12-03 15:07:57.946000             🧑  作者: Mango
在计算机安全中,保险库(Vault)是一种安全存储机制,用于存储敏感数据如密码、API密钥等。Vault提供了一个REST API,并支持多种身份验证机制。
在本文中,我们将学习如何在Vault中包装SSH密钥。包装密钥可以为你的服务(比如CI/CD工具)提供安全的身份验证方式,而无需让你的用户看到实际密钥。
在继续之前,我们需要完成以下操作:
vault
命令)。假设我们已经获得了一个SSH密钥,并将它存储在Vault中。我们将使用 vault ssh
命令来包装它。
$ vault ssh -role="my-role" \
-mode=ca \
-mount-point="ssh" \
user@remote-host
这将使用名为 my-role
的角色来包装SSH密钥。我们还需要指定-mount-point
选项,以指定位于Vault中存储SSH密钥的特定路径。
-mode
选项指定了证书的使用模式(CA 模式下,Vault会签发用于TLS、SSH等协议的证书)。
最后,我们将使用 vault ssh
连接到远程主机。
经过身份验证后,Vault将签发“包装后”(wrapped)的SSH密钥,该密钥仅能使用特定操作来解包,如下所示:
Key Value
--- -----
wrapping_token s.abcdef1234567
wrapped_kv secret/ssh/creds/my-role/abcdef1234567
wrapped_kv
包含了由Vault包装的SSH密钥。但是,为了保证安全,Vault只会显示 wrapping_token
作为授权标识。
此时,我们可以从授权用户处收到 wrapping_token
并将其返回给Vault以获取SSH密钥。
现在,我们已经将SSH密钥包装于Vault中,并且在得到一次性授权标识 wrapping_token
之后,我们可以解包SSH密钥。
$ vault unwrap -address=https://vault.example.com s.abcdef1234567
Key Value
--- -----
key -----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
现在,我们已经成功地在Vault中包装并解包了SSH密钥!这是一种非常安全且实用的身份验证方式,因为我们不需要显示真实密钥。
本文介绍了如何将SSH密钥包装于Vault中,并使用一次性授权标识解包它。通过使用Vault,我们可以更加安全地管理敏感数据,而无需牺牲实用性。