설명
iam:CreateLoginProfile은 아직 로그인 프로필이 없는 IAM 사용자에게 콘솔 비밀번호를 설정할 수 있습니다. 역할 사용자가 고권한 사용자를 대상으로 이 작업을 할 수 있으면 새로운 콘솔 접근 경로를 만들 수 있습니다.
실제 로그인에는 MFA 등 다른 로그인 통제가 계속 적용됩니다. 프로필 생성 자체가 대상 사용자의 권한을 늘리지는 않지만, 그 권한을 사용할 새로운 경로가 생깁니다.
잠재적 영향
- 계정 접근 경로 생성: 기존에 콘솔 비밀번호가 없던 사용자에게 브라우저 접근 경로를 만들 수 있습니다.
- 권한 상승 가능: 다른 로그인 통제가 허용하면 고권한 사용자로 콘솔에 접근할 수 있습니다.
- 탐지 지연: 승인되지 않은 프로필 생성을 정상적인 관리 작업과 구분하기 어려울 수 있습니다.
해결 방법
- 로그인 프로필 관리가 필요 없는 역할에서
iam:CreateLoginProfile을 제거하세요. - 필요한 권한은 전용 관리자 역할과 승인된 대상 사용자로 제한하세요.
- 프로필 생성 이벤트를 점검하고 대상 사용자의 MFA 등 로그인 통제를 유지하세요.
예시
권한 정책의 발췌이며 역할 신뢰 정책은 별도로 필요합니다.
변경 전
hcl
resource "aws_iam_role" "example" {
name = "cosmic"
}
resource "aws_iam_role_policy" "example" {
name = "test_inline_policy"
role = aws_iam_role.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"iam:CreateLoginProfile",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
변경 후
hcl
resource "aws_iam_role" "example" {
name = "cosmic"
}
resource "aws_iam_role_policy" "example" {
name = "inline_policy_run_instances"
role = aws_iam_role.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"ec2:Describe*",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
변경 후에는 같은 역할의 이 정책에서 로그인 프로필 생성 권한을 제거하고 EC2 조회 권한만 남깁니다. 기존 로그인 프로필이나 다른 연결 정책을 제거하는 변경은 아닙니다.