您可以安全地加密用戶端應用程式與 Memorystore for Valkey 之間的所有資料。這就是傳輸加密。使用傳輸中加密功能後,所有 Valkey 流量都會透過傳輸層安全標準 (TLS) 通訊協定加密。這可確保應用程式與 Memorystore for Valkey 之間的所有資料傳輸都經過加密,不會外洩或遭到竄改。
啟用傳輸中資料加密機制後,Valkey 用戶端只會透過安全連線進行通訊。系統會封鎖未設定 TLS 的 Valkey 用戶端。如果您選擇使用傳輸中資料加密,則必須確保 Valkey 用戶端可以使用 TLS 通訊協定。
使用傳輸中加密的執行個體有憑證授權單位 (CA)。您可以使用 CA 驗證執行個體中機器的憑證。
您可以使用的 CA 模式之一是客戶管理的 CA。您可以為 Memorystore for Valkey 執行個體使用客戶管理的 CA。如要基於法規遵循需求管理自己的 CA,可以使用這個 CA 模式。使用這個模式時,您必須設定託管於憑證授權單位服務的自有 CA 集區。
如要設定執行個體使用客戶管理的 CA,您必須先使用 CA 服務,在執行個體所在的區域中建立 CA 集區,以及該集區中的至少一個 CA。CA 可以是根 CA 或從屬 CA。您也可以在 CA 服務中建立從屬 CA,然後將從屬 CA 鏈結至外部根 CA。
建立執行個體時,請指定 CA 集區。在設定過程中,專案專屬的 Memorystore for Valkey 服務帳戶會取得使用 CA 集區的權限。服務帳戶會向集區要求 CA,而 Memorystore for Valkey 會使用該 CA 簽署執行個體的伺服器憑證。
事前準備
使用客戶管理的 CA 模式前,請確認符合下列規定。
必要的角色
如要取得建立 CA 集區和 CA 所需的權限,請要求管理員授予 CA 服務的 CA 服務作業管理員 (roles/privateca.caManager) IAM 角色。
您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
使用客戶自行管理 CA 的工作流程
如要使用客戶管理的 CA,請按照下列工作流程操作:
- 建立 CA 集區。如要將執行個體設定為使用客戶管理的 CA,您必須先在 CA 服務中建立 CA 集區。這個集區必須與執行個體位於相同區域。
- 在 CA 集區中建立 CA。建立 CA 集區後,您必須使用 CA 服務在集區中建立至少一個 CA。
- 將權限委派給 Memorystore for Valkey 服務帳戶,透過您建立的 CA 集區中的 CA 核發伺服器憑證。
- 建立執行個體,以使用客戶管理的 CA。
建立憑證授權單位集區
您可以在要建立 Memorystore for Valkey 執行個體的專案中,建立 CA Service 的 CA 集區,也可以在其他專案中建立 CA 集區。不過,如果您在其他專案中建立 CA 集區,VPC Service Controls 可能會根據您的組織政策,禁止您建立任何執行個體。如要修正這個問題,請確認 CA 集區和 CA 的主機專案,以及 Memorystore for Valkey 的主機專案屬於相同 service perimeter。詳情請參閱「Service perimeter 詳細資料和設定」和「管理 service perimeter」。
如要建立 CA 集區,請按照「建立 CA 集區」一文的說明操作。您可以接受 CA 集區的預設值,但必須設定下列設定:
- 在您要建立執行個體的相同地區中建立 CA 集區。如需 Memorystore for Valkey 支援的區域清單,請參閱「Memorystore for Valkey 位置」。
- 允許以設定為基礎的憑證要求。
- 允許主體別名 (SAN) 中的 DNS 名稱。設定 CA 集區的身分限制時,請勿對 DNS 名稱的格式設下任何限制,以免與 Memorystore for Valkey 可能新增至 SAN 的內容發生衝突。
在 CA 集區中建立 CA
在您建立的 CA 集區中,至少建立一個 CA。
您可以建立根 CA 或從屬 CA。
如要建立根 CA,請按照「建立根 CA」一文的說明操作。您可以接受 CA 的預設值,但請務必以「已啟用」狀態建立 CA。
設定「CA 金鑰大小和演算法」時,您可以選取任何金鑰大小和演算法。
如要建立從屬 CA,請先建立並設定根 CA。
如要在 CA 服務中建立從屬 CA,請按照「建立從屬 CA」一文的說明操作。
如要從外部根 CA 建立從屬 CA,請按照「從外部 CA 建立從屬 CA」一文中的操作說明進行。
授予服務帳戶 CA 集區存取權
為確保 Memorystore for Valkey 服務帳戶有權為執行個體要求及簽署憑證,請將您建立的 CA 集區的 roles/privateca.certificateRequester 角色授予服務帳戶。
這個服務帳戶的格式如下:
service-PROJECT_NUMBER@cloud-memorystore.iam.gserviceaccount.com。將 PROJECT_NUMBER 替換為專案的專案編號。 Google Cloud
gcloud
如要授予服務帳戶 CA 集區存取權,請使用 gcloud privateca pools add-iam-policy-binding 指令。
gcloud privateca pools add-iam-policy-binding CA_POOL_ID \ --project=PROJECT_ID \ --location=REGION_ID \ --member serviceAccount:SERVICE_ACCOUNT_NAME \ --role=roles/privateca.certificateRequester
請將下列項目改為對應的值:
- CA_POOL_ID:您建立的 CA 集區 ID。
- PROJECT_ID:您要在其中建立執行個體的 Google Cloud 專案 ID。
- REGION_ID:CA 集區所在的區域。
- SERVICE_ACCOUNT_NAME:Memorystore for Valkey 服務帳戶的名稱。這個服務帳戶的專案編號與 PROJECT_ID 相關聯的專案編號相同。
建立使用客戶代管 CA 的執行個體
控制台
請按照「建立執行個體」中的步驟操作。
gcloud
如要建立使用客戶管理 CA 的執行個體,請使用 gcloud memorystore instances create 指令。
gcloud memorystore instances create INSTANCE_ID \
--location=REGION_ID \
--endpoints='[{"connections": [{"pscAutoConnection": {"network": "projects/PROJECT_ID/global/networks/NETWORK_ID", "projectId": "PROJECT_ID"}}]}]' \
--replica-count=REPLICA_COUNT \
--node-type=NODE_TYPE \
--shard-count=SHARD_COUNT \
--engine-version=ENGINE_VERSION \
--mode=MODE \
--transit-encryption-mode=server-authentication \
--server-ca-mode=customer-managed-cas-ca \
--server-ca-pool="projects/CA_POOL_PROJECT_ID/locations/REGION_ID/caPools/CA_POOL_ID"
請將下列項目改為對應的值:
INSTANCE_ID:您要建立的執行個體 ID。執行個體 ID 的長度須介於 1 至 63 個字元之間,而且只能使用小寫英文字母、數字或連字號。開頭須為小寫英文字母,結尾須為小寫英文字母或數字。
REGION_ID:您希望執行個體所在的區域。您必須將執行個體建立在與您建立的 CA 集區所在區域相同的區域內。
PROJECT_ID:您要在其中建立執行個體的專案 ID。
NETWORK_ID:要用於建立執行個體的網路 ID。
REPLICA_COUNT:副本數量 (每個分片)。可接受的值為
0到5。NODE_TYPE:節點類型。可接受的值如下:
shared-core-nanostandard-smallhighmem-mediumhighmem-xlarge
SHARD_COUNT:執行個體中的分片數量。Shard 數量決定了儲存執行個體資料的總記憶體容量。如要進一步瞭解執行個體規格,請參閱「執行個體和節點規格」。
ENGINE_VERSION:執行個體的版本。這個參數可接受的值為
VALKEY_7_2、VALKEY_8_0和VALKEY_9_0。如未指定值,預設值為VALKEY_9_0。MODE:判斷執行個體是否已啟用叢集模式。如果省略這個欄位,執行個體預設會啟用叢集模式。詳情請參閱「啟用及停用叢集模式」。
CA_POOL_PROJECT_ID:您建立的 CA 集區 ID。
REGION_ID:CA 集區所在的區域。您要建立的執行個體和 CA 集區必須位於相同區域。
CA_POOL_ID:您建立的 CA 集區 ID。
server-ca-mode 參數代表執行個體的 CA 模式。如果是客戶管理的 CA,customer-managed-cas-ca 是參數的值。如未使用這個參數,預設的 CA 模式為每個執行個體。
例如:
gcloud memorystore instances create my-instance \
--location=us-central1 \
--endpoints='[{"connections": [{"pscAutoConnection": {"network": "projects/my-project/global/networks/my-network", "projectId": "my-project"}}]}] \
--replica-count=1 \
--node-type=highmem-medium \
--shard-count=3 \
--engine-version=VALKEY_9_0 \
--mode=CLUSTER \
--transit-encryption-mode=server-authentication \
--server-ca-mode=customer-managed-cas-ca \
--server-ca-pool="projects/my-CA-pool-project/locations/us-central1/caPools/my-CA-pool"
輪替執行個體的伺服器憑證
除了 Memorystore for Valkey 每週進行伺服器端憑證輪替外,您也可以視需要輪替憑證。
gcloud
如要輪換執行個體中所有機器的伺服器憑證,請使用 gcloud memorystore instances update 指令。
gcloud memorystore instances update INSTANCE_ID \ --location=REGION_ID \ --rotate-server-certificate
請將下列項目改為對應的值:
- INSTANCE_ID:包含要輪換伺服器憑證的機器執行個體 ID
- REGION_ID:執行個體所在的區域
例如:
gcloud memorystore instances update my-instance \ --location=us-central1 \ --rotate-server-certificate
限制
搭配使用客戶管理的 CA 與 Memorystore for Valkey 時,請注意下列限制:
- 為執行個體設定客戶管理的 CA 後,就無法修改設定。舉例來說,您無法變更執行個體的 CA 集區 ID。
- 請勿刪除客戶管理的 CA 集區,或撤銷與 CA 相關聯的服務帳戶權限。如果這麼做,伺服器憑證就無法輪替,而且會過期。因此,您的用戶端應用程式將無法連線至執行個體。
疑難排解
本節列出使用客戶管理的 CA 時可能會收到的錯誤訊息,並提供疑難排解提示。
| 錯誤訊息 | 原因 | 疑難排解 |
|---|---|---|
FAILED_PRECONDITION: GetClusterCertificateAuthority not
supported for customer-managed CAs |
如果您使用客戶管理的 CA,就無法使用 Memorystore for Valkey 擷取 CA 憑證。 | 如要取得客戶管理 CA 的 CA 憑證,請使用 CA 服務。 |
Server certificate rotation can only be triggered for
customer-managed CAs. |
您嘗試輪換執行個體的伺服器憑證,但執行個體的 CA 模式為「每個執行個體」或「共用」。 | 除非執行個體使用的模式為客戶管理,否則無法輪換伺服器憑證。 |
Invalid format for server CA pool: {CA pool resource}. Expected
projects/{project}/locations/{location}/caPools/{caPool}. |
您用來建立執行個體的 CA 集區格式無效。 | CA 集區的格式為: projects/CA_POOL_PROJECT_ID/locations/REGION_ID/ caPools/CA_POOL_ID |
The instance/cluster's server CA pool must be in the same region
as the instance/cluster. CA Pool region: {CA pool region}, Instance/cluster
region: {cluster region}. |
您嘗試建立的執行個體與 CA 集區位於不同區域。 | 請確認您要建立的執行個體和 CA 集區位於相同區域。 |
Request is prohibited by organization's policy for CA Pool
{CA pool ID}. |
代管 CA 集區的專案和代管執行個體的專案不在同一個服務範圍內。 Google Cloud | 設定 VPC Service Controls,確保專案屬於相同服務範圍。 |
Permission privateca.certificates.create denied on {CA pool ID}.
Make sure that you granted the roles/privateca.certificateRequester role
to the service account {P4SA email}. |
Memorystore for Valkey 服務帳戶沒有 CA 集區的 roles/privateca.certificateRequester 角色。因此,Memorystore for Valkey 無法產生伺服器憑證。 |
將 roles/privateca.certificateRequester 角色指派給服務帳戶。詳情請參閱「授予服務帳戶 CA 集區存取權」。 |
Resource {CA pool ID} not found. |
嘗試建立執行個體時,Memorystore for Valkey 找不到您指定的 CA 集區。 | 檢查專案 ID、位置和 CA 集區名稱。 |
There are no enabled CAs in the CaPool {CA pool ID}. Please
ensure that there is at least one enabled Certificate Authority to issue a
certificate. |
CA 集區中沒有已啟用的 CA。Memorystore for Valkey 無法為執行個體產生伺服器憑證。 | 請務必在 CA 集區中建立至少一個 CA,且該 CA 處於「已啟用」狀態。 |
Quota exhausted for CA Service. Check quotas
for the project hosting the CA Pool: {CA pool ID}. |
您已超過 CA 集區所在 Google Cloud 專案的 CA 服務配額。Memorystore for Valkey 無法執行需要這項服務的作業。 | 查看專案中憑證授權單位服務的配額。詳情請參閱「配額與限制」。 |
server_ca_pool must be provided when server_ca_mode is
SERVER_CA_MODE_CUSTOMER_MANAGED_CAS_CA. |
您嘗試建立的執行個體使用客戶代管的 CA 模式。但您未提供 CA 集區的相關資訊。 | 指定專案 ID、位置和 CA 集區名稱。 |
server_ca_pool must not be provided when server_ca_mode is not SERVER_CA_MODE_CUSTOMER_MANAGED_CAS_CA. |
您嘗試建立的執行個體使用個別執行個體或共用 CA 模式。這些 CA 模式不會使用 server_ca_pool 參數。 |
除非 CA 模式為客戶自行管理,否則無法使用這個參數。 |