使用 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 驗證
在 Azure 入口網站中,選取 Azure Cache for Redis 執行個體,您想要在其中設定 Microsoft Entra 權杖型驗證。
從 [資源] 功能表中選取 [驗證]。
在工作窗格中,選取 [ 啟用 Microsoft Entra Authentication]。
選取 [啟用 Microsoft Entra 驗證],然後輸入有效使用者的名稱。 當您選取 [儲存] 時,您輸入的使用者預設會自動獲指派「資料擁有者存取原則」。 您也可以輸入受控識別或服務主體,以連線到快取執行個體。
隨即會顯示快顯對話方塊,詢問您是否要更新設定,並告知您此作業需要幾分鐘的時間。 選取 [是]。
重要
一旦啟用作業完成,快取執行個體中的節點就會重新啟動以載入新的設定。 建議您在維護視窗期間或在忙碌的上班時間之外執行這項作業。 此作業最多可能需要 30 分鐘的時間。
如需搭配 Azure CLI 使用 Microsoft Entra ID 的詳細資訊,請參閱 身分識別的參考頁面。
搭配快取使用資料存取設定
如果您想要使用自訂存取原則,而不是 Redis 資料擁有者,請移至 [資源] 功能表上的 [資料存取設定]。 如需詳細資訊,請參閱設定應用程式的自訂資料存取原則。
在 Azure 入口網站中,選取要新增至資料存取設定的 Azure Cache for Redis 執行個體。
從 [資源] 功能選取 [數據存取組態 ]。
選取 [新增],然後選擇 [新增 Redis 使用者]。
在 [存取原則] 索引標籤上,選取資料表中的其中一個可用原則:資料擁有者、資料參與者或資料讀者。 然後,選取 [下一步: Redis 使用者]。
選擇 [使用者或服務主體] 或 [受控識別],以決定如何指派 Azure Cache for Redis 執行個體的存取權。 如果您選取 [使用者或服務主體],而且想要新增 使用者,您必須先 啟用 Microsoft Entra Authentication。
然後,選取 [選取成員],並選取 [選取]。 然後,選取 [下一步: 檢閱 + 指派]。
對話方塊會顯示快顯視窗,通知您升級是永久的,而且可能會導致短暫的連線中斷。 選取 [是]。
重要
一旦啟用作業完成,快取執行個體中的節點就會重新啟動以載入新的設定。 建議您在維護視窗期間或在忙碌的上班時間之外執行這項作業。 此作業最多可能需要 30 分鐘的時間。
設定 Redis 用戶端以使用 Microsoft Entra ID
由於大部分的 Azure Cache for Redis 用戶端都假設密碼和存取金鑰用於驗證,因此您可能需要更新用戶端工作流程,以支援使用 Microsoft Entra ID 進行驗證。 在本節中,您會了解如何設定用戶端應用程式,以使用 Microsoft Entra 權杖連線到 Azure Cache for Redis。
Microsoft Entra 用戶端工作流程
使用 Microsoft 驗證程式庫 (MSAL),設定用戶端應用程式以取得範圍 (
https://redis.azure.com/.default
或acca5fbb-b7e4-4009-81f1-37e38fd66d78/.default
) 的 Microsoft Entra 權杖。更新您的 Redis 連線邏輯,以使用下列
User
和Password
:User
= 受控識別或服務主體的物件識別碼Password
= 您使用 MSAL 所取得的 Microsoft Entra 權杖
確定您的用戶端會在 Microsoft Entra 權杖到期之前,自動執行 Redis AUTH 命令,方法是使用:
User
= 受控識別或服務主體的物件識別碼Password
= 定期重新整理的 Microsoft Entra 權杖
用戶端程式庫支援
程式庫 Microsoft.Azure.StackExchangeRedis
是 StackExchange.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
命令。