保護 Azure Digital Twins

本文說明 Azure Digital Twins 安全性最佳做法。 其涵蓋角色和許可權、受控識別、使用 Azure Private Link 的專用網存取、服務標籤、待用數據的加密,以及跨原始來源資源分享 (CORS)。

為了安全性,Azure Digital Twins 可讓您精確控制部署中的特定數據、資源和動作。 它會透過稱為 Azure 角色型訪問控制 (Azure RBAC) 的細微角色和許可權管理策略來進行

Azure Digital Twins 也支援待用數據的加密。

Azure RBAC 的角色和許可權

Azure RBAC 會透過與 Microsoft Entra ID 整合提供給 Azure Digital Twins。

您可以使用 Azure RBAC 將許可權授與 安全性主體,這可能是使用者、群組或應用程式服務主體。 安全性主體是由 Microsoft Entra ID 驗證,並接收 OAuth 2.0 令牌以傳回。 此令牌可用來授權對 Azure Digital Twins 實例的存取要求。

驗證和授權

使用 Microsoft Entra 識別符,存取是兩個步驟的程式。 當安全性主體(使用者、群組或應用程式)嘗試存取 Azure Digital Twins 時,必須 驗證授權要求。

  1. 首先,安全性主體的身分識別已通過驗證,並傳回 OAuth 2.0 權杖。
  2. 接下來,令牌會當做要求傳遞至 Azure Digital Twins 服務的一部分,以授權存取指定的資源。

驗證步驟需要任何應用程式要求,才能在運行時間包含 OAuth 2.0 存取令牌。 如果應用程式在 Azure 實體中執行,例如 Azure Functions 應用程式,它可以使用 受控識別 來存取資源。 在下一節中深入瞭解受控識別。

授權步驟會要求將 Azure 角色指派給安全性主體。 指派給安全性主體的角色會決定主體將擁有的許可權。 Azure Digital Twins 提供 Azure 角色,其中包含一組 Azure Digital Twins 資源的許可權。 本文稍後會說明這些角色。

若要深入瞭解 Azure 中支援的角色和角色指派,請參閱 瞭解 Azure RBAC 檔中的不同角色

使用受控識別執行驗證作業

Azure 資源的 受控識別是跨 Azure 功能,可讓您建立與應用程式程式代碼執行所在部署相關聯的安全身分識別。 然後,您可以將該身分識別與訪問控制角色產生關聯,以授與自定義許可權,以存取應用程式所需的特定 Azure 資源。

使用受控識別,Azure 平臺會管理此運行時間身分識別。 您不需要在應用程式程式代碼或組態中儲存和保護存取密鑰,無論是身分識別本身,還是需要存取的資源。 在 Azure App 服務 應用程式內執行的 Azure Digital Twins 用戶端應用程式不需要處理 SAS 規則和密鑰或任何其他存取令牌。 用戶端應用程式只需要 Azure Digital Twins 命名空間的端點位址。 當應用程式連線時,Azure Digital Twins 會將受控實體的內容系結至用戶端。 一旦與受控識別相關聯,您的 Azure Digital Twins 用戶端就可以執行所有授權的作業。 接著,將受控實體與 Azure Digital Twins Azure 角色產生關聯,即可授與授權(如下所述)。

授權:適用於 Azure Digital Twins 的 Azure 角色

Azure 提供兩個 Azure 內建角色,以授權存取 Azure Digital Twins 數據平面 API。 您可以依名稱或識別碼來參考角色:

內建角色 描述 識別碼
Azure Digital Twins 資料擁有者 提供 Azure Digital Twins 資源的完整存取權 bcd981a7-7f74-457b-83e1-cceb9e632ffe
Azure Digital Twins 資料讀者 提供 Azure Digital Twins 資源的唯讀存取權 d57506d4-4c8d-48b1-8587-93c323f6a5a3

您可以透過兩種方式指派角色:

  • 透過 Azure 入口網站 中 Azure Digital Twins 的存取控制 (IAM) 窗格 (請參閱使用 Azure 入口網站 指派 Azure 角色)
  • 透過 CLI 命令新增或移除角色

如需將角色指派給 Azure Digital Twins 實例的詳細步驟,請參閱 設定實例和驗證。 如需如何定義內建角色的詳細資訊,請參閱 瞭解 Azure RBAC 檔中的角色定義

您也可以為您的實例建立自定義 Azure 角色。 這可讓您授與個別數據區域中特定動作的許可權,包括對應項、命令、關聯性、事件路由、作業、模型和查詢。 如需 Azure 中自定義角色的詳細資訊,請參閱 Azure 自定義角色

