설명
사람이 사용하는 자격 증명만으로 중요한 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 권한까지 자동으로 보호하지는 않습니다.