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

사용자의 역할 정책 연결 권한을 승인된 대상과 정책으로 제한하세요.

설명

IAM 사용자가 iam:AttachRolePolicy로 역할에 강한 관리형 정책을 연결하면 해당 역할의 권한이 확대될 수 있습니다. 사용자가 그 역할을 맡거나 그 역할로 실행되는 워크로드를 제어할 수 있을 때 확대된 권한을 이용할 수 있습니다.

정책 연결만으로 사용자 자신의 권한이나 역할의 신뢰가 바뀌지는 않습니다. 권한 경계, 조직 정책과 명시적 거부도 실제 접근을 제한할 수 있습니다.

잠재적 영향

  • 역할을 사용하는 애플리케이션에 불필요한 리소스 접근 권한이 추가될 수 있습니다.
  • 승인 없는 정책 변경이 서비스의 실행 권한과 운영 통제를 바꿀 수 있습니다.

해결 방법

불필요한 iam:AttachRolePolicy를 제거하고 필요한 관리 작업은 승인된 역할로 분리하세요. Resource를 대상 역할 ARN으로 제한하고 iam:PolicyARN 조건으로 연결할 정책을 지정하세요. 역할 사용 경로와 다른 권한을 검토하며 정상 작업과 미승인 연결 거부를 시험하세요.

예시

같은 사용자와 인라인 정책을 변경합니다. 이 비교에는 별도의 관리형 정책 연결 리소스가 필요하지 않습니다.

변경 전

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:AttachRolePolicy",
        ]
        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 조회만 남깁니다. 다른 정책의 역할 관리 권한과 조회 범위도 업무에 맞게 제한하세요.

참조