加密及解密資料

AO 會透過 Google Distributed Cloud (GDC) 實體隔離 CLI,使用 gRPC 用戶端對 KMS 執行加密和解密作業。

事前準備

執行 KMS 作業前,請先設定 kubectl,以便存取 Management API 伺服器並取得必要權限。

設定 Management API 伺服器存取權

設定 kubectl 以存取 Management API 伺服器:

  1. 如果還沒這麼做,請使用 gdcloud CLI 介面,為 Management API 伺服器取得 kubeconfig 檔案
  2. 設定 MANAGEMENT_API_SERVER 環境變數:

    export MANAGEMENT_API_SERVER=PATH_TO_KUBECONFIG
    

    PATH_TO_KUBECONFIG 替換為產生的 kubeconfig 檔案路徑。

  3. 如果尚未完成,請下載、安裝及設定 gdcloud CLI。如要這麼做,請參閱 gcloud CLI 總覽

所需權限

如要取得所需權限,請要求組織 IAM 管理員在專案中授予您 KMS 開發人員 (kms-developer) 角色。

加密資料

如要加密資料,請使用 gdcloud kms keys encrypt 指令。這個指令會使用 AEAD 金鑰加密指定的明文檔案,並將加密結果寫入具名的密文檔案。

  • 如要加密資料,請傳入金鑰名稱和下列項目:

    gdcloud kms keys encrypt namespaces/NAMESPACE/aeadKeys/KEY_NAME \
      --plaintext-file=PLAINTEXT_PATH \
      --additional-authenticated-data-file=ADDITIONAL_AUTHENTICATED_DATA_FILE \
      --ciphertext-file=CIPHERTEXT_PATH
    

    請替換下列變數:

    • NAMESPACE:專案命名空間,例如:kms-test1
    • KEY_NAME:用於加密明文的金鑰名稱,例如:key-1
    • PLAINTEXT_PATH:包含要加密明文的檔案路徑。
    • ADDITIONAL_AUTHENTICATED_DATA_FILE:選用檔案,內含額外的已驗證資料 (AAD)。AAD 可用於完整性檢查,並保護資料免遭混淆代理攻擊。AAD 和純文字的大小上限皆為 64 KB。
    • CIPHERTEXT_PATH:包含加密明文的檔案路徑。

    執行指令後,您會看到 --ciphertext-file 標記中指定的檔案,其中包含純文字檔案的加密內容。

解密資料

如要解密資料,請使用 gdcloud kms keys decrypt 指令。這個指令會使用 AEAD 金鑰解密指定的密文檔案,並將解密內容寫入指定的純文字檔案。

  • 如要解密密文,請傳遞金鑰名稱和下列項目:

    gdcloud kms keys decrypt namespaces/NAMESPACE/aeadKeys/KEY_NAME \
     --ciphertext-file=CIPHERTEXT_PATH \
     --additional-authenticated-data-file=ADDITIONAL_AUTHENTICATED_DATA_FILE \
     --plaintext-file=PLAINTEXT_PATH
    

    請替換下列變數:

    • NAMESPACE:專案命名空間。
    • KEY_NAME:用於加密純文字的金鑰名稱。
    • CIPHERTEXT_PATH:要解密檔案的路徑。
    • ADDITIONAL_AUTHENTICATED_DATA_FILE:選用檔案,內含額外的已驗證資料 (AAD)。AAD 可用於完整性檢查,並保護資料免遭混淆代理攻擊。AAD 和純文字的大小上限皆為 64 KB。
    • PLAINTEXT_PATH:包含解密明文的檔案路徑。

    執行指令後,您會看到 --plaintext-file 標記中指定的檔案,其中包含解密資料。