IAM 사용자의 활성 접근 키 점검

IAM 접근 키의 실제 소유자와 사용 필요성을 확인하고 불필요한 장기 자격 증명을 제거하세요.

설명

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이며, 이 예제는 기존 키를 비활성화하거나 삭제하지 않습니다. 필요한 권한, 비밀 키 전달과 기존 키 정리는 별도로 구성하세요.

참조