Авторизация доступа к ресурсам службы "Сетка событий"

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

Типы операций

Чтобы просмотреть список операций, поддерживаемых сеткой событий Azure, выполните следующую команду Azure CLI:

az provider operation show --namespace Microsoft.EventGrid

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

  • Microsoft.EventGrid/eventSubscriptions/getFullUrl/action
  • Microsoft.EventGrid/topics/listKeys/action
  • Microsoft.EventGrid/topics/regenerateKey/action

Встроенные роли

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

Роль Описание
EventGrid EventSubscription Reader Позволяет читать подписки на события в Event Grid.
EventGrid EventSubscription Contributor Позволяет управлять операциями с подписками на события Сетки событий.
EventGrid Contributor Позволяет создавать ресурсы Сетки событий и управлять ими.
EventGrid Data Sender Позволяет отправлять события в разделы Сетки событий.

Роли Читатель подписки сетки событий и Автор подписки сетки событий предназначены для управления подписками на события. Эти роли необходимы для реализации доменов событий, так как они предоставляют пользователям разрешения, необходимые для подписки на темы в домене событий. Эти роли предназначены для подписки на события и не предоставляют доступа к действиям, например для создания тем.

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

Примечание.

Выберите ссылки в первом столбце для перехода к статье с дополнительными сведениями о роли. Инструкции по назначению пользователей или групп ролям RBAC см. в этой статье.

Пользовательские роли

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

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

  • EventGridReadOnlyRole.json: предоставляет операции только для чтения.
{
  "Name": "Event grid read only role",
  "Id": "7C0B6B59-A278-4B62-BA19-411B70753856",
  "IsCustom": true,
  "Description": "Event grid read only role",
  "Actions": [
    "Microsoft.EventGrid/*/read"
  ],
  "NotActions": [
  ],
  "AssignableScopes": [
    "/subscriptions/<Subscription Id>"
  ]
}
  • EventGridNoDeleteListKeysRole.json: предоставляет ограниченные действия после выполнения, но запрещает удалять действия.
{
  "Name": "Event grid No Delete Listkeys role",
  "Id": "B9170838-5F9D-4103-A1DE-60496F7C9174",
  "IsCustom": true,
  "Description": "Event grid No Delete Listkeys role",
  "Actions": [
    "Microsoft.EventGrid/*/write",
    "Microsoft.EventGrid/eventSubscriptions/getFullUrl/action"
    "Microsoft.EventGrid/topics/listkeys/action",
    "Microsoft.EventGrid/topics/regenerateKey/action"
  ],
  "NotActions": [
    "Microsoft.EventGrid/*/delete"
  ],
  "AssignableScopes": [
    "/subscriptions/<Subscription id>"
  ]
}
  • EventGridContributorRole.json: предоставляет все действия сетки событий.
{
  "Name": "Event grid contributor role",
  "Id": "4BA6FB33-2955-491B-A74F-53C9126C9514",
  "IsCustom": true,
  "Description": "Event grid contributor role",
  "Actions": [
    "Microsoft.EventGrid/*/write",
    "Microsoft.EventGrid/*/delete",
    "Microsoft.EventGrid/topics/listkeys/action",
    "Microsoft.EventGrid/topics/regenerateKey/action",
    "Microsoft.EventGrid/eventSubscriptions/getFullUrl/action"
  ],
  "NotActions": [],
  "AssignableScopes": [
    "/subscriptions/<Subscription id>"
  ]
}

Пользовательские роли можно создавать с помощью PowerShell, Azure CLI и REST.

Шифрование при хранении

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

Разрешения для подписок на события

Если вы используете обработчик событий, который не является веб-перехватчиком (например, концентратором событий или хранилищем очередей), требуется право записи на этот ресурс. Данная проверка разрешений предотвращает попытки неавторизованных пользователей отправить события в ресурс.

Чтобы использовать ресурс, который является источником события, необходимо иметь разрешение Microsoft.EventGrid/EventSubscriptions/Write. Эти права необходимы, потому что вы создаете новую подписку на уровне ресурса. Требуемый ресурс зависит от того, на какой раздел оформляется подписка: системный или пользовательский. В этом разделе описываются оба типа.

Системные разделы (издатели служб Azure)

В отношении системных разделов, если вы не являетесь владельцем или участником исходного ресурса, необходимо разрешение на запись новой подписки на события в области действия ресурса, который публикует событие. Ресурс имеет следующий формат: /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/{resource-provider}/{resource-type}/{resource-name}

Например, чтобы подписаться на событие в учетной записи хранения с именем myacct, требуется разрешение Microsoft.EventGrid/EventSubscriptions/Write для следующего ресурса: /subscriptions/####/resourceGroups/testrg/providers/Microsoft.Storage/storageAccounts/myacct

Пользовательские темы

Для пользовательских тем необходимо получить разрешение на создание новой подписки на события в пределах темы Event Grid. Ресурс имеет следующий формат: /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.EventGrid/topics/{topic-name}

Например, чтобы подписаться на пользовательский раздел с именем mytopic, требуется разрешение Microsoft.EventGrid/EventSubscriptions/Write для следующего ресурса: /subscriptions/####/resourceGroups/testrg/providers/Microsoft.EventGrid/topics/mytopic