管理身分與存取權管理驗證

本頁說明如何使用 Memorystore for Valkey 的 IAM 驗證功能執行常見工作。如要進一步瞭解這項功能,請參閱「關於 IAM 驗證」。

建立使用 IAM 驗證的執行個體

如要建立使用 IAM 驗證的 Memorystore for Valkey 執行個體,請執行 create 指令:

gcloud memorystore instances create INSTANCE_ID --region=REGION_ID --network=NETWORK --node-type=NODE_TYPE --shard-count=SHARD_COUNT --auth-mode=iam-auth

更改下列內容:

  • INSTANCE_ID 是您要建立的 Memorystore for Valkey 執行個體 ID。執行個體 ID 的長度必須介於 1 至 63 個字元之間,而且只能使用小寫英文字母、數字或連字號。但開頭必須是小寫英文字母,結尾則須為小寫英文字母或數字。

  • REGION_ID 是您希望執行個體所在的地區。

  • NETWORK 是用於建立執行個體的網路。格式必須為 projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID。這裡使用的網路 ID 必須與服務連線政策使用的網路 ID 相符。否則 create 作業會失敗。詳情請參閱「網路」。

  • NODE_TYPE 是您選擇的節點類型。可接受的值如下:

    • shared-core-nano
    • standard-small
    • highmem-medium
    • highmem-xlarge
  • SHARD_COUNT 決定執行個體中的 shard 數量。分片數會決定儲存執行個體資料的總記憶體容量。如要進一步瞭解執行個體規格,請參閱「執行個體和節點規格」。

授予 IAM 驗證的權限

如要授予 IAM 存取權,請使用授予 IAM 角色操作說明,將 roles/memorystore.dbConnectionUser 角色授予主體。

根據預設,授予主體 roles/memorystore.dbConnectionUser 角色後,主體就能存取專案中的所有執行個體。

為執行個體建立有限的 IAM 管理員角色

您可能想建立可修改執行個體連線 IAM 權限的角色,但不想授予完整的 IAM 管理員存取權。方法是為 roles/memorystore.dbConnectionUser 角色建立有限的 IAM 管理員。詳情請參閱「建立受限的 IAM 管理員」。

連線至使用 IAM 驗證的執行個體

  1. Compute Engine VM 必須與 Valkey 執行個體使用相同授權網路,如果不存在這樣的 VM,請按照快速入門導覽課程:使用 Linux VM 來建立及連線至 VM。

  2. 為專案啟用 Cloud Platform API 範圍。如要進一步瞭解如何啟用這個存取權範圍,請參閱「附加服務帳戶並更新存取權範圍」。如要進一步瞭解這個範圍的最佳做法,請參閱「範圍最佳做法」。

  3. 為專案啟用 Memorystore for Valkey API。

    Memorystore for Valkey API

  4. 按照「安裝 Valkey」一文中的操作說明,在 Compute Engine VM 上安裝 valkey-cli

  5. 執行下列指令,取得 IAM 使用者的存取權權杖:

    gcloud auth print-access-token
    
  6. 連線至執行個體的探索端點:

    valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
    

    更改下列內容:

    • NETWORK_ADDRESS 是執行個體的網路位址。如要查看網路地址,請參閱「查看執行個體資訊」。

    • PORT 是執行個體通訊埠號碼。如要查看通訊埠編號,請參閱「查看執行個體資訊」。

    • ACCESS_TOKEN 是先前步驟中擷取的 IAM 存取權杖。

  7. 執行 CLUSTER SHARDS 指令,查看節點拓撲。記下其中一個節點的 IP 位址和通訊埠號碼。

  8. 執行下列指令,連線至所選節點:

    valkey-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
    

    更改下列內容:

    • NODE_IP_ADDRESS 是您在上一個步驟中找到的節點 IP 位址。
    • NODE_PORT 是您在上一個步驟中找到的節點埠號。
  9. 執行 Valkey SETGET 指令,確認您已與執行個體節點建立經過驗證的連線。

  10. 測試與 Valkey 執行個體的連線後,建議刪除用於連線至 Valkey 執行個體的 Compute Engine VM。這樣做有助於避免 Cloud Billing 帳戶產生費用。

  11. 執行下列指令,使用 valkey-cli 進行驗證並連線至執行個體,並將變數換成適當的值:

    valkey-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
    

    更改下列內容:

    • NETWORK_ADDRESS 是執行個體的網路位址。如要查看網路地址,請參閱「查看執行個體資訊」。

    • PORT 是執行個體通訊埠號碼。如要查看通訊埠編號,請參閱「查看執行個體資訊」。

    • ACCESS_TOKEN 是先前步驟中擷取的 IAM 存取權杖。

  12. 執行 Valkey SETGET 指令,確認您已與執行個體建立經過驗證的連線。

  13. 測試與 Valkey 執行個體的連線後,建議刪除用於連線至 Valkey 執行個體的 Compute Engine VM。這樣做有助於避免 Cloud Billing 帳戶產生費用。

