Поделиться через


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

Сетка событий 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

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

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

Роль Description
EventGrid EventSubscription Reader Позволяет читать подписки на события Сетки событий.
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.

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

События и данные, записываемые на диск службой "Сетка событий", шифруются при хранении с помощью ключа, которым управляет корпорация Майкрософт. Кроме того, максимальный период, в течение которого хранятся события или данные, составляет 24 часа согласно политике повтора службы "Сетка событий". Служба "Сетка событий" автоматически удалит все события или данные через 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

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

Для пользовательских разделов необходимо разрешение на запись новой подписки на события в области действия сетки событий. Ресурс имеет следующий формат: /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

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