使用客戶自行管理的加密金鑰 (CMEK) 加密資料

根據預設,Filestore 會加密靜態儲存的客戶內容。Filestore 會為您處理加密作業,您不必採取任何其他動作。這項做法稱為「Google 預設加密」

如要控管加密金鑰,您可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),並搭配 Filestore 等整合 CMEK 的服務。使用 Cloud KMS 金鑰可讓您控管保護等級、位置、輪換時間表、使用權限和存取權,以及加密範圍。使用 Cloud KMS 也能查看稽核記錄,以及控管金鑰生命週期。 您可以在 Cloud KMS 中控制及管理這些金鑰,而不是由 Google 擁有及管理用來保護您資料的對稱金鑰加密金鑰 (KEK)

使用 CMEK 設定資源後,存取 Filestore 資源的體驗與使用 Google 預設加密機制類似。如要進一步瞭解加密選項,請參閱客戶管理的加密金鑰 (CMEK)

CMEK 可用於 Filestore 執行個體備份

CMEK 選項

Filestore 支援以軟體金鑰形式儲存的 CMEK、HSM 叢集中的硬體金鑰,以及儲存在 Cloud External Key Manager (Cloud EKM) 中的外部金鑰。

詳情請參閱 Cloud Key Management Service

EKM 服務中斷

根據設計,外部金鑰是由第三方管理;在這種情況下,Google Cloud 不負責金鑰可用性。

如果 Cloud Key Management Service (Cloud KMS) 收到 External Key Manager (EKM) 通知,指出外部金鑰無法存取,使用者就會收到 ekm_key_unreachable_detected 通知。使用者在執行個體上作業時,存取權會受到限制,最多一小時。一小時後,如果金鑰狀態沒有變更,系統會採取下列行動:

  • 金鑰已停用。
  • 所有加密和解密作業都會失敗。
  • Filestore 執行個體已暫停。

在某些情況下 (例如 VM 重新啟動等非預期事件),執行個體的存取權可能會在一小時前中斷。

您可以在 Filestore 執行個體詳細資料頁面中查看無法存取的金鑰通知:

前往 Filestore 執行個體頁面

如果使用者在收到第一則回報通知後一小時內執行下列任一操作,也會收到 ekm_key_unreachable_detected 通知:

支援的層級

下表列出支援 CMEK 的 Filestore 服務層級

級別 支援 CMEK
基本傳統硬碟
基本固態硬碟
可用區
區域
Enterprise

建立要搭配執行個體使用的金鑰環和金鑰

金鑰環和金鑰可以與 Filestore 執行個體位於不同專案,但必須位於相同位置。如果您已有要與 Filestore 搭配使用的 Cloud KMS 金鑰環和金鑰,請跳至下一節。否則,請按照建立對稱式加密金鑰的操作說明,建立金鑰環和金鑰。

將金鑰存取權授予 Filestore 服務帳戶

如要建立使用 CMEK 的 Filestore 執行個體,Filestore 服務帳戶必須具備 Cloud KMS CryptoKey Encrypter/Decrypter 角色 (roles/cloudkms.cryptoKeyEncrypterDecrypter)。

  1. 首次在專案中建立 Filestore 執行個體時,系統會建立 Filestore 服務帳戶。如果還沒有 Filestore 服務帳戶,請執行下列services identity create指令:

    gcloud beta services identity create --service=file.googleapis.com --project=INSTANCE_PROJECT_NUMBER_OR_ID
    

    INSTANCE_PROJECT_NUMBER_OR_ID 替換為您要建立 Filestore 執行個體的專案編號或 ID。

  2. 執行 projects add-iam-policy-binding 指令,將 Cloud KMS CryptoKey Encrypter/Decrypter 角色指派給 Filestore 服務帳戶:

    gcloud projects add-iam-policy-binding KMS_PROJECT_NUMBER_OR_ID \
        --member serviceAccount:service-INSTANCE_PROJECT_NUMBER@cloud-filer.iam.gserviceaccount.com \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    更改下列內容:

    • KMS_PROJECT_NUMBER_OR_ID,並提供要使用的 Cloud KMS 金鑰所在專案的專案編號或 ID。
    • INSTANCE_PROJECT_NUMBER 替換為要在其中建立 Filestore 執行個體的專案編號 (而非專案 ID)。

建立使用 Cloud KMS 金鑰的執行個體

Google Cloud 控制台

如要建立使用 Cloud KMS 金鑰加密資料的執行個體,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的 Filestore 執行個體頁面。

    前往 Filestore 執行個體頁面

  2. 按一下「建立執行個體」

  3. 選取支援 CMEK 的執行個體層級,然後照常填寫所有其他必填和選填欄位。

  4. 按一下 [Show advanced options] (顯示進階選項)

  5. 選取「使用客戶自行管理的加密金鑰 (CMEK)」核取方塊。

  6. 選取要用於執行個體的 Cloud KMS 金鑰。

  7. 點選「建立」

gcloud CLI

如要建立 Filestore 執行個體,並使用 Cloud KMS 金鑰加密資料,請在 filestore instances create 指令中指定 --kms-key 標記:

gcloud filestore instances create nfs-server \
    --tier=<var>TIER</var> \
    --location=us-central1 \
    --file-share=name="vol1",capacity=1TiB \
    --network=name="default" \
    --kms-key=KMS_KEY

更改下列內容:

  • TIER,並使用支援 CMEK 的 Filestore 層級。
  • KMS_KEY,並替換為要使用的 Cloud KMS 金鑰完整名稱。或者,您也可以採用下列格式,分別指定每個引數:
--kms-key=KMS_KEY : --kms-keyring=KEY_RING --kms-location=KMS_REGION --kms-project=KMS_PROJECT_NUMBER_OR_ID

