使用 Microsoft Entra 進行快取驗證
Azure Cache for Redis 提供兩種方法來 向快取實例進行驗證 :存取密鑰和Microsoft Entra。
雖然存取金鑰驗證很簡單,但其隨附一組安全性與密碼管理方面的挑戰。 相較之下,在本文中,您會了解如何使用 Microsoft Entra 權杖進行快取驗證。
Azure Cache for Redis 提供無密碼驗證機制,方法是與 Microsoft Entra 整合。 此整合也包含透過開放原始碼 Redis 中支援的存取控制清單 (ACL) 所提供的角色型存取控制功能。
若要使用 ACL 整合,您的用戶端應用程式必須採用 Microsoft Entra 實體的身分識別 (例如服務主體或受控識別),並連線到您的快取。 在本文中,您將瞭解如何使用服務主體或受控識別來連線到快取。 您也會瞭解如何根據用於連線的 Microsoft Entra 成品,授與連線預先定義的許可權。
可用性範圍
層 | 基本、標準、進階 | Enterprise,Enterprise Flash |
---|---|---|
可用性 | 是 | No |
先決條件與限制
- Microsoft SSL 連線和 TLS 1.2 或更高版本都支援 Entra 驗證。
- 相依於 Azure 雲端服務 的 Azure Cache for Redis 實例不支援Microsoft Entra 驗證。
- Microsoft Azure Cache for Redis Enterprise 的企業層不支援 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項目驗證 ] 索引標籤。
選取 [ 啟用Microsoft項目驗證 ],然後輸入有效用戶的名稱。 當您選取 [儲存] 時,您輸入的使用者預設會自動獲指派「資料擁有者存取原則」。 您也可以輸入受控識別或服務主體,以連線到快取執行個體。
快顯對話框會詢問您是否要更新設定,並通知您需要幾分鐘的時間。 選取 [是]。
重要
啟用作業完成後,快取實例中的節點會重新啟動以載入新的組態。 建議您在維護期間或在尖峰上班時間以外執行這項作業。 此作業最多可能需要 30 分鐘的時間。
如需如何使用 Microsoft Entra 搭配 Azure CLI 的資訊,請參閱 身分識別的參考頁面。
停用快取上的存取金鑰驗證
使用 Microsoft Entra 是連接快取的安全方式。 建議您使用 Microsoft Entra 並停用存取金鑰。
當您停用快取的存取密鑰驗證時,所有現有的用戶端連線都會終止,不論它們是否使用存取密鑰或Microsoft Entra 驗證。 請遵循建議的 Redis 用戶端最佳做法,以實作適當的重試機制,以重新連線Microsoft以 Entra 為基礎的連線,如果有的話。
停用存取金鑰之前:
Microsoft必須啟用 Entra 授權。
停用存取金鑰僅適用於基本、標準和進階層快取。
針對異地復寫快取,您必須:
- 取消連結快取。
- 停用存取金鑰。
- 重新連結快取。
如果您有使用存取金鑰且想要停用存取金鑰的快取,請遵循此程式:
在 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
= Microsoft您使用 MSAL 取得的 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 程式碼範例 |
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
命令。