Проверка подлинности RBAC в концентраторе событий Azure

Я ищу аутентификацию в концентраторе событий Azures с помощью RBAC. Текущая реализация находится на Python и использует SAS, но нам нужен больший контроль над доступом. Я только нашел, как это сделать, в C #. Возможно ли это в Python или Java?


person jokarl    schedule 28.05.2019    source источник


Ответы (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