AWS Lambda에서 'KMSAccessDeniedException' 오류를 해결하려면 어떻게 해야 하나요?

4분 분량
0

AWS Lambda 함수가 'KMSAccessDeniedException' 오류를 반환합니다.

간략한 설명

오류 메시지에 따라 AWS Identity and Access Management(IAM) 자격 증명에 대한 AWS Key Management Service(AWS KMS) 권한을 업데이트합니다.

중요: AWS KMS 키와 IAM 역할이 서로 다른 AWS 계정에 속해 있는 경우 IAM 정책과 AWS KMS 키 정책을 모두 업데이트해야 합니다.

AWS KMS 키 및 정책 관리에 대한 자세한 내용은 AWS KMS 키를 참조하세요.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

'KMS 예외: UnrecognizedClientExceptionKMS 메시지' 오류 해결

다음 오류는 일반적으로 Lambda 함수의 실행 역할을 삭제한 후 이름은 동일하지만 보안 주체는 다르게 하여 다시 생성할 때 발생합니다.

Calling the invoke API action failed with this message: Lambda was unable to decrypt the environment variables because KMS access was denied. Please check the function's AWS KMS key settings. KMS Exception: UnrecognizedClientExceptionKMS Message: The security token included in the request is invalid.

오류를 해결하려면 다음을 수행하여 함수의 실행 역할에 대한 AWS KMS 권한 부여를 재설정해야 합니다.

참고: Lambda 함수를 생성하고 업데이트하는 IAM 사용자는 AWS KMS 키를 사용할 수 있는 권한이 있어야 합니다.

1.    다음 AWS CLI 명령을 실행하여 함수의 현재 실행 역할 및 AWS KMS 키의 Amazon 리소스 이름(ARN)을 가져옵니다.

참고: yourFunctionName을 함수 이름으로 바꿉니다.

$ aws lambda get-function-configuration --function-name yourFunctionName

2.    다음 중 하나를 수행하여 AWS KMS 권한 부여를 재설정합니다.

다음 update-function-configuration 명령을 실행하여 함수의 실행 역할을 다른 임시 값으로 업데이트합니다.

중요: temporaryValue를 임시 실행 역할 ARN으로 바꿉니다.

$ aws lambda update-function-configuration --function-name yourFunctionName --role temporaryValue

그리고 다음 명령을 실행하여 함수의 실행 역할을 원래 실행 역할로 다시 업데이트합니다.

중요: originalValue를 원래 실행 역할의 ARN으로 바꿉니다.

$ aws lambda update-function-configuration --function-name yourFunctionName --role originalValue

-또는-

다음 update-function-configuration 명령을 실행하여 함수의 AWS KMS 키를 다른 임시 값으로 업데이트합니다.

중요: temporaryValue를 임시 AWS KMS 키 ARN으로 바꿉니다. 기본 서비스 키를 사용하려면 kms-key-arn 파라미터를 **""**로 설정합니다.

$ aws lambda update-function-configuration --function-name yourFunctionName --kms-key-arn temporaryValue

그리고 다음 명령을 실행하여 함수의 AWS KMS 키를 원래 AWS KMS 키의 ARN으로 다시 업데이트합니다.

중요: originalValue를 원래 AWS KMS 키의 ARN으로 바꿉니다.

$ aws lambda update-function-configuration --function-name yourFunctionName --kms-key-arn originalValue

자세한 내용은 AWS KMS의 키 정책을 참조하세요.

“KMS 예외: AccessDeniedException KMS 메시지” 오류를 해결하려면

다음 오류는 kms:Decrypt API 작업을 수행하는 데 필요한 권한이 IAM 자격 증명에 없음을 나타냅니다.

Lambda was unable to decrypt your environment variables because the KMS access was denied. Please check your KMS permissions. KMS Exception: AccessDeniedException KMS Message: The ciphertext refers to a customer master key that does not exist, does not exist in this region, or you are not allowed to access.

이 오류를 해결하려면 IAM 사용자 또는 역할에 다음 정책 문을 추가합니다.

중요: **‘your-KMS-key-arn’**을 사용자의 AWS KMS 키 ARN으로 바꿉니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": "kms:Decrypt",
      "Resource": "your-KMS-key-arn"
    }
  ]
}

자세한 지침은 본인의 사용 사례에 따라 사용자에게 권한 추가(콘솔) 또는 역할 권한 정책 수정(콘솔)을 참조하세요.

'You are not authorized to perform' 오류 해결

다음 오류는 AWS KMS 키에 액세스하는 데 필요한 권한 중 하나가 IAM 자격 증명에 없음을 나타냅니다.

You are not authorized to perform: kms:Encrypt.
You are not authorized to perform: kms:CreateGrant.
User: user-arn is not authorized to perform: kms:ListAliases on resource: * with an explicit deny.

참고: 기본 키 정책을 사용하는 경우 IAM 자격 증명 또는 함수의 실행 역할에 AWS KMS 권한이 필요하지 않습니다.

이러한 유형의 오류를 해결하려면 IAM 사용자 또는 역할에 다음 AWS KMS API 작업을 수행하는 데 필요한 권한이 있는지 확인합니다.

자세한 지침은 본인의 사용 사례에 따라 사용자에게 권한 추가(콘솔) 또는 역할 권한 정책 수정(콘솔)을 참조하세요.

고객 관리형 AWS KMS 키에 액세스하는 데 필요한 권한을 부여하는 IAM 정책 문 예시

중요: 리소스 값은 **"*"**여야 합니다. kms:ListAliases 작업은 하위 수준 권한을 지원하지 않습니다. 또한 **‘your-kms-key-arn’**을 사용자 AWS KMS 키의 ARN으로 바꿔야 합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "statement1",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:CreateGrant"
      ],
      "Resource": "your-kms-key-arn"
    },
    {
      "Sid": "statement2",
      "Effect": "Allow",
      "Action": "kms:ListAliases",
      "Resource": "*"
    }
  ]
}

'Access to KMS is not allowed' 오류 해결

다음 오류는 IAM 엔터티에 AWS Secrets Manager 보안 암호를 가져올 권한이 없음을 나타냅니다.

Access to KMS is not allowed (Service: AWSSecretsManager; Status Code: 400; Error Code: AccessDeniedException; Request ID: 123a4bcd-56e7-89fg-hij0-1kl2m3456n78)

IAM 사용자 또는 역할에 다음 AWS KMS API 작업을 수행하는 데 필요한 권한이 있는지 확인합니다.

자세한 내용은 암호화된 AWS Secrets Manager 보안 암호에 액세스하는 문제를 해결하려면 어떻게 해야 하나요?를 참고하세요.


관련 정보

AWS Lambda에서 HTTP 502 및 HTTP 500 상태 코드(서버 측) 오류를 해결하려면 어떻게 해야 하나요?

Lambda 함수 실패 문제를 해결하려면 어떻게 해야 하나요?

AWS 공식
AWS 공식업데이트됨 일 년 전