保護應用程式組態資料

已完成

在本單元中,您會了解如何使用下列項目來保護應用程式組態資料:

  • 客戶自控金鑰
  • 私人端點
  • 受控識別

使用客戶自控金鑰加密組態資料

Azure 應用程式組態使用 Microsoft 提供的 256 位元 AES 加密金鑰來加密待用敏感性資訊。 每個應用程式組態執行個體都有自己由服務管理的加密金鑰,並用來加密敏感性資訊。 敏感性資訊包括索引鍵/值組中找到的值。 啟用客戶自控金鑰功能時,應用程式組態會使用指派給應用程式組態執行個體的受控識別來向 Microsoft Entra ID 進行驗證。 受控識別接著會呼叫 Azure Key Vault,並包裝應用程式組態執行個體的加密金鑰。 然後會儲存包裝的加密金鑰,並在應用程式組態內快取未包裝的加密金鑰一小時。 應用程式組態會每小時重新整理應用程式組態執行個體加密金鑰的未包裝版本。 這樣可確保正常作業狀況下的可用性。

啟用客戶自控金鑰功能

若要成功針對 Azure 應用程式組態啟用客戶自控金鑰功能,需要下列元件:

  • 標準層 Azure 應用程式組態執行個體
  • 已啟用具有虛刪除和清除保護功能的 Azure Key Vault
  • Key Vault 內的 RSA 或 RSA-HSM 金鑰:金鑰不得過期、必須啟用,而且必須同時啟用包裝和解除包裝功能

設定這些資源之後,還有兩個步驟就可以讓Azure 應用程式組態使用 Key Vault 金鑰:

  1. 將受控識別指派給 Azure 應用程式組態執行個體
  2. 授與目標 Key Vault 存取原則中的身分識別 GETWRAPUNWRAP 權限。

使用適用於 Azure 應用程式組態的私人端點

您可以使用適用於 Azure 應用程式設定的私人端點,讓虛擬網路上的用戶端能夠透過私人連結安全地存取資料。 私人端點會將來自虛擬網路位址空間的 IP 位址用於您的應用程式設定存放區。 虛擬網路上的用戶端與應用程式設定存放區之間的網路流量會周遊於使用 Microsoft 骨幹網路上私人連結的虛擬網路,以排除網際網路中的暴露。

使用適用於應用程式組態存放區的私人端點可讓您:

  • 藉由設定防火牆封鎖公用端點上應用程式組態的所有連線,以保護應用程式組態詳細資料。
  • 增加虛擬網路的安全性,確保資料不會洩漏。
  • 從使用 VPN 或具有私人對等互連的 ExpressRoutes 連線到虛擬網路的內部部署網路,安全地連線到應用程式設定存放區。

受控識別

Microsoft Entra ID 的受控身分識別,可讓 Azure 應用程式組態輕鬆存取其他受到 Microsoft Entra ID 保護的資源。例如 Azure Key Vault。 身分識別是由 Azure 平台管理。 不需要您佈建或輪替任何祕密。

您的應用程式可以授與兩種類型的身分識別:

  • 系統指派的身分識別會繫結至您的設定存放區。 如果您的組態存放區已刪除,則會將其刪除。 組態存放區只能有一個系統指派的身分識別。
  • 使用者指派的身分識別是獨立的 Azure 資源,可指派給您的組態存放區。 組態存放區可以有多個使用者指派的身分識別。

新增系統指派的身分識別

若要使用 Azure CLI 設定受控識別,請對現有的組態存放區使用 az appconfig identity assign 命令。 下列 Azure CLI 範例會為名為 myTestAppConfigStore 的 Azure 應用程式組態存放區建立系統指派的身分識別。

az appconfig identity assign \ 
    --name myTestAppConfigStore \ 
    --resource-group myResourceGroup

新增使用者指派的身分識別

利用使用者指派的身分識別建立應用程式組態存放區,會需要您建立身分識別,然後將其資源識別碼新增到您的存放區中。 下列 Azure CLI 範例會建立名為 myUserAssignedIdentity 的使用者指派身分識別,並將其指派給名為 myTestAppConfigStore 的 Azure 應用程式組態存放區。

使用 az identity create 命令建立身分識別:

az identity create --resource-group myResourceGroup --name myUserAssignedIdentity

將新的使用者指派身分識別指派給 myTestAppConfigStore 組態存放區:

az appconfig identity assign --name myTestAppConfigStore \ 
    --resource-group myResourceGroup \ 
    --identities /subscriptions/[subscription id]/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUserAssignedIdentity