설명
aws_lambda_permission의 action이 목적과 다르면 필요한 호출이 실패하거나 불필요한 권한을 부여할 수 있습니다. 함수 호출에는 lambda:InvokeFunction이 필요하지만, Lambda 리소스 정책에는 lambda:GetFunction 같은 다른 지원 작업도 허용할 수 있습니다.
잠재적 영향
- 이벤트 소스가 함수를 호출하지 못해 처리가 지연되거나 실패할 수 있습니다.
- 필요하지 않은 작업 권한이 추가되면 정책 관리와 접근 통제가 복잡해집니다.
해결 방법
함수 호출을 허용하려는 경우 action을 lambda:InvokeFunction으로 설정하세요. 다른 작업은 실제 필요성과 지원 여부를 확인하고, principal과 source_arn도 필요한 범위로 제한하세요. 배포 후 의도한 연동을 시험하세요.
예시
CloudWatch Logs가 함수를 호출하도록 권한을 부여하는 발췌입니다. 참조하는 함수와 로그 그룹은 별도로 구성하세요.
변경 전
hcl
resource "aws_lambda_permission" "example" {
action = "lambda:DeleteFunction"
function_name = aws_lambda_function.logging.function_name
principal = "logs.eu-west-1.amazonaws.com"
source_arn = "${aws_cloudwatch_log_group.default.arn}:*"
}
변경 후
hcl
resource "aws_lambda_permission" "example" {
action = "lambda:InvokeFunction"
function_name = aws_lambda_function.logging.function_name
principal = "logs.eu-west-1.amazonaws.com"
source_arn = "${aws_cloudwatch_log_group.default.arn}:*"
}
lambda:DeleteFunction은 이 로그 전달 목적에 맞는 호출 권한이 아닙니다. 변경 후에는 같은 주체와 로그 그룹에 함수 호출 작업을 허용합니다.