📜  在保险库中包装令牌 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:07:57.946000             🧑  作者: Mango

在保险库中包装令牌 - Shell-Bash

在计算机安全中,保险库(Vault)是一种安全存储机制,用于存储敏感数据如密码、API密钥等。Vault提供了一个REST API,并支持多种身份验证机制。

在本文中,我们将学习如何在Vault中包装SSH密钥。包装密钥可以为你的服务(比如CI/CD工具)提供安全的身份验证方式,而无需让你的用户看到实际密钥。

前置条件

在继续之前,我们需要完成以下操作:

  • 安装Vault客户端(vault 命令)。
  • 了解如何初始化Vault和创建外部身份验证机制(例如Github)。
  • 创建一个授权策略,用于授权SSH密钥的读取和包装。
包装密钥

假设我们已经获得了一个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,我们可以更加安全地管理敏感数据,而无需牺牲实用性。