我正在一个使用Azure Event Grid的项目中,在该项目中,Web应用程序将自定义事件发送到事件网格,并且使用单独应用程序中的Web挂钩来订阅这些事件。
在Web挂钩方面看起来很安全,因为只有您可以添加要用作事件网格订阅的特定Web挂钩。 但是,我没有找到太多有关如何限制事件网格仅从特定端点接收事件的信息。现在,它仅向您提供一个端点和一个主题密钥,在向该主题发送事件时必须使用该主题。如果有人设法同时掌握了端点和令牌密钥,则可以将“恶意事件”发送到事件网格。
是否有一种方法可以将事件网格限制为仅接受来自特定来源的事件,或者是从Key Vault(这是最安全的选项)存储和检索密钥?
答案 0 :(得分:0)
将消息发布到主题时,您可以使用密钥或SAS令牌authenticate。
Using a key是最简单的身份验证方法,但是就像您提到的那样,如果被盗,可能会导致发送恶意事件。
确保这种方法安全的一种方法是使用您提到的KeyVault。客户端可以使用Managed Identity(如果在Azure上运行)或Client Credentials flow安全连接到KeyVault。
Using SAS tokens is the recommended way以保护您的发布端点。为此,您将必须在需要时使用密钥(与1中的密钥相同)生成令牌
在这种方法中,您可以具有一个API(例如像Azure函数)代表您的客户端生成SAS令牌。该API仍将需要密钥(可能在KeyVault中)来生成SAS令牌。
另一种方法是拥有一个可以在身份验证/授权后将事件转发到事件网格的API。该API仍需要访问密钥。
这可以通过几种方法来实现