【发布时间】:2020-11-26 14:25:32
【问题描述】:
Hashicorp-Vault AppRole Auth Method 和 Userpass Auth Method 的主要区别是什么?
在文档中,我看到approle 主要用于机器或应用程序,而userpass 用于用户。
显而易见的是 API 略有不同,命名也有所不同:
在安全性、性能等方面的其他主要区别是什么?
【问题讨论】:
标签: authentication hashicorp-vault
Hashicorp-Vault AppRole Auth Method 和 Userpass Auth Method 的主要区别是什么?
在文档中,我看到approle 主要用于机器或应用程序,而userpass 用于用户。
显而易见的是 API 略有不同,命名也有所不同:
在安全性、性能等方面的其他主要区别是什么?
【问题讨论】:
标签: authentication hashicorp-vault
另一个主要区别是工作流程,因为目标受众。让我解开这个。
userpass 是为人类用户制作的。 approle 用于服务/机器/脚本。
由这种工作流程差异引起的主要差异在于您如何轮换您的秘密。
对于userpass,每个用户名都有一个密码。当您更改该单一密码时,它会立即更改并且之前的密码会被撤销。
Approle 的工作方式更像传统的 API 密钥(或 AWS 访问密钥,如果您熟悉它们,以及为什么 AWS 允许您拥有 2 个不同的密钥):对于每个角色 ID,您可以创建多个秘密 ID。当您需要将这些秘密分配给多个实例并轮换它们时,这将变得非常有用:新秘密 ID 的创建和前一个秘密 ID 的撤销是分离的。
要记住的另一个有用的区别是,尽管userpass 和approle 都允许您对生成的令牌设置 num_uses 或 IP 限制,approle 还允许您对 secret_id 设置验证约束: secret_id 可以设置为仅对特定 IP 有效,仅特定次数,或具有 TTL(此 TTL 在 secret-id 上,而不在令牌上,令牌可以有另一个 TTL)。
这些 secret-id 限制让您可以更好地控制如何保护您的身份验证数据分发(包装确实非常好,但这些其他设置为您提供了很多选项以使其在您的工作流程中工作,具体取决于服务您正在尝试保护)。
【讨论】:
userpass 登录用户界面,但不能使用approle
我认为主要区别在于能够将 AppRole 与 secret_id 解包一起使用以进行安全介绍。这意味着您的应用程序构建和交付管道永远不会完全知道最终的身份验证凭据,而是应用程序本身。
还应注意,secret_id 是动态的,因此使用相同 role_id 的每个应用程序实例将有效地使用不同的“密码”。 secret_id 本身也可以限制使用次数。
我建议查看https://learn.hashicorp.com/tutorials/vault/approle#response-wrap-the-secretid
【讨论】: