설명
메타데이터 기반 SSH를 사용하는 VM에서 프로젝트 공통 키를 허용하면 개별 VM에 키를 등록하지 않은 사용자도 해당 프로젝트 키로 로그인할 수 있습니다. 모든 VM에 접근할 필요가 없는 사용자에게 권한이 넓게 적용되지 않도록 해야 합니다. OS Login이 활성화된 VM은 프로젝트와 인스턴스 메타데이터의 SSH 키를 로그인에 사용하지 않으므로 인증 방식을 먼저 확인하세요.
잠재적 영향
- 프로젝트 공통 키가 유출되거나 불필요하게 남으면 해당 키를 허용하는 여러 VM에 접근할 수 있습니다.
- VM별 업무와 사용자 역할을 구분하지 않은 키 공유는 침해 범위를 넓히고 권한 회수를 어렵게 할 수 있습니다.
해결 방법
- 메타데이터 기반 SSH가 필요한 VM에는
block-project-ssh-keys를 문자열TRUE로 설정하고 필요한 인스턴스별 키만 관리하세요. 지원되는 환경에서는 OS Login과 최소 권한 IAM도 검토하세요. - 프로젝트 공통 키를 차단하기 전에 운영자와 자동화가 사용할 대체 인증 경로를 준비하고 실제 접속을 시험하세요. 인스턴스별 키와 다른 로그인 경로는 별도로 점검해야 합니다.
google.cloud1.14.0의gcp_compute_instance는 기존 VM의 메타데이터를 갱신하지 않습니다. 기존 VM은 지원되는 Console, gcloud 또는 API로 메타데이터를 변경하고 결과를 확인하세요.
예시
새 VM의 메타데이터 설정만 발췌했습니다. 이름, 프로젝트, 머신·디스크와 인증 등의 나머지 입력은 생략했습니다.
변경 전
yaml
- name: ssh_keys_unblocked
google.cloud.gcp_compute_instance:
metadata:
block-project-ssh-keys: "FALSE"
zone: us-central1-a
auth_kind: serviceaccount
- name: no_metadata
google.cloud.gcp_compute_instance:
zone: us-central1-a
auth_kind: serviceaccount
프로젝트 공통 키를 명시적으로 허용하거나 차단 설정을 지정하지 않은 구성입니다. 실제 접근은 OS Login 사용 여부, 키와 네트워크 설정에 따라 달라집니다.
변경 후
yaml
- name: ssh_keys_blocked
google.cloud.gcp_compute_instance:
metadata:
block-project-ssh-keys: "TRUE"
zone: us-central1-a
auth_kind: serviceaccount
메타데이터 기반 SSH에서 이 VM이 프로젝트 공통 키를 사용하지 않도록 설정합니다. 프로젝트의 키 자체를 삭제하거나 인스턴스별 키까지 차단하는 것은 아닙니다. 기존 VM에는 별도의 메타데이터 변경 작업이 필요합니다.