Концентратор событий Azure - проверка подлинности пользователя перед отправкой событий - PullRequest
0 голосов
/ 13 июня 2019

Я могу отправить события в 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 Ответ

1 голос
/ 13 июня 2019

Нет, вы не можете.Существует функция предварительного просмотра , как упомянуто в комментарии, она использует роль RBAC Azure для авторизации доступа к Eventhub, но это просто другой способ, если кто-то знает вашу строку подключения, он также может отправлять события.

Мой обходной путь - использовать Azure Keyvault для сохранения строки соединения в качестве секрета.Затем вы можете установить Access policies keyvault, добавить нужного пользователя / участника службы.Только секретные данные могут получить только пользователи / пользователи с правами доступа.

В упомянутом вами примере используется простой текст static string connectionString = "namespace connection string", я полагаю, вы думаете, что это небезопасно.После сохранения строки подключения в keyvault вы можете использовать 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;

Для получения дополнительной информации вы можете обратиться к ссылкам ниже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...