啟用傳輸中加密時的最佳實務 - Amazon ElastiCache

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

啟用傳輸中加密時的最佳實務

啟用傳輸中加密之前:請確定您有適當的DNS記錄處理

注意

在此過程中,我們正在變更和刪除舊端點。不正確使用端點可能會導致 Valkey 或 Redis OSS用戶端使用舊的和已刪除的端點,以防止其連接至叢集。

當叢集從無TLS 遷移至TLS偏好 時,會保留舊的每個節點DNS記錄,並以不同的格式產生新的每個節點DNS記錄。TLS啟用 的叢集使用與 non-TLS-enabled叢集不同的DNS記錄格式。當叢集設定為加密模式時, ElastiCache 會保留兩個DNS記錄:偏好 ,以便應用程式和其他 Valkey 或 Redis OSS用戶端可以在它們之間切換。DNS 記錄中的下列變更會在TLS遷移程序期間發生:

說明啟用傳輸中加密時DNS記錄的變更

對於CME叢集

當叢集設定為「傳輸加密模式:偏好」時:

  • 未TLS啟用叢集的原始叢集端點將保持作用中狀態。當叢集重新設定表單TLS加密模式「無」為「偏好」時,不會有停機時間。

  • 當叢集設定為 TLS- 偏好模式時,將產生新的 TLS Valkey 或 Redis OSS端點。這些新端點將解析為IPs與舊端點相同的端點 (非TLS)。

  • 新的 TLS Valkey 或 Redis OSS組態端點將在ElastiCache 主控台中公開,並回應 describe-replication-group API。

當叢集設定為「傳輸加密模式:需要」時:

  • 舊的TLS未啟用端點將被刪除。TLS 叢集端點不會停機。

  • 您可以從cluster-configuration-endpoint ElastiCache 主控台或從 describe-replication-group 擷取新的 API。

對於啟用自動容錯移轉或停用自動容錯移轉的CMD叢集

當複寫群組設為「傳輸加密模式:偏好」時:

  • 未TLS啟用叢集的原始主要端點和讀取器端點將保持作用中。

  • 當叢集設定為 TLS Preferred 模式時,將產生新的TLS主要和讀取器端點。此新端點將解析為與舊端點 (非) 相同的 IPTLS。

  • 新的主要端點和讀取器端點將在 ElastiCache 主控台中公開,並回應 describe-replication-group API。

當複寫群組設為「傳輸加密模式:需要」時:

  • 將刪除舊的非TLS主要和讀取器端點。TLS 叢集端點不會停機。

  • 您可以從主控台或 ElastiCache擷取新的主要和讀取器端點describe-replication-groupAPI。

DNS 記錄的建議用量

對於CME叢集

  • 使用叢集組態端點,而不是應用程式程式碼中的每個節點DNS記錄。不建議直接使用每個節點DNS名稱,因為它們可能會在新增或移除碎片時變更。

  • 不要在應用程式中對叢集組態端點進行硬式編碼,因為它會在此過程中發生變更。

  • 在應用程式中對叢集組態端點進行硬式編碼是一種不好的做法,因為它可能在此過程中變更。傳輸中加密完成後,請使用 查詢叢集組態端點 describe-replication-group API (如上所示 (粗體)),並使用DNS您在此時間點收到回應的 。

對於已啟用自動容錯移轉的CMD叢集

  • 使用主要端點和讀取器端點,而不是應用程式程式碼中的每個節點DNS名稱,因為刪除舊的每個節點名稱,並在將叢集從不TLS偏好遷移到TLS偏好時產生新的節點DNS名稱。不建議直接使用每個節點DNS名稱,因為您可能會在未來將複本新增至叢集。此外,啟用自動容錯移轉時, ElastiCache 服務會自動變更主要叢集和複本的角色,建議使用主要端點和讀取器端點來協助您追蹤這些變更。最後,使用讀取器端點可協助您在叢集中的複本之間平均分配複本的讀取。

  • 在應用程式中硬式編碼主要端點和讀取器端點是不良做法,因為它可以在TLS遷移過程中變更。遷移變更為 TLS- 偏好完成後,使用 describe-replication-group查詢主要端點和讀取器端點,API並使用DNS您從此時間點開始收到的 作為回應。如此,您將能夠以動態方式追踪端點中的變更。

對於停用自動容錯移轉的CMD叢集

  • 使用主要端點和讀取器端點,而不是應用程式程式碼中的每個節點DNS名稱。停用自動容錯移轉時,您改為完成擴展、修補、容錯移轉,以及啟用自動容錯移轉時由 ElastiCache 服務自動管理的其他程序。這可讓您更輕易地手動追蹤不同端點。由於刪除舊的每個節點DNS名稱,並在將叢集從不TLS偏好遷移至不TLS偏好時產生新的節點名稱,因此請勿直接使用每個節點DNS名稱。這是強制性的,以便用戶端可以在 TLS遷移期間連線到叢集。此外,使用讀取器端點時,您將受益於在複本之間平均分散讀取,並在從叢集新增或刪除複本時追蹤 DNS記錄。

  • 在應用程式中硬式編碼叢集組態端點是不良做法,因為它可以在TLS遷移過程中變更。

在傳輸過程中加密:注意遷移過程何時完成

傳輸加密模式的變更不是立即的,可能需要一些時間。大型叢集尤其如此。只有當叢集完成遷移至 TLS- 偏好時,它才能接受並同時提供 TCP 和 TLS連線。因此,在傳輸中加密完成之前,您不應建立會嘗試建立叢集TLS連線的用戶端。

在傳輸中加密成功完成或失敗時,有幾種方法可以得到通知:(未顯示於上面的程式碼範例中):

  • 加密完成後,使用 SNS服務取得通知

  • 使用 describe-eventsAPI會在加密完成時發出事件

  • 在 ElastiCache 主控台中看到已完成加密的訊息

您也可以在應用程式中實作邏輯,以瞭解加密是否完成。在上面的範例中,我們看到了幾種確保叢集完成遷移的方法:

  • 等待遷移程序開始 (叢集狀態變更為「修改」),並等待修改完成 (叢集狀態會變回「可用」)

  • 透過查詢 ,確認叢集已transit_encryption_enabled設定為 Truedescribe-replication-groupAPI。

啟用傳輸中加密之後:確定您使用的用戶端設定正確

當叢集處於 TLS偏好模式時,您的應用程式應開啟叢集的TLS連線,並僅使用這些連線。如此一來,您的應用程式在啟用傳輸中加密時就不會遇到停機時間。您可以使用 SSL區段下的資訊命令,確保沒有更明確的 Valkey 或 Redis OSS引擎TCP連線。

# SSL ssl_enabled:yes ssl_current_certificate_not_before_date:Mar 20 23:27:07 2017 GMT ssl_current_certificate_not_after_date:Feb 24 23:27:07 2117 GMT ssl_current_certificate_serial:D8C7DEA91E684163 tls_mode_connected_tcp_clients:0 (should be zero) tls_mode_connected_tls_clients:100