安全

保险库

以下步骤详细介绍了在保险库中存储密钥的过程。您还可以查看营销安全页面以获取相同内容。

步骤 1

npx dotenv-vault push 您运行 npx dotenv-vault push。您的请求已启动。

步骤 2

加密连接您的 .env 文件被加密并通过 SSL 安全地发送到 Dotenv 的内存服务器。

步骤 3

Dotenv 服务器此加密有效负载被解密,并在内存中短暂保存以完成后续步骤。之后,内存将被刷新。请放心,解密版本永远不会持久保存到 Dotenv 系统。

步骤 4

解析您的 .env 文件在内存中逐行解析。

步骤 5

密钥提取每个键值对(以及任何注释)在内存中提取。

步骤 6

密钥划分密钥被分成独立的密钥和值。这是故意的。它们将存储在单独的数据库中,以增强安全性。这样,如果攻击者以某种方式获得了对一个数据库的访问权限,他们将无法理解数据,因为他们只拥有拼图的一半。

步骤 7

AES-GCM 加密密钥被加密。值被加密。它们使用不同的主加密密钥进行加密。这样,如果攻击者以某种方式获得了对值解密密钥的访问权限,他们会发现数据毫无用处。他们将不知道密钥是否属于 Twilio 还是 AWS。

加密使用 AES-GCM 算法。它是

  • 经过充分研究的
  • NIST 建议的
  • IETF 标准
  • 由于专用的指令集,速度很快

此外,所有主加密密钥都按照未公布的计划进行轮换,进一步增强了安全性。

步骤 8

令牌化加密后的值被发送到 Dotenv Vault 以安全存储。令牌作为标识符返回。令牌在下一步中用于将密钥映射到值,以便以后进行安全读取操作。

保险库中包含多项安全措施。它们包括但不限于

  • 与应用程序数据库分离的数据存储
  • 无法通过互联网访问,所有外部连接都被阻止
  • 需要加密客户端,这些客户端必须通过应用程序(它具有自己的额外加密层)进行连接
  • 对连接到保险库的要求更加严格。TLS 1.0 无法用于连接。
  • 存储在保险库中的密钥不仅在数据存储级别被加密,而且在每个数据存储条目中也被加密,正如您在上一步(步骤)中所见。

步骤 9

存储密钥部分与令牌最后,加密的密钥和令牌(代表加密的值)被放在信封中,并一起存储在应用程序数据库中。

步骤 10

成功 201向开发人员返回成功消息。

安全规范

以下是构建 Dotenv Vault 时采用的其他规范。

  • Dotenv Vault 是一个与应用程序数据库分离的数据存储。这样,如果攻击者获得了对应用程序数据库的访问权限,他们将无法获得对保险库数据存储的访问权限。
  • Dotenv Vault 数据存储无法通过互联网访问,所有外部连接都被阻止。这样,攻击者无法远程访问 Dotenv Vault 数据存储。需要加密客户端,这些客户端必须通过应用程序(它具有自己的加密层)进行连接。
  • 对连接到 Dotenv Vault 数据存储的要求更加严格。TLS 1.0 无法用于连接。
  • 存储在 Dotenv Vault 中的密钥不仅在数据存储级别被加密,而且在每个值中也被加密。这样,即使攻击者获得了对数据存储的访问权限,他们也无法理解加密的值。
  • 保险库不存储密钥。它只存储值。密钥存储在应用程序数据库中,一个共享指针(在两个数据存储中)允许它们被识别为一对。这样,攻击者必须同时获得对应用程序数据库和 Dotenv Vault 数据存储的访问权限才能理解这些值。
  • 用于加密密钥值的加密密钥会按照未公布的计划进行轮换。这样,攻击者可能会获得旧的加密密钥,但不会获得最新的密钥,从而阻止他们解密密钥值。
  • 加密使用 AES-GCM 加密。它是一种经过充分研究、NIST 建议的 IEFT 标准算法。
  • 如您所见,我们竭尽全力确保您的密钥安全。毕竟,我们也会在这里保存我们的密钥。