Использование управляемых удостоверений для доставки событий в Сетке событий Azure

В этой статье объясняется, как включить удостоверения управляемых служб для системных тем Сетка событий Azure, пользовательских тем и доменов. В нем также объясняется, как использовать управляемые удостоверения для доставки событий в поддерживаемые назначения, такие как очереди и темы служебная шина, центры обработки событий и учетные записи хранения.

Предпосылки

  1. Назначьте системно назначаемое удостоверение или пользовательски назначаемое удостоверение к системной теме, пользовательской теме или домену.

  2. Добавьте удостоверение в соответствующую роль, например отправитель данных служебной шины, в месте назначения, например очередь служебной шины. Подробные инструкции см. в статье "Добавление удостоверения в роли Azure" в местах назначения.

    Замечание

    В настоящее время нельзя доставлять события через частные эндпоинты. Дополнительные сведения см. в разделе "Частные конечные точки " в конце этой статьи.

Создание подписок на события с использованием идентификации

После того как вы настроите настраиваемую тему Event Grid, системную тему или домен с управляемым удостоверением и добавите это удостоверение в соответствующую роль в целевой системе, вы готовы создавать подписки, использующие это удостоверение.

Использование портала Azure

При создании подписки на событие вы увидите параметр, позволяющий включить системно назначенную или назначаемую пользователем управляемую идентификацию для конечной точки в разделе СВЕДЕНИЯ О КОНЕЧНОЙ ТОЧКЕ.

В этом примере показано, как включить системное удостоверение при создании подписки на события с очереди служебная шина в качестве конечной точки.

Скриншот включения системной идентификации для подписки очереди служебная шина.

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

Снимок экрана: включение системного идентификатора для помещения в 'мёртвое письмо'.

Включите управляемое удостоверение для подписки на события после её создания. На странице "Подписка на события" для подписки на событие перейдите на вкладку "Дополнительные функции ", чтобы просмотреть этот параметр. Вы также можете включить идентификацию для обработки недоставленных сообщений на этой странице.

Снимок экрана: включение системного удостоверения для существующей подписки на события.

Если вы включите назначаемые пользователем удостоверения для темы, в раскрывающемся списке для типа управляемого удостоверения будет доступна опция назначаемого пользователем удостоверения. Если выбрать назначенный пользователем тип управляемых удостоверений, можно выбрать назначаемое пользователем удостоверение, которое вы хотите использовать для доставки событий.

Снимок экрана включения идентификации, назначенной пользователем, в подписке на событие.

Использование Azure CLI — очередь служебная шина

В этом разделе вы узнаете, как с помощью Azure CLI включить удостоверение, назначаемое системой, для доставки событий в очередь служебная шина. Удостоверение должно быть членом роли отправителя данных служебной шины Azure и роль участника данных BLOB-объектов хранилища в учетной записи хранения, используемой для недоставки.

Определение переменных

subid="<AZURE SUBSCRIPTION ID>"
rg="<RESOURCE GROUP of EVENT GRID CUSTOM TOPIC>"
topicname="<EVENT GRID TOPIC NAME>"

# get the service bus queue resource id
queueid=$(az servicebus queue show --namespace-name <SERVICE BUS NAMESPACE NAME> --name <QUEUE NAME> --resource-group <RESOURCE GROUP NAME> --query id --output tsv)
sb_esname="<Specify a name for the event subscription>"

Создайте подписку на события, используя управляемое удостоверение для доставки

Эта команда создает подписку на событие для настраиваемого раздела Сетки событий с типом конечной точки, заданным для очереди служебной шины.

az eventgrid event-subscription create \
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname \
    --delivery-identity-endpoint-type servicebusqueue \
    --delivery-identity systemassigned \
    --delivery-identity-endpoint $queueid \
    -n $sb_esname

Создание подписки на события с использованием управляемого удостоверения для доставки и обработки недоставленных сообщений.

Эта примерная команда создает подписку на события для настраиваемого раздела Сетки событий с типом конечной точки, заданным для очереди служебной шины. Также указано, что Event Grid использует управляемую идентичность, назначенную системой, для мертвых букв.

storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)
deadletterendpoint="$storageid/blobServices/default/containers/<BLOB CONTAINER NAME>"

az eventgrid event-subscription create \
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname \
    --delivery-identity-endpoint-type servicebusqueue \
    --delivery-identity systemassigned \
    --delivery-identity-endpoint $queueid \
    --deadletter-identity-endpoint $deadletterendpoint \
    --deadletter-identity systemassigned \
    -n $sb_esname

Использование Azure CLI — Центры событий

В этом разделе вы узнаете, как использовать Azure CLI, чтобы обеспечить системно назначенную идентичность для доставки событий в хаб событий. Идентификатор должен быть членом роли отправителя данных Центры событий Azure. Он также должен быть членом роли Storage Blob Data Contributor на аккаунте хранения, который вы используете для dead-lettering.

Определение переменных

