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

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

Необходимые компоненты

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

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

    Примечание.

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

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

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

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

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

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

Screenshot that shows how to enable an identity when creating an event subscription for a Service Bus queue.

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

Screenshot that shows how to enable a system-assigned identity for dead-lettering.

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

Screenshot that shows how to enable a system-assigned identity on an existing event subscription.

Если вы включили удостоверения, назначенные пользователем для раздела, вы увидите параметр удостоверения, назначаемый пользователем, включен в раскрывающемся списке для типа удостоверения Manged. Если для параметра Тип управляемого удостоверения выбрать значение User Assigned (Назначаемые пользователем), то можно будет выбрать удостоверение, назначаемое пользователем, которое необходимо использовать для доставки событий.

Screenshot that shows how to enable a user-assigned identity on an event subscription.

Использование Azure CLI. Очередь Служебной шины

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

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

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

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 

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

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

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_esnameq 

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

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

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

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 $sbq_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 servicebusqueue  
    --delivery-identity systemassigned 
    --delivery-identity-endpoint $hubid
    --deadletter-identity-endpoint $eh_deadletterendpoint
    --deadletter-identity systemassigned 
    -n $eh_esname 

Использование Azure CLI. Очередь службы хранилища Azure

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

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

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-пространство.

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

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

Следующие шаги

Дополнительные сведения об управляемых удостоверениях см. в статье Что такое управляемые удостоверения для ресурсов Azure?