설명
서비스 계정에 roles/editor, roles/owner 또는 업무에 필요하지 않은 관리자 권한을 부여하면 자동화 오류나 계정 침해의 영향이 커집니다. 애플리케이션, 배치 작업과 CI/CD에는 실제로 필요한 권한만 부여해야 합니다.
쓰기 권한이나 관리자 역할이 필요한 작업도 있으므로 역할 이름만으로 불필요하다고 단정하지 말고 포함된 권한과 적용 범위를 확인하세요.
잠재적 영향
- 서비스 계정 침해 시 대량 리소스 변경이나 데이터 접근으로 이어질 수 있습니다.
- 자동화 작업 오류가 필요 이상의 권한으로 실행돼 피해가 커질 수 있습니다.
해결 방법
- 업무에 필요한 권한과 리소스를 확인하고 광범위한 owner·editor 대신 적절한 사전 정의 또는 커스텀 역할을 사용하세요.
- 역할 바인딩과 서비스 계정을 사용할 수 있는 주체를 정기적으로 검토하고, 권한 변경 후 필요한 작업은 성공하며 불필요한 작업은 거부되는지 확인하세요.
예시
실제 서비스 계정 이메일을 var.service_account_email로 제공하세요. google_iam_policy는 정책 문서를 생성할 뿐 권한을 적용하지 않으며 대상 리소스에 별도 적용해야 합니다. 변경 후 역할은 객체 읽기만 필요한 작업의 예입니다.
변경 전
hcl
data "google_iam_policy" "policy" {
binding {
role = "roles/editor"
members = [
"serviceAccount:${var.service_account_email}",
]
}
}
변경 후
hcl
data "google_iam_policy" "policy" {
binding {
role = "roles/storage.objectViewer"
members = [
"serviceAccount:${var.service_account_email}",
]
}
}
설명:
- 변경 전: 광범위한 Editor 역할의 정책 문서를 만듭니다. 실제 적용 범위와 작업 필요성을 확인하세요.
- 변경 후: Storage Object Viewer 역할로 바꿉니다. 필요한 버킷 범위에 적용하고 다른 권한 부여도 함께 검토해야 합니다.