Я ищу аутентификацию в концентраторе событий Azures с помощью RBAC. Текущая реализация находится на Python и использует SAS, но нам нужен больший контроль над доступом. Я только нашел, как это сделать, в C #. Возможно ли это в Python или Java?
Проверка подлинности RBAC в концентраторе событий Azure
Ответы (1)
Да, он поддерживается в SDK Python azure-eventhub v5, который доступен на pypi.
Я предполагаю, что вы уже знаете, как работает этот механизм RBAC, знакомы с такими понятиями, как AzureAD / Identity / Credential.
Вы можете следовать образец кода для настройки учетных данных при настройке EventHubProducerClient/EventHubConsumerClient
:
import os
from azure.eventhub import EventData, EventHubProducerClient
from azure.identity import EnvironmentCredential
fully_qualified_namespace = os.environ['EVENT_HUB_HOSTNAME']
eventhub_name = os.environ['EVENT_HUB_NAME']
credential = EnvironmentCredential()
# Note: One has other options to specify the credential. For instance, DefaultAzureCredential.
# Default Azure Credentials attempt a chained set of authentication methods, per documentation here: https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/identity/azure-identity
# For example user to be logged in can be specified by the environment variable AZURE_USERNAME, consumed via the ManagedIdentityCredential
# Alternately, one can specify the AZURE_TENANT_ID, AZURE_CLIENT_ID, and AZURE_CLIENT_SECRET to use the EnvironmentCredentialClass.
# The docs above specify all mechanisms which the defaultCredential internally support.
#
# credential = DefaultAzureCredential()
producer = EventHubProducerClient(fully_qualified_namespace=fully_qualified_namespace,
eventhub_name=eventhub_name,
credential=credential)
with producer:
event_data_batch = producer.create_batch()
while True:
try:
event_data_batch.add(EventData('Message inside EventBatchData'))
except ValueError:
# EventDataBatch object reaches max_size.
# New EventDataBatch object can be created here to send more data.
break
producer.send_batch(event_data_batch)
print('Finished sending.')
Если вы являетесь пользователем версии 1, вы можете подписаться на руководство по переходу с v1 на v5 для переноса вашей программы.
person
Adam Ling
schedule
10.12.2020