授权访问事件网格资源
借助 Azure 事件网格,可以控制授予不同用户用来执行各种管理操作的访问级别,例如列出事件订阅、创建新的事件订阅及生成密钥。 事件网格使用 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 |
可以读取事件网格事件订阅。 |
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 创建自定义角色。
静态加密
事件网格服务写入到磁盘的所有事件或数据均由 Azure 托管密钥进行加密,以确保对其进行静态加密。 此外,按照事件网格重试策略,保留事件或数据的最长时间为 24 小时。 事件网格将在 24 小时或事件生存时间(以两者中较小者为准)过后自动删除所有事件或数据。
事件订阅权限
如果你使用不是 WebHook 的事件处理程序(例如事件中心或队列存储),则需要对该资源具有写入访问权限。 此权限检查可防止未经授权的用户向你的资源发送事件。
你必须在作为事件源的资源上具有 Microsoft.EventGrid/EventSubscriptions/Write 权限。 因为要在资源范围内写入新的订阅,所以需要此权限。 所需资源因是订阅系统主题还是订阅自定义主题而异。 本部分介绍了这两种类型。
系统主题(Azure 服务发布服务器)
对于系统主题,如果你不是源资源的所有者或参与者,则需要在发布事件的资源范围内写入新事件订阅的权限。 该资源的格式为:/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/{resource-provider}/{resource-type}/{resource-name}
例如,若要订阅存储帐户上名为“myacct”的事件,需要 /subscriptions/####/resourceGroups/testrg/providers/Microsoft.Storage/storageAccounts/myacct
的 Microsoft.EventGrid/EventSubscriptions/Write 权限
自定义主题
对于自定义主题,需要在事件网格主题范围内写入新事件订阅的权限。 该资源的格式为:/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.EventGrid/topics/{topic-name}
例如,若要订阅名为“mytopic”的自定义主题,需要 /subscriptions/####/resourceGroups/testrg/providers/Microsoft.EventGrid/topics/mytopic
的 Microsoft.EventGrid/EventSubscriptions/Write 权限
后续步骤
- 有关事件网格的介绍,请参阅关于事件网格