如何解決 AWS KMS 解密錯誤「InvalidCiphertextException」?

1 分的閱讀內容
0

我嘗試使用 AWS Lambda 加密協助程式解密 AWS Key Management Service (AWS KMS) 的環境變數,並收到錯誤「InvalidCiphertextException」。

簡短說明

AWS KMS API 動作錯誤 InvalidCiphertextException 表示解密請求失敗,因為 Lambda 已更新加密環境變數的方式。Lambda 會將函數名稱作為對 AWS KMS 進行加密呼叫的加密內容來傳遞。對於在此變更之前建立的解密函數,您必須更新用於解密的程式碼,並將 Lambda 函數名稱作為加密內容來傳遞。

解決方法

若要針對加密內容的特定 SDK 取得具有 AWS KMS 解密呼叫的程式碼,請完成下列步驟:

  1. 開啟 Lambda 主控台,然後選擇函數
  2. 函數名稱中,選擇 Lambda 函數,然後選擇組態標籤。
  3. 環境變數中,選擇編輯,然後選擇新增環境變數
  4. 輸入金鑰和值,然後展開加密組態
  5. 選擇啟用傳輸中加密的協助程式,然後選擇加密
  6. 展開解密密碼片段,然後輸入類似下列片段的程式碼片段:
DECRYPTED = boto3.client('kms').decrypt(    CiphertextBlob=b64decode(ENCRYPTED),
    EncryptionContext={'LambdaFunctionName': os.environ['AWS_LAMBDA_FUNCTION_NAME']}
)['Plaintext'].decode('utf-8')

使用上述程式碼片段以解密使用加密協助程式予以加密的新環境變數。

請務必重新加密舊環境變數,以便其能與新環境變數一起運作。

如需詳細資訊,請參閱使用 AWS Lambda 環境變數

相關資訊

如何驗證在呼叫 AWS KMS API 時是否使用了具有相關聯資料加密的驗證加密?

AWS 官方
AWS 官方已更新 1 年前