我在试着理解Vault工作流w.r.t。密钥,例如:https://www.vaultproject.io/docs/concepts/seal

据我所知,
我把钥匙打开了,怎么检查其他钥匙呢?这些钥匙是不可能的吗?这些钥匙只是存放在里面的某个地方吗?
解封是获取明文根密钥以读取解密密钥以解密数据的过程,允许访问Vault。
是数据加密密钥/密钥环在打开时也被解密了,还是.也许每个Vault操作都被解密了(所以只有根密钥在解封后存储在明文中)?
根键可以在打开后以明文形式存储吗?还是仍然受到密码/令牌的保护?或者,如果它只是短暂地用于解密数据加密密钥/密钥环,那么这些密钥是如何被保护的?我想这与图像上的锁图标有关:)
我有点搞不懂这是怎么回事。
发布于 2022-03-28 22:04:38
保险库,像其他软件一样,有超级用户的概念。这个概念被称为“根令牌”(不要与根键混淆,我们将回到它)。
一个关于Vault内部架构的完整演讲远远超出了StackOverflow答案的范围。这是我试图澄清的混乱,留下细节给你去探索。
两次起飞开始:
超级用户访问(也称为根令牌)
当Vault初始化时,它将为您提供两组数据:
inital根令牌总是以纯文本形式发出,从未加密过。它意味着立即用于执行初始配置。
最佳做法是只使用根令牌:
almost-root)vault token revoke -self)此时,您可以是almost-root,它应该在某些两个因素后面,具有较强的审计能力,并且有一个有限的有效期(30分钟),等等。您的CI/CD通常可以是almost-root。
现在,假设出于安全原因,almost-root策略不允许更改审计设备,添加或删除它们。
要更改审计设备配置,您需要获得一个新的根令牌。要获得一个,您必须从初始化时得到的碎片生成一个。这是一个安全措施。没有人能靠自己成为根。你必须与其他人勾结,这减少了不法行为的赔付,增加了被抓的风险。
但是,让我们继续讨论如何生成根令牌。
碎片和获取根令牌
金库会用纯文本给你碎片。碎片是Shamir曲线上的点。
当您初始化Vault时,您应该使用发送公钥,以便将碎片加密出来。您可以在命令行(作为文件名)或使用keybase.io别名提供公钥。
然后,您可以安全地分发每个“碎片持有人”一个碎片。让它们立即通过生成根令牌并立即撤销它来解密和测试它们的碎片。你不想发现用户把他的私钥或其他东西放错了地方。
您必须定期对碎片进行测试。人们来来去去,电脑崩溃。当你接近你的门槛时,你必须把新的碎片拿到新的“碎片持有者”。如果您的企业有物理安全,请考虑生成足够多的碎片以生成根令牌,解密它们,将它们存储在CD上并打印出来,然后将所有这些都放在保险箱中的密封信封中。
生成根令牌应该是罕见的,但是我们实际上在每个sprint的末尾使用它来生成almost-root令牌,我们给出了CI/CD工具。这意味着,在日常使用中,没有人在库中拥有超能力。定义“超能力”以适应你的行动现实。
内部加密
因此根令牌根本不参与加密,否则系统将在根令牌被撤销时停止。你不可能有3个或更多的碎片持有者在每一个解密库做(它可以做很多)。
因此,Vault有一个内部加密密钥,该密钥是用Vault之外的密钥材料加密的。只需指出,要么是:
当Vault启动时,它无法读取自己的存储,无论您使用什么存储后端。它在密码“屏障”后面。您可以将Vault凭据给您的KMS,以便它可以解密密钥加密密钥(KEK),该密钥将给它内部加密密钥。这个过程叫做自动拆封。
您在哪里存储的库凭证,以自动解封与KMS或HSM您可能会问?问得好,你得从某个地方开始。也许您设置了云策略,允许运行Vault的给定荚不需要密码就可以访问KMS。
如果你不能设置自动解封,Vault将在密封状态下启动。您必须使用输入给定数量的碎片 (3是默认的)才能允许Vault生成该KEK并打开它本身。它会像那样运行,直到重新启动或手动密封。
https://stackoverflow.com/questions/71619800
复制相似问题