설명
glue:UpdateDevEndpoint는 Glue 개발 엔드포인트의 공개 키나 라이브러리를 변경할 수 있습니다. 이 권한을 가진 역할을 사용하는 주체가 접근 가능한 엔드포인트를 제어하면, 연결된 역할의 권한으로 작업을 수행할 수 있습니다.
개발 엔드포인트 역할에 높은 권한이 있으면 간접적인 권한 상승 경로가 될 수 있습니다. 실제 허용 범위는 정책의 리소스, 조건과 다른 권한 제한에 따라 달라집니다.
잠재적 영향
- 권한 상승 가능: 개발 엔드포인트를 제어해 더 높은 권한으로 작업할 수 있습니다.
- 데이터 노출 가능: 연결된 역할에 허용된 저장소나 내부 데이터에 접근할 수 있습니다.
- 운영 환경 변조: 정상 개발 환경이 의도하지 않은 코드를 실행하도록 바뀔 수 있습니다.
해결 방법
- 개발 엔드포인트를 관리하지 않는 역할에서
glue:UpdateDevEndpoint권한을 제거하세요. - 필요한 관리 권한은 전용 역할과 승인된 엔드포인트로 제한하고, 엔드포인트 역할에도 최소 권한을 적용하세요.
- 개발 엔드포인트 변경 이력을 CloudTrail과 승인 절차로 관리하세요.
예시
역할의 권한 정책을 비교하는 발췌이며, 역할 사용자를 정하는 신뢰 정책은 별도로 구성해야 합니다.
변경 전
hcl
resource "aws_iam_role" "example" {
name = "cosmic"
}
resource "aws_iam_role_policy" "example" {
name = "test_inline_policy"
role = aws_iam_role.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"glue:UpdateDevEndpoint",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
변경 후
hcl
resource "aws_iam_role" "example" {
name = "cosmic"
}
resource "aws_iam_role_policy" "example" {
name = "inline_policy_run_instances"
role = aws_iam_role.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"ec2:Describe*",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
변경 후에는 같은 역할의 이 정책에서 엔드포인트 변경 권한을 제거하고 EC2 조회 권한만 남깁니다. 실제 업무에 필요한 권한을 선택하고 다른 연결 정책도 확인하세요.