IAM 정책의 과도한 관리 권한 점검

업무에 필요한 작업과 리소스로 IAM 권한을 제한하세요.

설명

전체 리소스에 Action: *를 허용하는 IAM 정책은 서비스 전반에 매우 넓은 권한을 부여할 수 있습니다. iam:*는 IAM 관리 작업의 전체 범위이며, 이를 악용하면 다른 권한을 확대할 수 있지만 그 자체가 모든 AWS 서비스 작업은 아닙니다.

실제 권한에는 명시적 거부, 권한 경계와 조직 정책 등의 제한도 적용됩니다.

잠재적 영향

  • 과도한 권한의 오용은 리소스 변경·삭제와 정보 유출로 이어질 수 있습니다.
  • IAM 관리 권한이 악용되면 허용 주체나 정책을 변경해 사고 범위가 커질 수 있습니다.

해결 방법

  • 전체 작업 허용을 실제 업무에 필요한 작업으로 줄이세요.
  • 리소스 수준 제한을 지원하는 작업은 필요한 ARN으로 좁히고, Resource: *가 필요한 작업은 별도 문장으로 분리하세요.
  • 관리자 권한은 승인된 별도 역할로 관리하고 변경 후 정상 작업과 미승인 작업의 거부를 확인하세요.

예시

같은 역할의 인라인 정책에서 로그 스트림 쓰기 권한으로 좁히는 발췌입니다. 역할과 로그 그룹은 별도로 준비하고 ARN의 리전·계정·그룹 이름을 실제 값으로 바꾸세요. 전체 API Gateway 로깅 구성은 별도로 확인해야 합니다.

변경 전

hcl
resource "aws_iam_role_policy" "example" {
  name = "apigateway-cloudwatch-logging"
  role = aws_iam_role.apigateway_cloudwatch_logging.id

  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["*"],
      "Resource": "*"
    }
  ]
}
EOF
}

전체 작업과 리소스에 광범위한 허용을 추가합니다. 다른 통제가 적용되더라도 업무에 필요하지 않은 권한은 줄여야 합니다.

변경 후

hcl
resource "aws_iam_role_policy" "example" {
  name = "apigateway-cloudwatch-logging"
  role = aws_iam_role.apigateway_cloudwatch_logging.id

  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["logs:CreateLogStream", "logs:PutLogEvents"],
      "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:/aws/apigateway/example:log-stream:*"
    }
  ]
}
EOF
}

지정 로그 그룹의 스트림 생성·이벤트 기록만 허용합니다. 필요한 다른 로그 조회·설정 권한은 별도로 검토하세요.

참조