Azure事件中心-发送事件之前对用户进行身份验证

时间:2019-06-13 00:36:43

标签: azure azure-eventhub

我可以使用下面的链接将事件发送到EventHub。

https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-dotnet-framework-getstarted-send#send-events

以上文章使用Eventhub连接字符串发送事件中心。如果某人(未知用户)知道我的事件中心连接字符串,他们也可以发送事件。

因此,我想在门户中添加以下用户,并且来自下面的用户(以下屏幕快照中的“访问控制”)列表只能将事件发送到我的EventHub。有什么办法可以限制吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

不,您不能。如评论中所述,有a preview feature,它使用azure ad RBAC角色授权对eventhub的访问,但这是另一种不同的方式,如果有人知道您的连接字符串,他也可以发送事件。

我的解决方法是使用Azure Keyvault将连接字符串存储为秘密。然后,您可以设置密钥仓库的Access policies,添加所需的用户/服务主体。然后,只有具有权限的用户/服务主体才能检索机密。

在您提到的示例中,它使用纯文本 static string connectionString = "namespace connection string",我想您可能认为这不安全。将连接字符串存储在密钥库中之后,可以使用keyVaultClient.GetSecretAsync来获取机密,以避免暴露连接字符串。

AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
             KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
             var secret = await keyVaultClient.GetSecretAsync("https://<YourKeyVaultName>.vault.azure.net/secrets/AppSecret")
                     .ConfigureAwait(false);
             Message = secret.Value;

有关更多详细信息,您可以参考下面的链接。