自動化角色

在自動化案例中參考角色時,建議使用其標識符來參考角色,而不是其名稱。 這些名稱可能會在版本之間變更,但標識碼不會變更,使其在自動化中成為更穩定的參考。

提示

如果您要使用 Cmdlet 來指派角色,例如 New-AzRoleAssignmentreference),您可以使用 -RoleDefinitionId 參數,而不是 -RoleDefinitionName 傳遞標識符,而不是角色的名稱。

權限範圍

將 Azure 角色指派給安全性主體之前,請先判斷安全性主體應具有的存取範圍。 最佳做法規定最好只授與最窄的範圍。

下列清單說明您可以設定 Azure Digital Twins 資源的存取範圍層級。

疑難排解權限

如果使用者嘗試執行其角色不允許的動作,他們可能會收到服務要求讀取 403 (Forbidden)的錯誤。 如需詳細資訊和疑難解答步驟,請參閱針對 Azure Digital Twins 失敗的服務要求進行疑難解答:錯誤 403(禁止)。

用來存取其他資源的受控識別

為 Azure Digital Twins 實例設定 Microsoft Entra ID受控識別,可讓實例輕鬆存取其他受 Microsoft Entra 保護的資源,例如 Azure 金鑰保存庫。 身分識別是由 Azure 平臺所管理,而且不需要您布建或輪替任何秘密。 如需 Microsoft Entra ID 中受控識別的詳細資訊,請參閱 Azure 資源的受控識別。

Azure Digital Twins 支援這兩種類型的受控識別、 系統指派使用者指派

您可以使用其中一種受控識別類型向自定義定義的端點進行驗證。 Azure Digital Twins 支援事件中樞和 服務匯流排 目的地端點的身分識別型驗證,以及用於寄不出的信件事件的 Azure 儲存體 容器端點。 受控識別目前不支援事件方格 端點。

如需如何為可用來路由事件的 Azure Digital Twins 端點啟用受控識別的指示,請參閱 端點選項:身分識別型驗證

使用受信任的 Microsoft 服務將事件路由傳送至事件中樞和 服務匯流排 端點

Azure Digital Twins 可以使用這些資源的公用端點,連線到事件中樞和 服務匯流排 端點以傳送事件數據。 不過,如果這些資源系結至 VNet,預設會封鎖與資源的連線。 因此,此設定可防止 Azure Digital Twins 將事件數據傳送至您的資源。

若要解決此問題,請啟用從 Azure Digital Twins 實例到事件中樞的連線,或透過受信任的 Microsoft 服務選項 服務匯流排 資源連線(請參閱事件中樞的受信任 Microsoft 服務 和 服務匯流排 的信任 Microsoft 服務)。