subid="<AZURE SUBSCRIPTION ID>"
rg="<RESOURCE GROUP of EVENT GRID CUSTOM TOPIC>"
topicname="<EVENT GRID CUSTOM TOPIC NAME>"

hubid=$(az eventhubs eventhub show --name <EVENT HUB NAME> --namespace-name <NAMESPACE NAME> --resource-group <RESOURCE GROUP NAME> --query id --output tsv)
eh_esname="<SPECIFY EVENT SUBSCRIPTION NAME>"

Создайте подписку на события, используя управляемое удостоверение для доставки

Эта примерная команда создает подписку на события для настраиваемого раздела Сетки событий с типом конечной точки, заданным для Центров событий.

az eventgrid event-subscription create \
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname \
    --delivery-identity-endpoint-type eventhub \
    --delivery-identity systemassigned \
    --delivery-identity-endpoint $hubid \
    -n $eh_esname

Создание подписки на события с использованием управляемого удостоверения для доставки и обработки недоставленных сообщений.

Эта примерная команда создает подписку на события для настраиваемого раздела Сетки событий с типом конечной точки, заданным для Центров событий. Также указывается, что управляемая идентификация, назначенная системой, обрабатывает мёртвые буквы.

storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)
deadletterendpoint="$storageid/blobServices/default/containers/<BLOB CONTAINER NAME>"

az eventgrid event-subscription create \
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname \
    --delivery-identity-endpoint-type eventhub \
    --delivery-identity systemassigned \
    --delivery-identity-endpoint $hubid \
    --deadletter-identity-endpoint $deadletterendpoint \
    --deadletter-identity systemassigned \
    -n $eh_esname

Использование интерфейса командной строки Azure — очередь хранилища Azure

В этом разделе вы узнаете, как использовать Azure CLI, чтобы включить системно назначенное удостоверение для доставки событий в очередь служба хранилища Azure. Удостоверение должно быть членом роли отправитель сообщений данных в очереди хранилища в учетной записи хранилища. Он также должен быть членом роли Storage Blob Data Contributor на аккаунте хранения, который вы используете для dead-lettering.

Определение переменных

subid="<AZURE SUBSCRIPTION ID>"
rg="<RESOURCE GROUP of EVENT GRID CUSTOM TOPIC>"
topicname="<EVENT GRID CUSTOM TOPIC NAME>"

# get the storage account resource id
storageid=$(az storage account show --name <STORAGE ACCOUNT NAME> --resource-group <RESOURCE GROUP NAME> --query id --output tsv)

# build the resource id for the queue
queueid="$storageid/queueservices/default/queues/<QUEUE NAME>"

sa_esname="<SPECIFY EVENT SUBSCRIPTION NAME>"

Создайте подписку на события, используя управляемое удостоверение для доставки

az eventgrid event-subscription create \
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname \
    --delivery-identity-endpoint-type storagequeue \
    --delivery-identity systemassigned \
    --delivery-identity-endpoint $queueid \
    -n $sa_esname

Создание подписки на события с использованием управляемого удостоверения для доставки и обработки недоставленных сообщений.

storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)
deadletterendpoint="$storageid/blobServices/default/containers/<BLOB CONTAINER NAME>"

az eventgrid event-subscription create \
    --source-resource-id /subscriptions/$subid/resourceGroups/$rg/providers/Microsoft.EventGrid/topics/$topicname \
    --delivery-identity-endpoint-type storagequeue \
    --delivery-identity systemassigned \
    --delivery-identity-endpoint $queueid \
    --deadletter-identity-endpoint $deadletterendpoint \
    --deadletter-identity systemassigned \
    -n $sa_esname

Частные конечные точки

В настоящее время нельзя доставлять события через частные эндпоинты. То есть, нет поддержки, если у вас есть строгие требования к сетевой изоляции, в которых трафик доставленных событий не должен оставить частное IP-пространство.

Однако если ваши требования требуют безопасного способа отправки событий с использованием зашифрованного канала и известной идентификации отправителя (в данном случае Event Grid) с помощью публичного IP-пространства, вы можете доставлять события в Event Hubs, служебная шина или сервис служба хранилища Azure, используя пользовательскую тему Сетка событий Azure или домен с управляемой идентичностью, как показано в этой статье. Затем можно использовать приватную ссылку, настроенную в Функции Azure, или веб-хук, развернутый в вашей виртуальной сети, для извлечения событий. См. руководство. Подключение к частным конечным точкам с помощью Функций Azure.

В этой конфигурации трафик проходит через публичный IP/интернет от Event Grid к Event Hubs, служебная шина или служба хранилища Azure, но вы можете зашифровать канал и использовать управляемую идентичность Event Grid. Если вы настраиваете функции Azure или веб-перехватчик, развернутые в виртуальной сети для использования центров событий, служебной шины или службы хранилища Azure через приватную связь, этот раздел трафика остается в Azure.

Сведения об управляемых удостоверениях см. в разделе что такое управляемые удостоверения для ресурсов Azure.