IAM 사용자 접근의 MFA 요구 조건 점검

사람의 중요 AWS 작업에 MFA가 실제로 요구되는지 확인하세요.

설명

사람이 사용하는 자격 증명만으로 중요한 AWS 작업을 허용하면 비밀번호나 키 유출 시 피해가 커질 수 있습니다. 필요한 로그인과 API 접근에 MFA를 적용하되 실제 인증 방식과 유효한 정책 전체를 확인해야 합니다.

MFA 기기 등록만으로 모든 API 호출에 MFA가 강제되지는 않습니다. 장기 액세스 키에는 aws:MultiFactorAuthPresent가 없으므로 지원되는 MFA 임시 자격 증명 절차가 필요합니다. 연동 로그인은 외부 IdP의 MFA 정책도 확인하세요.

잠재적 영향

  • 유출된 자격 증명으로 데이터 접근이나 중요 리소스 변경이 허용될 수 있습니다.
  • MFA 조건을 잘못 구성하면 키가 없는 요청을 허용하거나 필요한 자동화를 중단시킬 수 있습니다.

해결 방법

  • 사람의 중요한 작업에 MFA를 요구하고 MFA 유무에 따른 허용·거부를 시험하세요. 자동화는 최소 권한의 워크로드 역할로 분리하세요.
  • Allow에서 BoolIfExists와 true를 사용하면 키가 없는 요청도 허용됩니다. MFA를 필수로 요구하는 조건과 다른 정책의 허용을 함께 검토하세요.

예시

기존 사용자와 var.target_role_arn에 지정할 실제 역할을 준비하세요. 예제는 역할 전환 허용의 일부이며 대상 신뢰 정책과 다른 권한은 별도입니다.

변경 전

hcl
resource "aws_iam_user_policy" "example" {
  name = "terraform-user"
  user = aws_iam_user.example.name

  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Resource": "${var.target_role_arn}",
      "Action": "sts:AssumeRole"
    }
  ]
}
EOF
}

변경 후

hcl
resource "aws_iam_user_policy" "example" {
  name = "terraform-user"
  user = aws_iam_user.example.name

  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Resource": "${var.target_role_arn}",
      "Action": "sts:AssumeRole",
      "Condition": {
        "Bool": {
          "aws:MultiFactorAuthPresent": "true"
        }
      }
    }
  ]
}
EOF
}

설명:

  • 변경 전: 이 문은 MFA 없이 역할 전환을 허용할 수 있습니다.
  • 변경 후: 이 허용 문은 MFA 값이 true일 때만 적용됩니다. 계정 전체의 로그인과 다른 API 권한까지 자동으로 보호하지는 않습니다.

참조