Share via


使用 Microsoft Entra ID 進行快取驗證

Azure Cache for Redis 提供兩種方法來 向快取實例進行驗證 :存取密鑰和 Microsoft Entra ID

雖然存取金鑰驗證很簡單,但其隨附一組安全性與密碼管理方面的挑戰。 相較之下,在本文中,您會了解如何使用 Microsoft Entra 權杖進行快取驗證。

Azure Cache for Redis 提供無密碼驗證機制,方法是與 Microsoft Entra ID 整合。 此整合也包含透過開放原始碼 Redis 支援的存取控制清單 (ACL) 所提供的角色型存取控制功能。

若要使用 ACL 整合,您的用戶端應用程式必須採用 Microsoft Entra 實體的身分識別 (例如服務主體或受控識別),並連線到您的快取。 在本文中,您會了解如何使用服務主體或受控識別來連線到快取,以及如何根據用於連線的 Microsoft Entra 成品授與連線預先定義的權限。

可用性範圍

基本、標準、進階 Enterprise,Enterprise Flash
可用性 No

先決條件與限制

  • SSL 連線和 TLS 1.2 或更高版本支援 Microsoft Entra ID 型驗證。
  • 依賴雲端服務的 Azure Cache for Redis 執行個體不支援 Microsoft Entra ID 型驗證。
  • Azure Cache for Redis Enterprise 的 Enterprise 層不支援 Microsoft Entra ID 型驗證。
  • 某些 Redis 命令會遭到封鎖。 如需遭封鎖命令的完整清單,請參閱 Azure Cache for Redis 中不支援的 Redis 命令

重要

一旦使用 Microsoft Entra 權杖建立了連線,用戶端應用程式就必須在到期之前定期重新整理 Microsoft Entra 權杖,並將 AUTH 命令傳送至 Redis 伺服器,以避免連線中斷。 如需詳細資訊,請參閱設定 Redis 用戶端以使用 Microsoft Entra ID

在快取上啟用 Microsoft Entra ID 驗證

  1. 在 Azure 入口網站中,選取 Azure Cache for Redis 執行個體,您想要在其中設定 Microsoft Entra 權杖型驗證。

  2. 從 [資源] 功能表中選取 [驗證]

  3. 在工作窗格中,選取 [ 啟用 Microsoft Entra Authentication]。

  4. 選取 [啟用 Microsoft Entra 驗證],然後輸入有效使用者的名稱。 當您選取 [儲存] 時,您輸入的使用者預設會自動獲指派「資料擁有者存取原則」。 您也可以輸入受控識別或服務主體,以連線到快取執行個體。

    此螢幕快照顯示資源功能表中已選取的驗證,並核取 [啟用 Microsoft Entra 驗證]。

  5. 隨即會顯示快顯對話方塊,詢問您是否要更新設定,並告知您此作業需要幾分鐘的時間。 選取 [是]

    重要

    一旦啟用作業完成,快取執行個體中的節點就會重新啟動以載入新的設定。 建議您在維護視窗期間或在忙碌的上班時間之外執行這項作業。 此作業最多可能需要 30 分鐘的時間。

如需搭配 Azure CLI 使用 Microsoft Entra ID 的詳細資訊,請參閱 身分識別的參考頁面。

搭配快取使用資料存取設定

