如何解决 AWS KMS 解密错误“InvalidCiphertexException”?

1 分钟阅读
0

我试图使用 AWS Lambda 加密助手来解密 AWS Key Management Service(AWS KMS)的环境变量,但收到了错误“InvalidCipherTexception”。

简短描述

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 年前