과도한 권한을 허용하는 AWS IAM 정책

필요한 작업과 대상 리소스만 허용하도록 IAM 권한을 좁히세요.

설명

IAM 허용 정책에서 모든 작업과 모든 리소스를 함께 허용하면 필요한 범위를 넘어 광범위한 권한을 부여할 수 있습니다. 자격 증명 유출이나 운영 실수의 피해를 줄이려면 실제 업무에 필요한 작업과 리소스부터 제한해야 합니다.

실제 요청에는 명시적 거부, 권한 경계와 조직 정책 등도 적용됩니다. 일부 작업은 리소스별 제한을 지원하지 않으므로, 이런 작업은 필요한 액션과 적용 가능한 조건을 제한하세요.

잠재적 영향

  • 유출된 자격 증명으로 불필요한 데이터 조회·수정이나 리소스 삭제가 가능해질 수 있습니다.
  • 과도한 관리 권한은 보안 설정 변경이나 추가 권한 부여로 피해를 확대할 수 있습니다.

해결 방법

  • 전체 허용을 실제 필요한 작업 목록으로 바꾸고 지원되는 리소스 ARN으로 제한하세요.
  • 용도별로 권한을 나누고 호출 기록과 업무 요구를 기준으로 불필요한 허용을 제거하세요.
  • 변경 후 필요한 작업은 성공하고 허용하지 않은 작업은 거부되는지 확인하세요.

예시

같은 사용자 정책의 범위를 줄이는 발췌입니다. 참조한 IAM 사용자와 S3 버킷은 별도로 정의하세요. 실제 업무가 객체 읽기 이외의 작업을 요구하면 해당 권한을 별도로 검토하세요.

변경 전

hcl
resource "aws_iam_user_policy" "full_access_policy" {
  name = "excess_policy"
  user = aws_iam_user.user.name

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

모든 작업과 리소스에 대한 Allow를 부여합니다. 다른 통제로 제한되더라도 불필요하게 넓은 허용은 제거해야 합니다.

변경 후

hcl
resource "aws_iam_user_policy" "full_access_policy" {
  name = "excess_policy"
  user = aws_iam_user.user.name

  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "${aws_s3_bucket.app_data.arn}/*"
    }
  ]
}
EOF
}

같은 정책을 지정한 버킷의 객체 읽기로 제한합니다. 버킷 목록 조회나 쓰기 권한은 이 문구가 부여하지 않습니다.

참조