Azure 受控 Redis 會藉由與 Microsoft Entra ID 整合,提供無密碼驗證機制。 Azure 受控 Redis 快取預設會使用 Microsoft Entra ID。 當您建立新的快取時,便會啟用受控識別。
儘管存取金鑰身份驗證仍然可用,但它在安全性和密碼管理方面帶來了一系列挑戰。 相較之下,在本文中,您會了解如何使用 Microsoft Entra 權杖進行快取驗證。
在本文中,您會了解如何使用服務主體或受控識別來連線到 Redis 執行個體。
先決條件與限制
- Microsoft Entra 驗證僅支援用於 SSL 連線。
- 不支援 Microsoft Entra 群組。
- 某些 Redis 命令會遭到封鎖。 如需遭到封鎖之命令的完整清單,請參閱 Azure Managed Redis 中不支援的 Redis 命令 (部分機器翻譯)。
Important
使用 Microsoft Entra 權杖建立連線後,用戶端應用程式必須在過期之前定期重新整理 Microsoft Entra 權杖。 然後,應用程式必須將 AUTH 命令傳送至 Redis 伺服器以避免中斷連線。 如需詳細資訊,請參閱設定 Redis 用戶端以使用 Microsoft Entra。
設定 Redis 用戶端以使用 Microsoft Entra
如果您過去曾使用存取金鑰進行驗證,則必須更新用戶端工作流程,以使用 Microsoft Entra ID 支援驗證。 在本節中,您將瞭解如何使用 Microsoft Entra ID 連線到 Azure 受控 Redis。
將使用者或系統主體新增至快取
在 Azure 入口網站中連線到您的快取。
在資源功能表上,選取驗證。
在 [Microsoft Entra Authentication] 索引標籤上,選取 [用戶或服務主體],然後選取 [+ 選取成員]。
輸入您要執行程式的用戶名稱。 選取要在清單中新增的使用者,然後 選取。 使用者會新增至 Redis 用戶清單。
Microsoft Entra 用戶端工作流程
透過使用
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 Entra 驗證的最佳做法
- 設定私人連結或防火牆規則以保護您的快取免受拒絕服務的攻擊。
- 確定您的用戶端應用程式至少會在權杖到期前三分鐘傳送新的 Microsoft Entra 權杖,以避免連線中斷。
- 當您定期呼叫 Redis 伺服器
AUTH命令時,請考慮新增抖動,以使AUTH命令錯開執行。 這樣,您的 Redis 伺服器就不會同時收到太多的AUTH命令。
疑難排解 Microsoft Entra ID 和快取
如果您的應用程式無法透過 Microsoft Entra ID 存取 Azure 受控 Redis 執行個體,請使用此 PowerShell 指令碼:
使用此 PowerShell 指令碼來驗證 Azure Managed Redis 快取資源的 Microsoft Entra ID 權杖。 指令碼會驗證權杖並驗證存取原則,以協助您診斷驗證問題。
如果您在使用 Microsoft Entra ID 來驗證 Redis 連線時遇到問題,請執行此腳本來分析您的 Microsoft Entra 權杖並識別任何問題。
用戶端程式庫支援
程式庫 Microsoft.Azure.StackExchangeRedis (英文) 是 StackExchange.Redis 的延伸模組,可讓您使用 Microsoft Entra 來驗證從 Redis 用戶端應用程式到 Azure Managed Redis 的連線。 此延伸模組會管理驗證權杖,包括在權杖到期前主動重新整理權杖,以維持 Redis 連線持續好幾天。
此範例程式碼 (英文) 會示範如何使用 Microsoft.Azure.StackExchangeRedis NuGet 套件,以使用 Microsoft Entra 連線到 Azure Managed Redis 執行個體。
下表包含程式碼範例的連結。 這些範例示範了如何使用 Microsoft Entra 權杖來連線到您的 Azure Managed Redis 執行個體。 各種用戶端程式庫都包含在多種語言中。
| 用戶端程式庫 | 語言 | 範例程式碼的連結 |
|---|---|---|
| StackExchange.Redis | .NET | StackExchange.Redis 程式碼範例 |
| redis-py | Python | redis-py 程式碼範例 |
| Jedis | JAVA | Jedis 程式碼範例 |
| Lettuce | JAVA | Lettuce 程式碼範例 |
| node-redis | Node.js | node-redis 程式碼範例 |
| go-redis | Go | go 程式代碼範例 |
停用快取上的存取金鑰驗證
如果您有使用存取金鑰的快取,建議您切換至 Microsoft Entra ID 作為連線快取和停用存取金鑰的安全方式。
當您停用存取金鑰時,系統會終止所有現有的用戶端連線,無論它們是否使用存取金鑰或 Microsoft Entra ID 驗證。
在停用異地複寫快取上的存取金鑰之前,您必須:
- 取消連結快取。
- 停用存取金鑰。
- 重新連結快取。
若要停用存取金鑰,請遵循下列程序:
在 Azure 入口網站中,選取您想要停用存取金鑰的 Azure Managed Redis 執行個體。
在 [資源] 功能表上,選取 [驗證]。
在工作窗格上,選取 [存取金鑰]。
選取 [ 存取金鑰驗證 ] 控制項以停用存取金鑰。
選取 [是],以確認您要更新您的設定。
Important
變更快取的 [存取金鑰驗證] 設定時,會終止使用存取金鑰或 Microsoft Entra 的所有現有用戶端連線。 請遵循最佳做法來實作適當的重試機制,以便重新連線 Microsoft Entra 型連線。 如需詳細資訊,請參閱連線復原。