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

1 分的閱讀內容
0

我嘗試使用 AWS Lambda 加密協助程式解密環境變數,並收到錯誤「InvalidCiphertextException」。所有 AWS Identity and Access Management (IAM) 和 AWS Key Management Service (AWS KMS) 許可都正確無誤。

簡短說明

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 官方已更新 3 年前