IAM 사용자의 iam:PutRolePolicy 권한 점검

사용자가 변경할 수 있는 역할 인라인 정책을 필요한 대상으로 제한하세요.

설명

IAM 사용자가 iam:PutRolePolicy로 역할 인라인 정책을 추가하거나 덮어쓰면 그 역할을 사용하는 서비스와 세션의 권한이 확대될 수 있습니다. 사용자가 해당 역할을 맡거나 워크로드를 제어할 수 있는 경우 확대된 권한을 악용할 수 있습니다.

정책 편집 권한은 역할의 신뢰 정책을 변경하거나 역할 사용을 허용하는 권한과 다릅니다. 권한 경계, 조직 정책과 명시적 거부도 실제 작업을 제한할 수 있습니다.

잠재적 영향

  • 애플리케이션 실행 역할이 필요 이상의 리소스에 접근할 수 있습니다.
  • 하나의 역할 변경이 여러 서비스 인스턴스의 권한에 영향을 줄 수 있습니다.

해결 방법

일반 사용자에 불필요한 iam:PutRolePolicy를 제거하세요. 필요한 수정은 승인된 배포·관리 역할로 수행하고 Resource를 대상 역할 ARN으로 제한하세요. 정책 내용과 역할 사용 경로를 검토하며 정상 작업과 미승인 변경 차단을 확인하세요.

예시

같은 사용자와 인라인 정책의 비교입니다. 별도의 관리형 정책 연결 리소스를 추가할 필요는 없습니다.

변경 전

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 = [
          "iam:PutRolePolicy",
        ]
        Effect   = "Allow"
        Resource = "*"
      },
    ]
  })
}

사용자가 전체 역할의 인라인 정책을 추가하거나 갱신할 수 있습니다.

변경 후

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 = [
          "ec2:Describe*",
        ]
        Effect   = "Allow"
        Resource = "*"
      },
    ]
  })
}

이 허용문에는 EC2 조회만 남습니다. 다른 정책의 수정 권한과 불필요한 조회 권한도 함께 검토하세요.

참조