更改下列內容:

  • KMS_KEY 替換為 Cloud KMS 金鑰的名稱。
  • KMS_PROJECT_NUMBER_OR_ID 是建立金鑰的專案編號或 ID。
  • KMS_KEY_RING 替換為金鑰環的名稱。
  • KMS_REGION 替換為金鑰環的地區。金鑰環和執行個體必須位於相同區域。

取得金鑰清單

您可以執行 kms keys list 指令來取得金鑰清單:

  gcloud kms keys list \
  --project=KMS_PROJECT_NUMBER_OR_ID \
  --keyring=KEY_RING \
  --location=KMS_REGION

更改下列內容:

  • KMS_PROJECT_NUMBER_OR_ID 是建立金鑰的專案編號或 ID。
  • KEY_RING 替換為金鑰環的名稱。
  • KMS_REGION 替換為金鑰環的地區。

輸出內容的「名稱」欄會顯示現有金鑰的完整名稱。例如:

projects/example-project/locations/us-central1/keyRings/example-ring/cryptoKeys/example-key

取得執行個體重要資訊

以下各節說明如何取得執行個體金鑰資訊。

列出使用特定 Cloud KMS 金鑰的執行個體

如要列出使用特定金鑰的 Filestore 執行個體,請執行 instances list 指令:

gcloud filestore instances list --filter="kmsKeyName=KMS_KEY"

KMS_KEY 替換為您要使用的金鑰完整名稱。

範例:

gcloud filestore instances list \
    --filter="kmsKeyName=projects/example-project/locations/us-central1/keyRings/example-ring/cryptoKeys/example-key"

輸出內容如下所示:

INSTANCE_NAME LOCATION    TIER       CAPACITY_GB FILE_SHARE_NAME IP_ADDRESS   STATE CREATE_TIME
nfs-server    us-central1 ENTERPRISE 1024        vol1            10.166.108.2 READY 2021-08-12T11:38:56

取得執行個體的 Cloud KMS 金鑰資訊

請使用下列其中一種方法,取得 Filestore 執行個體的 Cloud KMS 金鑰資訊:

Google Cloud 控制台

  1. 前往 Filestore 執行個體頁面。

    前往 Filestore 執行個體頁面

  2. 按一下執行個體 ID,開啟執行個體詳細資料頁面。

  3. 按一下「總覽」分頁標籤。

如果執行個體使用 Cloud KMS 金鑰 (而非Google-owned and Google-managed encryption key) 加密資料,系統會在「Encryption key」(加密金鑰) 欄位中顯示金鑰名稱。

gcloud CLI

執行下列 instances describe 指令:

gcloud filestore instances describe INSTANCE_ID \
   --location=INSTANCE_LOCATION

更改下列內容:

  • INSTANCE_ID,並將其替換為您要取得資訊的 Filestore 執行個體 ID。
  • INSTANCE_LOCATION 替換成執行個體所在的區域。

輸出內容如下所示:

createTime: '2021-08-12T11:38:56.851157387Z'
fileShares:
- capacityGb: '1024'
  name: vol1
kmsKeyName: projects/example-project/locations/us-central1/keyRings/example-ring/cryptoKeys/example-key
labels:
  key: val
name: projects/consumer-project/locations/us-central1/instances/nfs-server
networks:
- ipAddresses:
  - 10.0.100.2
  modes:
  - MODE_IPV4
  network: network
  reservedIpRange: 10.166.108.0/23
state: READY
tier: ENTERPRISE

停用或銷毀執行個體使用的 Cloud KMS 金鑰

如果系統偵測到 Cloud KMS 金鑰狀態有變更,執行個體會自動停止提供資料。以下提供幾個範例:

  • 停用金鑰或金鑰版本。
  • 刪除金鑰或金鑰版本。
  • 修改金鑰的權限。

系統通常會在金鑰狀態變更後幾分鐘內偵測到這項異動,但有時可能需要一小時。

執行個體停止後,系統會封鎖所有檔案共用資料和任何快照的存取權。停止的執行個體會持續計費,直到刪除為止。

啟動已停止的執行個體

如果已停止的 Filestore 執行個體使用 Cloud KMS 金鑰加密資料,則必須先啟用還原金鑰的所有版本,才能重新啟動執行個體。

Cloud KMS 金鑰狀態啟用後,執行個體就會自動偵測金鑰變更,並在 20 分鐘內重新啟動,不需採取任何額外動作。

備份鏈結的 CMEK 支援

您可以使用 CMEK 加密 Filestore 執行個體,也可以加密備份鏈結

基本級備份不支援 CMEK。

備份鏈結位於單一值區和區域。如要在來源執行個體以外的區域儲存及加密備份資料,使用者必須套用兩個不同的 CMEK:一個用於執行個體,另一個用於備份鏈。請注意下列規定:

  • CMEK 必須與加密的備份鏈結位於相同區域。
  • 系統會將單一 CMEK 套用至備份鏈儲存的 bucket,且無法合併或取代。

金鑰輪替限制

金鑰輪替期間,系統會建立新的加密金鑰來取代現有金鑰。與金鑰輪替相關的下列動作可能會導致您無法還原備份鏈:

  • 停用金鑰或金鑰版本。
  • 刪除金鑰或金鑰版本。
  • 修改金鑰權限。

但不會阻止鏈結中建立備份。

如果無法還原備份鏈,請按照下列步驟操作:

  1. 刪除所有備份。
  2. 發起新的對話串。您可以採用下列任一做法:
    • 使用相同的 CMEK 在不同位置建立備份。
    • 使用新的 CMEK 在相同位置建立備份。

詳情請參閱「備份總覽」。

後續步驟