共用方式為


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

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

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

注意

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

概觀

當安全性主體 (使用者、群組和應用程式) 嘗試存取轉送實體時,要求必須獲得授權。 使用 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 ID 來進行授權。

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 ID 中建立新的受控服務識別。

關於支援受控識別的服務清單,請參閱支援以受控識別存取 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 和您在上一個步驟中建立的權杖提供者,建立 HybridConnectionListenerHybridConnectionClient 物件。

    接聽程式:

    var listener = new HybridConnectionListener(hybridConnectionUri, tokenProvider);    
    

    傳送者:

    var sender = new HybridConnectionClient(hybridConnectionUri, tokenProvider);    
    

範例

下一步

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