프로젝트 공통 SSH 키 허용

메타데이터 기반 SSH를 사용하는 VM은 프로젝트 공통 키의 필요성을 확인하고 필요한 인스턴스 접근만 허용하세요.

설명

메타데이터 기반 SSH를 사용하는 VM에서 프로젝트 공통 키를 허용하면 개별 VM에 키를 등록하지 않은 사용자도 해당 프로젝트 키로 로그인할 수 있습니다. 모든 VM에 접근할 필요가 없는 사용자에게 권한이 넓게 적용되지 않도록 해야 합니다. OS Login이 활성화된 VM은 프로젝트와 인스턴스 메타데이터의 SSH 키를 로그인에 사용하지 않으므로 인증 방식을 먼저 확인하세요.

잠재적 영향

  • 프로젝트 공통 키가 유출되거나 불필요하게 남으면 해당 키를 허용하는 여러 VM에 접근할 수 있습니다.
  • VM별 업무와 사용자 역할을 구분하지 않은 키 공유는 침해 범위를 넓히고 권한 회수를 어렵게 할 수 있습니다.

해결 방법

  1. 메타데이터 기반 SSH가 필요한 VM에는 block-project-ssh-keys를 문자열 TRUE로 설정하고 필요한 인스턴스별 키만 관리하세요. 지원되는 환경에서는 OS Login과 최소 권한 IAM도 검토하세요.
  2. 프로젝트 공통 키를 차단하기 전에 운영자와 자동화가 사용할 대체 인증 경로를 준비하고 실제 접속을 시험하세요. 인스턴스별 키와 다른 로그인 경로는 별도로 점검해야 합니다.
  3. google.cloud 1.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에는 별도의 메타데이터 변경 작업이 필요합니다.

참조