我想知道对于我的情况什么是最好的。我知道通常你只需要每个应用程序 1 个服务主体 (SP)。由于我没有找到关于我的场景的任何明确答案,所以这里是详细信息。
但是,我们假设以下情况:
- 我有一个小应用程序. 安装在我拥有的每个客户处(假设有 100 个)
- 每个客户都将向 EventHub 发送事件(仅发送)
- 这小应用程序使用凭证连接到我的服务以检索事件中心的密钥
- 我的服务连接到 Azure,当小应用程序请求 EventHub 凭据时,我会发回一个 Secret/Certificate
所以基本上我应该:
- 每个客户管理 1 个 SP ?
- 为 SP 创建/管理多个秘密/证书(假设每个客户一个)
- 从我的服务中使用 1 SP + 1 证书并使用它来创建一个新的令牌,然后将其提供给我的小应用程序
- 退一步说,据我所知,一旦令牌被使用,我们就无法使它无效,直到它尝试重新连接
注意:当然不是要做这 3 项,只要做 1 项就行。
我在https://docs.microsoft.com/en-us/azure/event-hubs/authorize-access-shared-access-signature:
如果您的应用程序需要根据用户或服务身份授予对事件中心资源的访问权限,则它应该实现安全令牌服务,该服务在身份验证和访问检查后颁发 SAS 令牌。
所以我猜选项 3 是可行的
答案1
最安全的选项是选项 3,让您的应用在需要时生成 SAS 令牌,并使其生命周期尽可能短。这样,如果您确实需要撤销访问权限,则最大延迟就是 SAS 令牌的生命周期。