AWS KMS 복호화 오류 "InvalidCiphertextException"을 해결하려면 어떻게 해야 하나요?

최종 업데이트 날짜: 2021년 2월 15일

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 콘솔을 열고 [함수(Functions)]를 선택합니다.
  2. [함수 이름(Function name)]에서 Lambda 함수를 선택합니다.
  3. [환경 변수(Environment variable)]에서 [편집(Edit)]을 선택한 다음 [환경 변수 추가(Add environment variable)]를 선택합니다.
  4. [키(Key)] 및 [값(Value)]을 입력한 다음 [암호화 구성(Encryption configuration)]을 확장합니다.
  5. [전송 중 암호화에 도우미 사용(Enable helpers for encryption in transit)]을 선택한 다음 [암호화(Encrypt)]를 선택합니다.
  6. [보안 코드 조각 복호화(Decrypt secret snippet)]를 확장하고 다음과 유사한 스니펫을 복사하여 붙여넣습니다.
DECRYPTED = boto3.client('kms').decrypt(
    CiphertextBlob=b64decode(ENCRYPTED),
    EncryptionContext={'LambdaFunctionName': os.environ['AWS_LAMBDA_FUNCTION_NAME']}
)['Plaintext'].decode('utf-8')

이 코드 조각을 사용하여 암호화 도우미로 암호화된 새로운 환경 변수를 복호화합니다.

새 환경 변수와 함께 작동하도록 이전 환경 변수를 다시 암호화해야 합니다.

자세한 내용은 AWS Lambda 환경 변수 사용을 참조하세요.