Hashicorp-Vault AppRole Auth Method 和 Userpass Auth Method 之间的主要区别是什么?

What are the main differences between Hashicorp-Vault AppRole Auth Method and Userpass Auth Method?

Hashicorp-Vault AppRole Auth Method 和 Userpass Auth Method 之间的主要区别是什么?

在文档中我看到 approle is intended to be used mostly by machines or apps and userpass 是针对用户的。

明显的是略有不同 API 和一些不同的命名:

在安全性、性能等方面的其他主要区别是什么?

我认为一个主要区别是使用 AppRole 和 secret_id 展开安全引入的能力。这意味着您的应用程序构建和交付管道永远不会完全知道最终的身份验证凭据,但应用程序本身会完全知道。

还应注意 secret_id 是动态的,因此使用相同 role_id 的每个应用程序实例实际上将使用不同的“密码”。 secret_id本身也可以限制使用次数

我建议查看 https://learn.hashicorp.com/tutorials/vault/approle#response-wrap-the-secretid

另一个主要区别是工作流程,因为目标受众不同。让我解压这个。

userpass 是为人类用户设计的。 approle 是为 services/machines/scripts 制作的。

由于这种工作流程的不同,一个主要的不同在于你如何轮换你的秘密。 使用 userpass,每个用户名都有一个密码。当您更改单个密码时,它会立即更改,并且先前的密码会被撤销。

Approle 的工作方式更像传统的 API 密钥(或者 AWS 访问密钥,如果您熟悉它们,以及为什么 AWS 让您拥有 2 个不同的密钥):对于每个角色 ID,您可以创建多个秘密编号。当您需要将这些秘密分发到多个实例并轮换它们时,这会变得非常有用:新秘密 ID 的创建和前一个秘密 ID 的撤销是分离的

另一个需要记住的有用区别是,尽管 userpassapprole 都允许您对生成的令牌设置 num_uses 或 IP 限制,但 approle 还允许您在 secret_id 上设置了验证约束:secret_id 可以设置为仅对特定 IP 有效,仅特定次数,或具有 TTL(此 TTL 开启secret-id,不在令牌上,可以有另一个 TTL)。

这些 secret-id 限制使您可以更好地控制如何保护您的身份验证数据分发(包装确实非常好,但这些其他设置为您提供了很多选项,使其在您的工作流程中发挥作用,具体取决于您要保护的服务)。