使用 Microsoft Entra 進行快取驗證
Azure Cache for Redis 提供兩種方法來對快取執行個體進行驗證:存取金鑰和 Microsoft Entra。
雖然存取金鑰驗證很簡單,但其隨附一組安全性與密碼管理方面的挑戰。 相較之下,在本文中,您會了解如何使用 Microsoft Entra 權杖進行快取驗證。
藉由與 Microsoft Entra 整合,Azure Cache for Redis 提供免用密碼驗證機制。 此整合也包含透過開放原始碼 Redis 支援的存取控制清單 (ACL) 所提供的角色型存取控制功能。
若要使用 ACL 整合,您的用戶端應用程式必須採用 Microsoft Entra 實體的身分識別 (例如服務主體或受控識別),並連線到您的快取。 在本文中,您將了解如何使用您的服務主體或受控識別來連線到您的快取。 您也將了解如何根據用於連線的 Microsoft Entra 成品來授與您的連線預先定義的權限。
可用性範圍
層 | 基本、標準、進階 | Enterprise,Enterprise Flash |
---|---|---|
可用性 | 是 | No |
先決條件與限制
- SSL 連線和 TLS 1.2 或更高版本支援 Microsoft Entra 驗證。
- Azure Cache for Redis Enterprise 的 Enterprise 層不支援 Microsoft Entra 驗證。
- 某些 Redis 命令會遭到封鎖。 如需遭封鎖命令的完整清單,請參閱 Azure Cache for Redis 中不支援的 Redis 命令。
重要
使用 Microsoft Entra 權杖建立連線後,用戶端應用程式必須在過期之前定期重新整理 Microsoft Entra 權杖。 然後,應用程式必須將 AUTH
命令傳送至 Redis 伺服器以避免中斷連線。 如需詳細資訊,請參閱設定 Redis 用戶端以使用 Microsoft Entra。
在快取上啟用 Microsoft Entra 驗證
在 Azure 入口網站中,選取 Azure Cache for Redis 執行個體,您想要在其中設定 Microsoft Entra 權杖型驗證。
在 [資源] 功能表上,選取 [驗證]。
在工作窗格上,選取 [Microsoft Entra 驗證] 索引標籤。
選取 [啟用 Microsoft Entra 驗證] 並輸入有效使用者的名稱。 當您選取 [儲存] 時,您輸入的使用者預設會自動獲指派「資料擁有者存取原則」。 您也可以輸入受控識別或服務主體,以連線到快取執行個體。
有一個快顯對話方塊會詢問您是否要更新您的設定,並通知您這需要幾分鐘的時間。 選取 [是]。
重要
啟用作業完成後,您的快取執行個體中的節點會重新啟動以載入新的設定。 建議您在維護視窗期間或在忙碌的上班時間之外執行這項作業。 此作業最多可能需要 30 分鐘的時間。
如需如何搭配 Azure CLI 使用 Microsoft Entra 的詳細資訊,請參閱身分識別的參考頁面。
停用快取上的存取金鑰驗證
使用 Microsoft Entra 是連接快取的安全方式。 建議您使用 Microsoft Entra 並停用存取金鑰。
當您停用快取的存取金鑰驗證時,所有現有用戶端連線都會終止 (無論它們使用存取金鑰還是 Microsoft Entra 驗證)。 請遵循建議的 Redis 用戶端最佳做法以實作適當的重試機制,以便重新連線 Microsoft Entra 型連線 (如果有的話)。
停用存取金鑰之前
- 請確定已啟用Microsoft Entra 驗證,且您至少已設定一個 Redis 使用者。
- 確定連線到快取實例的所有應用程式都會切換為使用 Microsoft Entra Authentication。
- 請確定使用 Microsoft Entra Token 的已連線用戶端和已連線用戶端的計量具有相同的值。 如果這兩個計量的值不相同,這表示仍有一些使用存取密鑰建立的連接,而不是Microsoft Entra Token。
- 請考慮在快取實例的排程維護期間停用存取權。
- 停用存取金鑰僅適用於基本、標準和進階層快取。
對於異地複寫的快取,您必須:
- 取消連結快取。
- 停用存取金鑰。
- 重新連結快取。
如果您有使用存取金鑰的快取,而且想要停用存取金鑰,請遵循下列程式:
在 Azure 入口網站中,選取您要停用存取金鑰的 Azure Cache for Redis 執行個體。
在 [資源] 功能表上,選取 [驗證]。
在工作窗格上,選取 [存取金鑰]。
選取 [停用存取金鑰驗證]。 然後選取 [儲存]。
選取 [是],以確認您要更新您的設定。
重要
當快取的 [停用存取金鑰驗證] 設定變更時,所有使用存取金鑰或 Microsoft Entra 的現有用戶端連線都會終止。 請遵循最佳做法來實作適當的重試機制,以便重新連線 Microsoft Entra 型連線。 如需詳細資訊,請參閱連線復原。
搭配您的快取使用資料存取設定
如果您想要使用自訂存取原則,而不是 Redis 資料擁有者,請移至 [資源] 功能表上的 [資料存取設定]。 如需詳細資訊,請參閱設定應用程式的自訂資料存取原則。
在 Azure 入口網站中,選取您要新增至資料存取設定的 Azure Cache for Redis 執行個體。
在 [資源] 功能表上,選取 [資料存取設定]。
選取 [新增],然後選取 [新增 Redis 使用者]。
在 [存取原則] 索引標籤上,選取資料表中的其中一個可用原則:資料擁有者、資料參與者或資料讀者。 然後,選取 [下一步:Redis 使用者]。
選擇 [使用者或服務主體] 或 [受控識別],以決定如何指派 Azure Cache for Redis 執行個體的存取權。 如果您選取 [使用者或服務主體] 且想要新增使用者,則必須先啟用 Microsoft Entra 驗證。
然後,選擇 [選取成員] 並選擇 [選取]。 然後,選取 [下一步:檢閱 + 指派]。
有一個快顯對話方塊會通知您升級是永久性的,而且可能會導致短暫的連線中斷。 選取 [是]。
重要
啟用作業完成後,您的快取執行個體中的節點會重新啟動以載入新的設定。 建議您在維護視窗期間或在忙碌的上班時間之外執行這項作業。 此作業最多可能需要 30 分鐘的時間。
設定 Redis 用戶端以使用 Microsoft Entra
由於大部分的 Azure Cache for Redis 用戶端都假設密碼和存取金鑰用於驗證,因此您可能需要更新用戶端工作流程,以支援使用 Microsoft Entra 進行驗證。 在本節中,您會了解如何設定用戶端應用程式,以使用 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,來驗證從 Redis 用戶端應用程式到 Azure Cache for Redis 的連線。 此延伸模組會管理驗證權杖,包括在權杖到期前主動重新整理權杖,以維持 Redis 連線持續好幾天。
此程式碼範例會示範如何使用 Microsoft.Azure.StackExchangeRedis
NuGet 套件,以使用 Microsoft Entra 連線到 Azure Cache for Redis 執行個體。
下表包含程式碼範例的連結。 它們示範了如何使用 Microsoft Entra 權杖來連線到您的 Azure Cache for Redis 執行個體。 各種用戶端程式庫都包含在多種語言中。
用戶端程式庫 | 語言 | 連結至範例程式碼 |
---|---|---|
StackExchange.Redis | .NET | StackExchange.Redis 程式碼範例 |
go-redis | Go | go-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 驗證的最佳做法
- 設定私人連結或防火牆規則以保護您的快取免受拒絕服務的攻擊。
- 確定您的用戶端應用程式至少會在權杖到期前三分鐘傳送新的 Microsoft Entra 權杖,以避免連線中斷。
- 當您定期呼叫 Redis 伺服器
AUTH
命令時,請考慮新增隨機延遲,以使AUTH
命令執行時間錯開。 這樣,您的 Redis 伺服器就不會同時收到太多的AUTH
命令。