自動擷取存取權杖

建議您在應用程式中自動擷取存取權杖,因為存取權杖的生命週期較短,無法輕易進行硬式編碼。

  1. (選用) 如果您還沒有帳戶,請為應用程式建立服務帳戶 (請參閱「建立及管理服務帳戶」)。

    gcloud iam service-accounts create SA_NAME \
        --description="DESCRIPTION" \
        --display-name="DISPLAY_NAME"
    

    更改下列內容:

    • SA_NAME 是服務帳戶的名稱。
    • DESCRIPTION 是服務帳戶的選填說明。
    • DISPLAY_NAME 是要顯示在Google Cloud 控制台的服務帳戶名稱。
  2. 在專案中授予服務帳戶 memorystore.dbConnectionUser 權限。

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \
    --role="memorystore.dbConnectionUser"
    

    更改下列內容:

    • PROJECT_ID 是專案 ID。
    • SA_NAME 是服務帳戶的名稱。
    • ROLE_NAME 是角色名稱,例如 roles/compute.osLogin
  3. 以指定服務帳戶的身分驗證應用程式。詳情請參閱「服務帳戶」。

    如需程式碼範例,瞭解如何使用熱門用戶端程式庫驗證應用程式,請參閱用戶端程式庫程式碼範例

連線至採用 IAM 驗證機制的執行個體時,可使用的程式碼範例

如要查看與 Valkey 相容的程式碼範例,瞭解如何設定用戶端程式庫來連線至使用 IAM 驗證的執行個體,請參閱「同時使用 IAM 驗證和傳輸中加密的程式碼範例」。

排解 IAM 驗證的錯誤訊息

錯誤訊息 建議做法 說明

-WRONGPASS invalid username-password pair or user is disabled

確認提供給 Memorystore for Valkey 伺服器的使用者名稱和存取權杖 提供的使用者名稱或存取權杖無效。系統只支援「default」這個使用者名稱。如果應用程式已使用「預設」使用者名稱,請確認存取權杖未過期,且是按照「連線至使用 IAM 驗證的執行個體」中的操作說明擷取。如果 IAM 權限最近才變更,可能需要幾分鐘才會生效。

-NOAUTH Authentication required

確認應用程式已設定為向 Memorystore for Valkey 伺服器提供 IAM 存取權權杖 應用程式未提供 Memorystore for Valkey 伺服器的存取權杖。按照「連線至使用 IAM 驗證的執行個體」一文中的操作說明,確認應用程式已設定為提供存取權杖。

-ERR (ERR_IAM_EXHAUSTED) Memorystore IAM authentication backend quota exceeded. See https://cloud.google.com/memorystore/docs/valkey/manage-iam-auth#error_messages.

以指數輪詢方式重試 IAM 後端過載,並傳回超出配額的錯誤給 Memorystore for Valkey 伺服器。應用程式應嘗試使用指數輪詢重試此錯誤,避免連線進一步失敗。

-ERR (ERR_IAM_OTHER) Memorystore IAM authentication backend error. See https://cloud.google.com/memorystore/docs/valkey/manage-iam-auth#error_messages.

以指數輪詢方式重試 IAM 後端傳回暫時性錯誤給 Memorystore for Valkey 伺服器。應用程式應嘗試使用指數輪詢重試此錯誤,避免連線進一步失敗。