lambda:UpdateFunctionCode 권한이 과도한 IAM 사용자

Lambda 코드 변경 권한을 승인된 함수와 배포 주체로 제한하세요.

설명

lambda:UpdateFunctionCode 권한으로 기존 Lambda 함수 코드를 바꿀 수 있습니다. 변경한 코드가 실행되면 함수의 실행 역할 권한을 사용하므로, 고권한 역할이 연결된 함수는 사용자에게 의도한 범위보다 넓은 접근 경로가 될 수 있습니다.

잠재적 영향

  • 실행 경로 변조: 정상 함수에 악성 코드를 넣어 업무 동작을 바꿀 수 있습니다.
  • 데이터 노출: 실행 역할에 허용된 비밀정보나 데이터 접근이 악용될 수 있습니다.

해결 방법

불필요한 lambda:UpdateFunctionCode 권한을 제거하세요. 필요한 변경은 승인된 함수와 배포 절차로 제한하고, 실행 역할의 권한을 최소화하며 코드 변경 이력을 검토하세요.

예시

변경 후 인라인 정책은 같은 사용자의 EC2 조회만 허용합니다. 다른 연결 정책도 점검하세요. 코드 변경 권한을 제거해도 이미 배포된 코드가 원래대로 복구되지는 않습니다.

변경 전

hcl
resource "aws_iam_user" "example" {
  name = "cosmic"
}

resource "aws_iam_user_policy" "example" {
  name = "test_inline_policy"
  user = aws_iam_user.example.name

  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = [
          "lambda:UpdateFunctionCode",
        ]
        Effect   = "Allow"
        Resource = "*"
      },
    ]
  })
}

변경 후

hcl
resource "aws_iam_user" "example" {
  name = "cosmic"
}

resource "aws_iam_user_policy" "example" {
  name = "inline_policy_read_only"
  user = aws_iam_user.example.name

  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = [
          "ec2:Describe*",
        ]
        Effect   = "Allow"
        Resource = "*"
      },
    ]
  })
}

참조