설명
glue:UpdateDevEndpoint는 개발 엔드포인트의 공개 키와 라이브러리 등을 변경할 수 있습니다. 사용자가 접속 가능한 엔드포인트를 제어하게 되면, 연결된 역할의 권한으로 작업을 실행할 수 있습니다.
잠재적 영향
- 권한 상승 가능: 엔드포인트 역할의 권한이 더 강하면 사용자의 접근 범위가 확대될 수 있습니다.
- 운영 환경 변조: 정상 개발 환경이 악성 코드의 실행 경로로 바뀔 수 있습니다.
해결 방법
불필요한 glue:UpdateDevEndpoint 권한을 제거하세요. 필요한 관리 권한은 승인된 개발 엔드포인트로 제한하고, 엔드포인트 역할에도 필요한 권한만 부여하세요. 변경 이력도 점검하세요.
예시
예시는 같은 사용자의 인라인 정책을 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 = [
"glue:UpdateDevEndpoint",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
변경 후
hcl
resource "aws_iam_user" "example" {
name = "cosmic"
}
resource "aws_iam_user_policy" "example" {
name = "inline_policy_run_instances"
user = aws_iam_user.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"ec2:Describe*",
]
Effect = "Allow"
Resource = "*"
},
]
})
}