AWS Lambda에서 'KMSAccessDeniedException' 오류를 해결하려면 어떻게 해야 하나요?
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 상태 코드(서버 측) 오류를 해결하려면 어떻게 해야 하나요?
관련 콘텐츠
- 질문됨 7달 전lg...
- 질문됨 5달 전lg...
- 질문됨 6달 전lg...
- 수락된 답변질문됨 10달 전lg...
- AWS 공식업데이트됨 일 년 전
- AWS 공식업데이트됨 일 년 전