保護 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 ID 時,存取是兩個步驟的程序。 當安全性主體 (使用者、群組或應用程式) 嘗試存取 Azure Digital Twins 時,要求必須獲得驗證和授權。
- 首先,安全性主體的身分識別已通過驗證,並傳回 OAuth 2.0 權杖。
- 接下來,權杖會當做要求的一部分傳遞給 Azure Digital Twins 服務,以授權指定資源的存取權。
驗證步驟需要任何應用程式要求在執行階段包含 OAuth 2.0 存取權杖。 如果應用程式是在 Azure 實體內執行,例如 Azure Functions 應用程式,則可以使用受控識別來存取資源。 在下一節中深入了解受控識別。
授權步驟需要將 Azure 角色指派給安全性主體。 指派給安全性主體的角色會決定該主體所擁有的權限。 Azure Digital Twins 提供包含 Azure Digital Twins 資源權限集合的 Azure 角色。 本文稍後將說明這些角色。
若要深入了解 Azure 中支援的角色和角色指派,請參閱 Azure RBAC 文件中的了解不同角色。
使用受控識別執行驗證作業
Azure 資源的受控識別是一個跨 Azure 功能,可讓您建立與應用程式程式碼執行所在部署相關聯的安全識別。 然後您可以將該識別與存取控制角色建立關聯,以便授與用於存取應用程式所需特定 Azure 資源的自訂權限。
使用受控識別,Azure 平台就能管理此執行階段識別。 您不必為了身分識別本身或您需要存取的資源,在應用程式程式碼或設定中儲存及保護存取金鑰。 在 Azure App Service 應用程式內執行的 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-AzRoleAssignment
(參考),則可使用 -RoleDefinitionId
參數 (而非使用 -RoleDefinitionName
) 來傳遞識別碼,而非傳遞角色名稱。
權限範圍
將 Azure 角色指派給安全性主體之前,請先決定安全性主體應該具備的存取範圍。 最佳做法的要求是,最好只授與最小的可能範圍。
下列清單說明您可以將 Azure Digital Twins 資源的存取範圍設定在何種層級。
- 模型:此資源的動作會決定對 Azure Digital Twins 中上傳模型的控制。
- 查詢 Digital Twins 圖表:此資源的動作會決定在 Azure Digital Twins 圖表內的數位對應項上執行查詢作業的能力。
- 數位對應項:此資源的動作提供對應項圖表中數位對應項相關 CRUD 作業的控制。
- 數位對應項關聯性:此資源的動作定義對應項圖表中數位對應項之間關聯性上 CRUD 作業的控制。
- 事件路由:此資源的動作決定將事件從 Azure Digital Twins 路由至端點服務 (例如事件中樞、事件方格或服務匯流排) 的權限。
疑難排解權限
若使用者嘗試執行其角色不允許的動作,則可能會從服務要求中收到錯誤訊息 403 (Forbidden)
。 如需詳細資訊和疑難排解步驟,請參閱針對 Azure Digital Twins 失敗的服務要求進行疑難排解:錯誤 403 (禁止)。
用於存取其他資源的受控識別
為 Azure Digital Twins 執行個體設定 Microsoft Entra ID受控識別,可讓執行個體輕鬆存取其他受 Microsoft Entra 保護的資源,例如 Azure Key Vault。 身分識別由 Azure 平台負責管理,您無須佈建或輪替任何密碼。 如需有關 Microsoft Entra ID 中受控識別的詳細資訊,請參閱適用於 Azure 資源的受控識別。
Azure Digital Twins 支援兩種受控識別類型:系統指派和使用者指派。
您可使用這兩種受控識別類型,向自訂定義的端點進行驗證。 Azure Digital Twins 支援對事件中樞和服務匯流排目的地的端點,以及對無效信件事件的 Azure 儲存體容器端點進行身分識別型驗證。 受控識別目前不支援事件方格端點。
如需如何為可用來路由傳送事件的 Azure Digital Twins 端點啟用受控識別的指示,請參閱端點選項:身分識別型驗證。
使用信任的 Microsoft 服務將事件路由傳送至事件中樞和服務匯流排端點
Azure Digital Twins 可使用這些資源的公用端點,連線到事件中樞和服務匯流排端點,以便傳送事件資料。 不過,如果這些資源繫結至 VNet,預設會封鎖與資源的連線。 因此,此組態可防止 Azure Digital Twins 將事件資料傳送至您的資源。
若要解決此問題,請透過「信任的 Microsoft 服務」選項,啟用從 Azure Digital Twins 執行個體到事件中樞或服務匯流排資源的連線能力 (請參閱事件中樞信任的 Microsoft 服務和服務匯流排信任的 Microsoft 服務)。
您必須完成下列步驟,才能啟用信任的 Microsoft 服務連線。
- 您的 Azure Digital Twins 執行個體必須使用 系統指派的受控識別。 這可讓其他服務尋找您的執行個體作為信任的 Microsoft 服務。 如需在執行個體上設定系統受控識別的指示,請參閱為執行個體啟用受控識別。
- 佈建系統指派的受控識別後,授與執行個體的受控識別存取事件中樞或服務匯流排端點的權限 (事件方格不支援此功能)。 如需指派適當角色的指示,請參閱將 Azure 角色指派給身分識別。
- 對於已備妥防火牆組態的事件中樞和服務匯流排端點,務必啟用 [允許信任的 Microsoft 服務略過此防火牆] 設定。
使用 Azure Private Link 的私人網路存取
Azure Private Link 是一種服務,可讓您透過 Azure 虛擬網路 (VNet) 中的私人端點存取 Azure 資源 (例如 Azure 事件中樞、Azure 儲存體和 Azure Cosmos DB),以及 Azure 託管的客戶和合作夥伴服務。
同樣地,您可使用 Azure Digital Twins 執行個體的私人存取端點,讓位於虛擬網路中的用戶端可透過 Private Link 安全地使用 REST API 存取執行個體。 設定 Azure Digital Twins 執行個體的私人存取端點,可讓您保護 Azure Digital Twins 執行個體並排除公開曝光的風險。 此外,這也有助於避免 Azure 虛擬網路 (VNet) 的資料外流。
私人存取端點會使用 Azure VNet 位址空間中的 IP 位址。 私人網路上的用戶端與 Azure Digital Twins 執行個體之間的網路流量會流經 VNet 以及 Microsoft 骨幹網路上的 Private Link,以排除暴露至網際網路的風險。
設定 Azure Digital Twins 執行個體的私人存取端點,可讓您保護 Azure Digital Twins 執行個體並排除公開曝光的風險,以及避免 VNet 的資料外流。
如須瞭解如何設定 Azure Digital Twins 的 Private Link,請參閱使用 Private Link 啟用私人存取。
注意
使用 Azure Private Link 的私人網路存取適用於透過其 REST API 存取 Azure Digital Twins。 這項功能不適用於使用 Azure Digital Twins 的事件路由功能的輸出案例。
設計考量
使用適用於 Azure Digital Twins 的 Private Link 時,建議您考慮下列因素:
- 定價:如需定價詳細資料,請參閱 Azure Private Link 定價。
- 區域可用性:適用於 Azure Digital Twins 的 Private Link 在提供 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 會管理服務標籤包含的位址前置詞,並隨著位址變更自動更新服務標籤,而盡可能簡化網路安全性規則頻繁的更新。 如須進一步瞭解服務標籤,請參閱虛擬網路標籤。
您可以藉由在建立安全性規則時使用服務標籤取代特定 IP 位址,以使用服務標籤在網路安全性群組或 Azure 防火牆上定義網路存取控制。 在正確的來源或規則的目的地欄位中,指定服務標籤名稱 (在此案例中為 AzureDeviceUpdate),即可允許或拒絕對應服務的流量。
以下是 AzureDigitalTwins 服務標籤的詳細資料。
標籤 | 目的 | 可以使用輸入還是輸出? | 是否可為區域性? | 是否可與 Azure 防火牆搭配使用? |
---|---|---|---|---|
AzureDigitalTwins | Azure Digital Twins 注意:您可以使用此標籤或此標籤所涵蓋的 IP 位址,來限制存取為事件路由所設定的端點。 |
傳入 | No | Yes |
使用服務標籤來存取事件路由端點
以下是使用服務標籤與 Azure Digital Twins 存取事件路由端點的步驟。
首先,下載顯示 Azure IP 範圍和服務標籤的 JSON 檔案參考:Azure IP 範圍和服務標籤。
在 JSON 檔案中尋找 "AzureDigitalTwins" IP 範圍。
請參閱連線至端點的外部資源文件 (例如 事件方格、事件中樞、服務匯流排或適用於無效信件事件的 Azure 儲存體),了解如何設定該資源的 IP 篩選條件。
使用步驟 2 的 IP 範圍,在外部資源上設定 IP 篩選條件。
視需要定期更新 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。