我试图使用 AWS Lambda 加密助手来解密 AWS Key Management Service(AWS KMS)的环境变量,但收到了错误“InvalidCipherTexception”。
简短描述
AWS KMS API 操作错误 InvalidCiphertextException 表示解密请求失败,因为 Lambda 更新了加密环境变量的方式。Lambda 将函数名称作为对 AWS KMS 进行加密调用的加密上下文进行传递。对于在此更改之前创建的解密函数,必须更新用于解密的代码,并将 Lambda 函数名称作为加密上下文传递。
解决方法
要通过针对具有加密上下文的特定 SDK 对 AWS KMS 进行解密调用来获取代码,请完成以下步骤:
- 打开 Lambda 控制台,然后选择函数。
- 在函数名称中,选择 Lambda 函数,然后选择配置选项卡。
- 对于环境变量,选择编辑,然后选择添加环境变量。
- 输入密钥和值,然后展开加密配置。
- 选择在传输中启用加密辅助标记,然后选择加密。
- 展开解密密钥代码段,然后输入与以下内容类似的代码片段:
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 时,我该如何验证是否使用了经过身份验证的加密及关联数据加密?