您必須完成下列步驟,才能啟用受信任的 Microsoft 服務連線。

  1. 您的 Azure Digital Twins 實例必須使用 系統指派的受控識別。 這可讓其他服務將您的實例尋找為受信任的 Microsoft 服務。 如需在實例上設定系統受控識別的指示,請參閱 為實例啟用受控識別。
  2. 布建系統指派的受控識別后,授與實例受控識別存取事件中樞或 服務匯流排 端點的許可權(事件方格中不支援此功能)。 如需指派適當角色的指示,請參閱 將 Azure 角色指派給身分識別。
  3. 針對已就地設定防火牆的事件中樞和 服務匯流排 端點,請務必啟用 [允許受信任的 Microsoft 服務 略過此防火牆設定。

Azure Private Link 是一項服務,可讓您透過 Azure 虛擬網絡 (VNet) 的私人端點存取 Azure 資源(例如 Azure 事件中樞Azure 儲存體Azure Cosmos DB)和 Azure 裝載的客戶和合作夥伴服務。

同樣地,您可以使用 Azure Digital Twins 實例的私人存取端點,允許位於虛擬網路中的用戶端透過 Private Link 安全地存取實例。 為 Azure Digital Twins 實例設定私人存取端點可讓您保護 Azure Digital Twins 實例的安全,並消除公開暴露。 此外,它有助於避免從 Azure 虛擬網絡 (VNet) 外洩數據。

私人存取端點會使用來自 Azure VNet 位址空間的 IP 位址。 私人網路上用戶端與 Azure Digital Twins 實例之間的網路流量會透過 VNet 和 Microsoft 骨幹網路上的 Private Link 周遊,而不需要暴露在公用因特網上。 以下是此系統的視覺表示法:

Diagram showing a network that is a protected VNET with no public cloud access, connecting through Private Link to an Azure Digital Twins instance.

為 Azure Digital Twins 實例設定私人存取端點可讓您保護 Azure Digital Twins 實例的安全,並消除公開公開,以及避免從 VNet 外洩數據。

如需如何為 Azure Digital Twins 設定 Private Link 的指示,請參閱 使用 Private Link 啟用私人存取。

注意

使用 Azure Private Link 的專用網存取適用於透過其其餘 API 存取 Azure Digital Twins。 此功能不適用於使用 Azure Digital Twins 事件路由 功能的輸出案例。

設計考量

使用 Azure Digital Twins 的 Private Link 時,以下是您可能想要考慮的一些因素:

  • 定價:如需定價詳細數據,請參閱 Azure Private Link 定價
  • 區域可用性:Azure Digital Twins 的私人連結可在 Azure Digital Twins 可用的所有 Azure 區域中取得。
  • Azure Digital Twins Explorer: Azure Digital Twins Explorer 無法存取已停用公用存取的 Azure Digital Twins 實例。 不過,您可以使用 Azure 函式在雲端私下部署 Azure Digital Twins Explorer 程式代碼基底。 如需如何執行這項操作的指示,請參閱 Azure Digital Twins Explorer:在雲端中執行。
  • 每個 Azure Digital Twins 實例的私人端點數目上限:10
  • 其他限制:如需 Private Link 限制的詳細資訊,請參閱 Azure Private Link 檔:限制

服務標籤

服務標籤代表來自指定 Azure 服務的 IP 位址前綴群組。 Microsoft 會管理服務標籤包含的位址前置詞,並隨著位址變更自動更新服務標籤,而盡可能簡化網路安全性規則頻繁的更新。 如需服務標籤的詳細資訊,請參閱 虛擬網路標籤

您可以使用服務標籤來定義網路安全組Azure 防火牆 的網路存取控制,方法是在建立安全性規則時使用服務標籤來取代特定 IP 位址。 藉由在規則的適當 來源目的地 字段中指定服務標籤名稱(在此案例中為 AzureDigitalTwins),您可以允許或拒絕對應服務的流量。

以下是 AzureDigitalTwins 服務標籤的詳細數據。

標籤 目的 可以使用輸入或輸出? 可以是區域嗎? 可以搭配 Azure 防火牆 使用?
AzureDigitalTwins Azure Digital Twins
注意:此標籤或此標籤所涵蓋的IP位址可用來限制針對事件路由設定的端點存取。
傳入 No Yes

使用服務標籤來存取事件路由端點

以下是使用服務標籤搭配 Azure Digital Twins 存取 事件路由 端點的步驟。

  1. 首先,下載此 JSON 檔案參考,其中顯示 Azure IP 範圍和服務標籤: Azure IP 範圍和服務標籤

  2. 在 JSON 檔案中尋找 「AzureDigitalTwins」 IP 範圍。

  3. 請參閱連線至端點的外部資源檔(例如事件方格、事件中樞、服務匯流排 或死信事件的 Azure 儲存體),以瞭解如何設定該資源的IP篩選器。

  4. 使用步驟 2 中的 IP 範圍,在外部資源上設定 IP 篩選器。

  5. 視需要定期更新IP範圍。 範圍可能會隨著時間而變更,因此最好定期檢查它們,並在需要時重新整理。 這些更新的頻率可能會有所不同,但建議每周檢查一次。

待用資料加密

Azure Digital Twins 會在數據中心撰寫時提供待用和傳輸數據的加密,並在您存取數據時為您解密。 此加密會使用 Microsoft 管理的加密金鑰進行。

跨原始來源資源共用 (CORS)

Azure Digital Twins 目前不支援跨原始來源資源分享 (CORS)。 因此,如果您是從瀏覽器應用程式、API 管理 (APIM) 介面或 Power Apps 連接器呼叫 REST API,您可能會看到原則錯誤。

若要解決此錯誤,您可以執行下列其中一個動作:

  • 從訊息移除 CORS 標頭 Access-Control-Allow-Origin 。 此標頭指出是否可以共享回應。
  • 或者,建立 CORS Proxy,並透過它提出 Azure Digital Twins REST API 要求。

下一步

  • 請參閱設定實例和驗證中的這些概念。

  • 請參閱撰寫應用程式驗證程序代碼中的用戶端應用程式程式代碼,瞭解如何與這些概念互動。

  • 深入瞭解 Azure RBAC