설명
aws_iam_access_key는 IAM 사용자의 접근 키를 관리합니다. user = "root"는 이름이 root인 IAM 사용자를 가리키며, AWS 계정 루트 사용자의 키를 의미하지 않습니다. 이름만으로 계정 전체 권한이나 키 유출을 판단할 수 없습니다.
활성 접근 키는 대응하는 비밀 접근 키와 함께 AWS 요청을 인증하는 장기 자격 증명입니다. 실제 권한과 사용처를 확인하고, 자동화에는 가능한 한 IAM 역할의 임시 자격 증명을 사용하세요.
잠재적 영향
- 유효한 키 쌍이 유출되면 해당 IAM 사용자의 권한이 다른 환경에서 악용될 수 있습니다.
- 사용하지 않는 활성 키가 남으면 불필요한 인증 수단이 계속 유지됩니다.
- 소유자와 사용처를 모르는 키는 폐기 시 서비스 중단을 일으킬 수 있습니다.
해결 방법
- IAM 사용자의 키 상태, 마지막 사용과 권한을 확인하고 필요한 작업을 역할 기반 접근으로 전환하세요.
- 대체 접근이 정상 동작하는지 확인한 뒤 불필요한 키를 비활성화·삭제하세요. 유지해야 하는 키는 최소 권한으로 제한하고 비밀 값과 Terraform 상태를 보호하세요.
- 실제 AWS 계정 루트 사용자의 접근 키는 별도로 확인해 제거하고, 루트 사용자에는 MFA를 적용하세요.
예시
IAM 접근 키의 소유자를 비교하는 부분 예제입니다. pgp_key에는 실제 수신자의 유효한 공개 키를 지정해야 합니다.
변경 전
hcl
resource "aws_iam_access_key" "root_access_key" {
user = "root"
pgp_key = "keybase:some_person_that_exists"
status = "Active"
}
이 코드는 기존 IAM 사용자 root의 활성 키를 생성합니다. AWS 계정 루트 사용자의 키를 생성하는 코드가 아닙니다.
변경 후
hcl
resource "aws_iam_user" "automation_user" {
name = "loadbalancer"
path = "/system/"
}
resource "aws_iam_access_key" "automation_access_key" {
user = aws_iam_user.automation_user.name
pgp_key = "keybase:some_person_that_exists"
}
자동화용 IAM 사용자와 새 키를 생성합니다. status를 생략하면 기본값은 Active이며, 이 예제는 기존 키를 비활성화하거나 삭제하지 않습니다. 필요한 권한, 비밀 키 전달과 기존 키 정리는 별도로 구성하세요.