將 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 服務匯流排資料傳送者角色,以提供給包含佇列或主題資源的服務匯流排命名空間。 當您在命名空間層級新增至角色時,事件方格自訂主題可以將事件轉送至命名空間內的所有實體。
移至 Azure 入口網站中的 [服務匯流排命名空間]。
在左窗格中選取 [存取控制]。
在 [新增角色指派 (預覽)] 區段中,選取 [新增]。
在 [新增角色指派] 頁面上,選取 [Azure 服務匯流排資料傳送者],然後選取 [下一步]。
在 [成員] 索引標籤中,遵循下列步驟:
選取 [使用者、群組或服務主體],然後按一下 [+ 選取成員]。 [受控識別] 選項尚不支援事件方格身分識別。
在 [選取成員] 視窗中,搜尋並選取與自訂主題同名的服務主體。 在下列範例中是 spcustomtopic0728。
在 [選取成員] 視窗中,按一下 [選取]。
現在,回到 [成員] 索引標籤上,選取 [下一步]。
在 [檢閱 + 指派] 頁面上,檢閱設定之後,選取 [檢閱 + 指派]。
這些步驟類似於將身分識別新增至表格中所述的其他角色。
使用 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"
下一步
既然您已將系統指派的身分識別指派給系統主題、自訂主題或網域,並將身分識別新增至目的地的適當角色,請參閱使用受控識別傳遞事件,以了解如何使用身分識別將事件傳遞至目的地。