將 Event Grid 目的地的存取權授與受控識別

本節描述如何將系統主題、自訂主題或網域的身分識別新增至 Azure 角色。

必要條件

根據下列文章中的指示,指派由系統指派的受控識別:

支援的目的地和 Azure 角色

對事件方格自訂主題或網域啟用身分識別之後,Azure 會自動在 Microsoft Entra ID 中建立身分識別。 將此身分識別新增至適當的 Azure 角色,以便自訂主題或網域將事件轉送至支援的目的地。 例如,將身分識別新增至 Azure 事件中樞命名空間的 Azure 事件中樞資料傳送者角色,以便事件方格自訂主題將事件轉送至該命名空間內的事件中樞。

目前,Azure 事件方格支援以系統指派的受控識別所設定的自訂主題或網域,將事件轉送至下列目的地。 下表也指出哪些角色應該要有此身分識別,以便自訂主題轉送事件。

Destination Azure 角色
服務匯流排佇列與主題 Azure 服務匯流排資料傳送者
Azure 事件中樞 Azure 事件中樞資料傳送者
Azure Blob 儲存體 儲存體 Blob 資料參與者
Azure 佇列儲存體 儲存體佇列資料訊息傳送者

使用 Azure 入口網站

您可以使用 Azure 入口網站,將自訂主題或網域身分識別新增至適當的角色,以便自訂主題或網域將事件轉送至目的地。

下列範例針對名為 msitesttopic 的事件方格自訂主題,將其受控識別新增至 Azure 服務匯流排資料傳送者角色,以提供給包含佇列或主題資源的服務匯流排命名空間。 當您在命名空間層級新增至角色時,事件方格自訂主題可以將事件轉送至命名空間內的所有實體。

  1. 移至 Azure 入口網站中的 [服務匯流排命名空間]

  2. 在左窗格中選取 [存取控制]

  3. 在 [新增角色指派 (預覽)] 區段中,選取 [新增]

    Image showing the selection of Add role assignment (Preview) menu

  4. 在 [新增角色指派] 頁面上,選取 [Azure 服務匯流排資料傳送者],然後選取 [下一步]

    Image showing the selection of the Azure Service Bus Data Sender role

  5. 在 [成員] 索引標籤中,遵循下列步驟:

    1. 選取 [使用者、群組或服務主體],然後按一下 [+ 選取成員]。 [受控識別] 選項尚不支援事件方格身分識別。

    2. 在 [選取成員] 視窗中,搜尋並選取與自訂主題同名的服務主體。 在下列範例中是 spcustomtopic0728

      Image showing the selection of the User, group, or service principal option

    3. 在 [選取成員] 視窗中,按一下 [選取]

      Image showing the selection of the Managed identity option

  6. 現在,回到 [成員] 索引標籤上,選取 [下一步]

    Image showing the selection of the Next button on the Members page

  7. 在 [檢閱 + 指派] 頁面上,檢閱設定之後,選取 [檢閱 + 指派]

這些步驟類似於將身分識別新增至表格中所述的其他角色。

使用 Azure CLI

本節中的範例示範如何使用 Azure CLI,將身分識別新增至 Azure 角色。 範例命令適用於事件方格自訂主題。 事件方格網域的命令是類似的。

針對自訂主題的系統身分識別取得其主體識別碼

首先,針對自訂主題的系統受控識別,取得其主體識別碼,並將身分識別指派給適當的角色。

topic_pid=$(az ad sp list --display-name "$<TOPIC NAME>" --query [].objectId -o tsv)

在各種範圍內建立事件中樞的角色指派

下列 CLI 範例示範如何在命名空間層級或事件中樞層級,將自訂主題的身分識別新增至 Azure 事件中樞資料傳送者角色。 如果您在命名空間層級建立角色指派,自訂主題可以將事件轉送至該命名空間內的所有事件中樞。 如果您在事件中樞層級建立角色指派,自訂主題只能將事件轉送至該特定事件中樞。

role="Azure Event Hubs Data Sender" 
namespaceresourceid=$(az eventhubs namespace show -n $<EVENT HUBS NAMESPACE NAME> -g <RESOURCE GROUP of EVENT HUB> --query "{I:id}" -o tsv) 
eventhubresourceid=$(az eventhubs eventhub show -n <EVENT HUB NAME> --namespace-name <EVENT HUBS NAMESPACE NAME> -g <RESOURCE GROUP of EVENT HUB> --query "{I:id}" -o tsv) 

# create role assignment for the whole namespace 
az role assignment create --role "$role" --assignee "$topic_pid" --scope "$namespaceresourceid" 

# create role assignment scoped to just one event hub inside the namespace 
az role assignment create --role "$role" --assignee "$topic_pid" --scope "$eventhubresourceid" 

在各種範圍內建立服務匯流排主題的角色指派

下列 CLI 範例示範如何在命名空間層級或服務匯流排主題層級,將事件方格自訂主題的身分識別新增至 Azure 服務匯流排資料傳送者角色。 如果您在命名空間層級建立角色指派,事件方格主題可以將事件轉送至該命名空間內的所有實體 (服務匯流排佇列或主題)。 如果您在服務匯流排佇列或主題層級建立角色指派,事件方格自訂主題只能將事件轉送至該特定服務匯流排佇列或主題。

role="Azure Service Bus Data Sender" 
namespaceresourceid=$(az servicebus namespace show -n $RG\SB -g "$RG" --query "{I:id}" -o tsv 
sbustopicresourceid=$(az servicebus topic show -n topic1 --namespace-name $RG\SB -g "$RG" --query "{I:id}" -o tsv) 

# create role assignment for the whole namespace 
az role assignment create --role "$role" --assignee "$topic_pid" --scope "$namespaceresourceid" 

# create role assignment scoped to just one hub inside the namespace 
az role assignment create --role "$role" --assignee "$topic_pid" --scope "$sbustopicresourceid" 

下一步

既然您已將系統指派的身分識別指派給系統主題、自訂主題或網域,並將身分識別新增至目的地的適當角色,請參閱使用受控識別傳遞事件,以了解如何使用身分識別將事件傳遞至目的地。