如果您想要使用自訂存取原則,而不是 Redis 資料擁有者,請移至 [資源] 功能表上的 [資料存取設定]。 如需詳細資訊,請參閱設定應用程式的自訂資料存取原則

  1. 在 Azure 入口網站中,選取要新增至資料存取設定的 Azure Cache for Redis 執行個體。

  2. 從 [資源] 功能選取 [數據存取組態 ]。

  3. 選取 [新增],然後選擇 [新增 Redis 使用者]

  4. 在 [存取原則] 索引標籤上,選取資料表中的其中一個可用原則:資料擁有者資料參與者資料讀者。 然後,選取 [下一步: Redis 使用者]

    顯示可用存取原則的螢幕快照。

  5. 選擇 [使用者或服務主體] 或 [受控識別],以決定如何指派 Azure Cache for Redis 執行個體的存取權。 如果您選取 [使用者或服務主體],而且想要新增 使用者,您必須先 啟用 Microsoft Entra Authentication

  6. 然後,選取 [選取成員],並選取 [選取]。 然後,選取 [下一步: 檢閱 + 指派]顯示要新增為 Redis 使用者之成員的螢幕快照。

  7. 對話方塊會顯示快顯視窗,通知您升級是永久的,而且可能會導致短暫的連線中斷。 選取 [是]

    重要

    一旦啟用作業完成,快取執行個體中的節點就會重新啟動以載入新的設定。 建議您在維護視窗期間或在忙碌的上班時間之外執行這項作業。 此作業最多可能需要 30 分鐘的時間。

設定 Redis 用戶端以使用 Microsoft Entra ID

由於大部分的 Azure Cache for Redis 用戶端都假設密碼和存取金鑰用於驗證,因此您可能需要更新用戶端工作流程,以支援使用 Microsoft Entra ID 進行驗證。 在本節中,您會了解如何設定用戶端應用程式,以使用 Microsoft Entra 權杖連線到 Azure Cache for Redis。

Microsoft Entra 用戶端工作流程

  1. 使用 Microsoft 驗證程式庫 (MSAL),設定用戶端應用程式以取得範圍 (https://redis.azure.com/.defaultacca5fbb-b7e4-4009-81f1-37e38fd66d78/.default) 的 Microsoft Entra 權杖。

  2. 更新您的 Redis 連線邏輯,以使用下列 UserPassword

    • User = 受控識別或服務主體的物件識別碼
    • Password = 您使用 MSAL 所取得的 Microsoft Entra 權杖
  3. 確定您的用戶端會在 Microsoft Entra 權杖到期之前,自動執行 Redis AUTH 命令,方法是使用:

    • User = 受控識別或服務主體的物件識別碼
    • Password = 定期重新整理的 Microsoft Entra 權杖

用戶端程式庫支援

程式庫 Microsoft.Azure.StackExchangeRedisStackExchange.Redis 的延伸模組,可讓您使用 Microsoft Entra ID,來驗證從 Redis 用戶端應用程式到 Azure Cache for Redis 的連線。 此延伸模組會管理驗證權杖,包括在權杖到期前主動重新整理權杖,以維持 Redis 連線持續好幾天。

程式碼範例會示範如何使用 Microsoft.Azure.StackExchangeRedis NuGet 套件,以使用 Microsoft Entra ID 連線到 Azure Cache for Redis 執行個體。

下表包含程式碼範例的連結,這些範例會示範如何使用 Microsoft Entra 權杖連線到 Azure Cache for Redis 執行個體。 包含多種語言的各種不同用戶端程式庫。

用戶端程式庫 語言 連結至範例程式碼
StackExchange.Redis .NET StackExchange.Redis 程式碼範例
redis-py Python redis-py 程式碼範例
Jedis Java Jedis 程式碼範例
Lettuce Java Lettuce 程式碼範例
Redisson Java Redisson 程式碼範例
ioredis Node.js ioredis 程式碼範例
node-redis Node.js node-redis 程式碼範例

Microsoft Entra 驗證的最佳做法

  • 設定私人連結或防火牆規則,以保護您的快取免受阻斷服務攻擊。

  • 確定您的用戶端應用程式至少會在權杖到期前 3 分鐘傳送新的 Microsoft Entra 權杖,以避免連線中斷。

  • 定期呼叫 Redis 伺服器 AUTH 命令時,請考慮新增抖動,以便 AUTH 命令錯開,而且您的 Redis 伺服器不會同時接收大量 AUTH 命令。