Share via


使用 Microsoft Entra ID 驗證受控識別,以存取 Azure 轉寄資源

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

使用受控識別,Azure 平台就能管理此執行階段識別。 您不必為了身分識別本身或您需要存取的資源,在應用程式程式碼或設定中儲存及保護存取金鑰。 在 Azure App 服務 應用程式內或虛擬機中執行且已啟用 Azure 資源的受控實體支援的轉寄用戶端應用程式不需要處理 SAS 規則和金鑰或任何其他存取令牌。 用戶端應用程式只需要轉接命名空間的端點位址。 當應用程式連線時,轉寄會將受控實體的內容系結至用戶端,此作業會在本文稍後的範例中顯示。 一旦它與受控識別相關聯,您的轉寄用戶端就可以執行所有授權的作業。 授權是藉由將受控實體與轉送角色產生關聯來授與。

注意

此功能已在所有區域中正式推出,包括由 21Vianet 運作的 Microsoft Azure。

概觀

當安全性主體(使用者、群組、應用程式)嘗試存取轉寄實體時,必須授權要求。 使用 Microsoft Entra ID 時,存取資源的流程分為兩個步驟。

  1. 首先,會驗證安全性主體的身分識別,並傳回 OAuth 2.0 令牌。 要求權杖的資源名稱為 https://relay.azure.net。 如果應用程式在 Azure 實體 (例如 Azure VM、虛擬機器擴展集或 Azure Functions 應用程式) 內執行,則可使用受控識別來存取資源。
  2. 接下來,令牌會當做要求傳遞服務的一部分傳遞,以 授權 存取指定的資源(混合式連線、WCF 轉送)。 Microsoft Entra 會透過 Azure 角色型存取控制 (Azure RBAC) 來授與存取受保護資源的權限。 Azure 轉寄會定義一組 Azure 內建角色,其中包含用來存取轉寄實體的常見許可權集合。 您也可以定義自訂角色以存取資料。 如需 Azure 轉寄所支援內建角色的清單,請參閱 Azure 轉寄的 Azure 內建角色。 對轉送提出要求的原生應用程式和 Web 應用程式,也可以使用 Microsoft Entra 識別碼進行授權。

Azure 轉寄的 Azure 內建角色

針對 Azure 轉播,透過 Azure 入口網站 和 Azure 資源管理 API 來管理命名空間和所有相關資源,已使用 Azure RBAC 模型來保護。 Azure 提供下列 Azure 內建角色,以授權存取轉接命名空間:

角色 描述
Azure 轉寄擁有者 使用此角色授與 Azure 轉播資源的完整 存取權。
Azure 轉接聽程式 使用此角色將接聽和實體讀取許可權授與 Azure 轉寄資源。
Azure 轉送寄件者 使用此角色授 與 Azure 轉送資源的傳送和實體讀取 許可權。

資源範圍

將 Azure 角色指派給安全性主體之前,請先決定安全性主體應該具備的存取範圍。 最佳做法指出,最好只授與最窄的可能範圍。

下列清單說明您可以從最窄的範圍開始,設定 Azure 轉播資源存取範圍的範圍:

  • 轉送實體:角色指派適用於特定的轉送實體,例如混合式連線或 WCF 轉送。
  • 轉接命名空間:角色指派會套用至命名空間下的所有轉寄實體。
  • 資源群組:角色指派適用於資源群組下的所有轉寄資源。
  • 用帳戶:角色指派適用於訂用帳戶中所有資源群組中的所有轉寄資源。

注意

請記住,Azure 角色指派最多可能需要五分鐘的時間傳播。 如需內建角色定義方式的詳細資訊,請參閱了解角色定義。 如需建立 Azure 自訂角色的相關資訊,請參閱 Azure 自訂角色

啟用受控識別

首先,為需要存取 Azure 轉送實體的 Azure 資源啟用受控識別(混合式連線或 WCF 轉送)。 例如,如果您的轉寄用戶端應用程式在 Azure VM 上執行,請遵循設定 Azure VM 受控識別一文中的 指示,為 VM 啟用受控識別。 啟用此設定之後,就會在 Microsoft Entra 識別符中建立新的受控服務識別。

關於支援受控識別的服務清單,請參閱支援以受控識別存取 Azure 資源的服務

將 Azure 轉寄角色指派給受控識別

啟用受控識別之後,請將其中一個 Azure 轉送角色(Azure 轉送擁有者、Azure 轉送接聽程式或 Azure 轉送傳送者)指派給適當範圍的身分識別。 將 Azure 角色指派給受控識別時,受控識別會在適當的範圍授與轉寄實體的存取權。

下一節使用在 Azure VM 實例上受控識別下執行的簡單應用程式,並存取轉寄資源。

VM 上存取轉寄實體的範例應用程式

  1. 從 GitHub 將混合式 連線 範例主控台應用程式下載到您的電腦。

  2. 建立 Azure VM。 針對此範例,請使用 Windows 10 映射。

  3. 為 Azure VM 啟用系統指派的身分識別或使用者指派的身分識別。 如需指示,請參閱 啟用 VM 的身分識別。

  4. 將其中一個轉接角色指派給所需範圍的受控服務識別(轉寄實體、轉接命名空間、資源群組、訂用帳戶)。 如需詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色

  5. 根據自述檔指示,在本機計算機上建置主控台應用程式。

  6. 將本機路徑>\RoleBasedAccessControl\bin\Debug 資料夾下的<可執行文件複製到 VM。 您可以使用 RDP 來連線到您的 Azure VM。 如需詳細資訊,請參閱如何連線和登入執行 Windows 的 Azure 虛擬機器 \(部分機器翻譯\)。

  7. 依照自述檔指示,在 Azure VM 上執行RoleBasedAccessControl.exe。

    注意

    請遵循相同的步驟來執行 WCF 轉送的主控台應用程式。

範例中醒目提示的程序代碼

以下是範例中的程式代碼,示範如何使用 Microsoft Entra 驗證來連線到 Azure 轉播服務。

  1. 使用 TokenProvider.CreateManagedIdentityTokenProvider 方法建立 TokenProvider 物件。

    • 如果您使用 系統指派的受控識別:
      TokenProvider.CreateManagedIdentityTokenProvider();
      
    • 如果您使用使用者指派的受控識別,請從 Azure 入口網站 的 [受控識別] 頁面取得使用者指派身分識別的用戶端識別符。 如需指示,請參閱 列出使用者指派的受控識別
      var managedCredential = new ManagedIdentityCredential(clientId);
      tokenProvider = TokenProvider.CreateManagedIdentityTokenProvider(managedCredential);    
      
  2. 傳遞您在上一個步驟中建立的混合式連線 URI 和令牌提供者,以建立 Hybrid 連線 ionListenerHybrid 連線 ionClient 物件。

    聽眾:

    var listener = new HybridConnectionListener(hybridConnectionUri, tokenProvider);    
    

    傳送:

    var sender = new HybridConnectionClient(hybridConnectionUri, tokenProvider);    
    

範例

下一步

若要深入瞭解 Azure 轉寄,請參閱下列文章。