IAM 역할의 iam:PutUserPolicy 권한 점검

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

설명

iam:PutUserPolicy를 가진 역할을 사용하면 IAM 사용자에게 인라인 정책을 추가하거나 기존 정책을 덮어써 권한을 확대할 수 있습니다. 이 작업은 대상 사용자의 권한을 바꾸며 호출 역할 자체의 권한을 직접 늘리지는 않습니다.

정책 수정 권한이 대상 사용자로 로그인할 수 있는 권한을 주지는 않습니다. 실제 영향은 사용자 사용 경로와 권한 경계, 조직 정책, 명시적 거부 등 다른 통제에 달려 있습니다.

잠재적 영향

  • 자동화 역할의 잘못된 변경이 사용자에게 불필요한 관리 권한을 줄 수 있습니다.
  • 사용자별 예외 정책이 늘면 권한 추적과 변경 검토가 어려워질 수 있습니다.

해결 방법

역할에 필요하지 않은 iam:PutUserPolicy를 제거하세요. 필요한 경우 전용 관리 역할과 승인 절차를 사용하고 Resource를 대상 사용자 ARN으로 제한하세요. 정책 내용과 변경 이력을 확인하며 정상 작업과 미승인 변경 차단을 시험하세요.

예시

같은 역할과 인라인 정책의 발췌입니다. 실제 구성에서는 생략된 신뢰 정책을 별도로 정의하세요.

변경 전

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

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

변경 후

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

이 허용문을 EC2 조회로 줄입니다. 다른 정책에 같은 사용자 정책 수정 권한이 남아 있지 않은지도 확인하세요.

참조