關於 IAM 驗證

Memorystore 提供 Identity and Access Management (IAM) 驗證功能,可運用 IAM 協助您更妥善地管理使用者和服務帳戶的登入存取權。以 IAM 為基礎的驗證機制會與 Redis AUTH 整合,讓您順暢輪替憑證 (IAM 權杖),不必使用靜態密碼。

如需為 Memorystore 叢集設定 IAM 驗證的操作說明,請參閱「管理 IAM 驗證」。

Redis 的 IAM 驗證

使用 IAM 驗證時,您無法將 Memorystore 叢集的存取權直接授予使用者,而是將不同權限的角色授予主體。詳情請參閱 IAM 總覽

透過 IAM 驗證身分後,管理員即可使用 Memorystore IAM 驗證,透過 IAM 政策集中管理執行個體的存取權控管。IAM 政策涉及下列實體:

  • 原理。在 Memorystore 中,您可以使用兩種主體:使用者帳戶和服務帳戶 (適用於應用程式)。IAM 驗證目前不支援其他主體類型,例如 Google 群組、Google Workspace 網域或 Cloud Identity 網域。詳情請參閱「與身分有關的概念」。

  • 角色:如要使用 Memorystore IAM 驗證,使用者必須具備 redis.clusters.connect 權限,才能向叢集進行驗證。如要取得這項權限,您可以將使用者或服務帳戶繫結至預先定義的 Redis Cluster DB Connection User (roles/redis.dbConnectionUser) 角色。如要進一步瞭解 IAM 角色,請參閱「角色」一文。

  • 資源。主體存取的資源是 Memorystore 叢集。根據預設,IAM 政策繫結是在專案層級套用,因此主體會取得專案中所有 Memorystore 執行個體的角色權限。不過,IAM 政策繫結可以限制為特定叢集。如需操作說明,請參閱管理 IAM 驗證的權限

Redis AUTH 指令

IAM 驗證功能會使用 Redis AUTH 指令與 IAM 整合,讓用戶端提供 IAM 存取權杖,並在允許存取資料前,由 Memorystore 叢集驗證權杖。

與所有指令一樣,除非啟用「傳輸中加密」,否則 AUTH 指令會以未加密的形式傳送。

如需 AUTH 指令的範例,請參閱「連線至使用 IAM 驗證的 Redis 叢集」。

IAM 存取權杖時間範圍

根據預設,您在驗證時擷取的 IAM 存取權杖會在擷取後一小時失效。或者,您也可以在產生存取權杖時,定義存取權杖的到期時間。

建立新的 Redis 連線時,您必須使用 AUTH 指令出示有效存取權杖。如果權杖過期,您必須取得新權杖才能建立新連線。不過,如果您已驗證現有連線,即使權杖過期,連線仍會繼續運作。

結束已驗證的連線

如要結束連線,請使用 Redis CLIENT KILL 指令。如要找出要終止的連線,請先執行 CLIENT LIST, 系統會依連線時間長度排序並傳回用戶端連線。接著,您可以執行 CLIENT KILL 來結束連線。

啟用 IAM 驗證

啟用 IAM 驗證不會降低穩定狀態效能。不過,這會影響建立連線的速率。

啟用 IAM 驗證功能後,每秒建立的用戶端連線速率會受到節流。這是因為 Google Cloud 的 IAM 驗證必須驗證每個新連線。在穩定狀態下,應用程式會啟用連線集區,因此影響微乎其微。不過,當用戶端應用程式透過部署或彈跳處理程序重新整理時,可能會再次建立大量連線。如果您逐步更新用戶端並實作指數輪詢間隔,就能吸收這項降幅。

如要查看如何使用 IAM 驗證的程式碼範例,請參閱 IAM 驗證和傳輸中加密程式碼範例

安全性與隱私權

IAM 驗證可確保只有獲得授權的 IAM 主體能存取 Redis 叢集。除非啟用「傳輸中資料加密」,否則系統不會提供 TLS 加密。因此,建議您在使用 IAM 驗證時開啟「傳輸中加密」。

透過 Compute Engine VM 連線

如果您使用 Compute Engine VM 連線至使用 IAM 驗證的執行個體,則必須為專案啟用下列存取範圍和 API: