1

我正在开发一个使用 Azure 事件网格的项目,其中 Web 应用程序将自定义事件发送到事件网格,并且使用单独的应用程序中的 Web 挂钩来订阅这些事件。

看起来它在 web-hook 方面是安全的,因为只有您可以添加特定的 web hook 以用作事件网格订阅。但是,我没有找到太多关于如何限制事件网格仅从特定端点接收事件的信息。现在它只为您提供一个端点和一个主题键,在向主题发送事件时必须使用它们。如果有人设法同时获得端点和令牌密钥,则可以将“恶意事件”发送到事件网格。

有没有办法限制事件网格只接受来自特定源的事件,或者从 Key Vault 存储和检索密钥,这是最安全的选项?

4

1 回答 1

1

向主题发布消息时,您可以使用密钥或 SAS 令牌进行身份验证。

  1. 使用密钥是最简单的身份验证方式,但正如您所提到的,如果被盗,可能会导致发送恶意事件。

    保护这种方法的一种方法是使用您提到的 KeyVault。客户端可以使用托管标识(如果在 Azure 上运行)或客户端凭据流安全地连接到 KeyVault 。

  2. 使用 SAS 令牌是保护发布端点的推荐方法。为此,您必须在需要时使用密钥生成令牌(与 1 中的密钥相同)

    在这种方法中,您可以使用一个 API(例如 Azure 函数)来代表您的客户端生成 SAS 令牌。此 API 仍需要密钥(可能位于 KeyVault 中)来生成 SAS 令牌。

  3. 另一种方法是拥有一个 API,它可以在身份验证/授权时将事件转发到事件网格。此 API 仍需要访问密钥。

    这可以通过几种方式实现,例如

于 2019-12-05T06:47:34.603 回答