授與事件方格資源的存取權

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>"
  ]
}

您可以搭配 PowerShellAzure CLIREST 建立自訂角色。

待用加密

由事件方格服務寫入磁片的所有事件或資料都會由 Microsoft 管理的金鑰加密,以確保其會在待用時加密。 此外,遵循事件方格重試原則,事件或資料的保留時間上限為 24 小時。 事件方格會在 24 小時或事件存留時間 (以較短者為準) 之後自動刪除所有事件或資料。

事件訂用帳戶的權限

若您使用的事件處理常式不是 WebHook (如事件中樞或佇列儲存體),則需要該資源的寫入權限。 此權限檢查可防止未授權的使用者傳送事件給您的資源。

在事件來源的資源上,您必須具備 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

下一步