Google Cloud에는 컴퓨팅 리소스와 Google Kubernetes Engine(GKE) 컨테이너 리소스를 보호하기 위한 제어 기능이 포함되어 있습니다. Google Cloud 아키텍처 프레임워크의 이 문서에서는 이를 사용하기 위한 주요 제어 기능과 권장사항을 설명합니다.
강화 및 선별된 VM 이미지를 사용합니다.
Google Cloud에는 VM 인스턴스를 강화하는 보안 VM이 포함되어 있습니다. 보안 VM은 부팅 주기가 진행되는 동안 악성 코드가 로드되지 않도록 설계되었습니다. 부팅 보안을 제공하고 무결성을 모니터링하고 Virtual Trusted Platform Module(vTPM)을 사용합니다. 민감한 워크로드에 보안 VM을 사용합니다.
보안 VM 외에도 Google Cloud 파트너 솔루션을 사용하여 VM을 추가로 보호할 수 있습니다. Google Cloud에서 제공하는 많은 파트너 솔루션은 이벤트 위협 감지 및 상태 모니터링을 제공하는 Security Command Center와 통합됩니다. 고급 위협 분석 또는 런타임 추가 보안을 위해 파트너를 이용할 수 있습니다.
민감한 정보 처리에 컨피덴셜 컴퓨팅 사용
기본적으로 Google Cloud는 네트워크 전체에서 저장 데이터와 전송 중인 데이터를 암호화하지만 메모리에서 사용되는 데이터는 암호화되지 않습니다. 조직에서 기밀 데이터를 처리하는 경우 애플리케이션 또는 시스템 메모리에 있는 데이터의 기밀성 및 무결성을 약화시키는 위협을 완화해야 합니다. 기밀 데이터에는 개인 식별 정보(PII), 금융 데이터, 건강 정보가 포함됩니다.
컨피덴셜 컴퓨팅은 보안 VM을 기반으로 합니다. 하드웨어 기반의 신뢰할 수 있는 실행 환경에서 계산을 수행하여 사용 중 데이터를 보호합니다. 이러한 유형의 안전하고 격리된 환경은 데이터가 사용되는 동안 애플리케이션과 데이터의 무단 액세스 또는 수정을 방지하는 데 도움이 됩니다. 또한 신뢰할 수 있는 실행 환경은 규제 대상인 민감한 정보를 관리하는 조직의 보안을 보장합니다.
Google Cloud에서는 컨피덴셜 VM 또는 Confidential GKE Node를 실행하여 컨피덴셜 컴퓨팅을 사용 설정할 수 있습니다. 컨피덴셜 워크로드를 처리하거나 처리하는 동안 노출해야 하는 기밀 데이터(예: 보안 비밀)가 있는 경우 컨피덴셜 컴퓨팅을 사용 설정합니다. 자세한 내용은 컨피덴셜 컴퓨팅 컨소시엄을 참조하세요.
VM 및 컨테이너 보호
OS 로그인을 사용하면 직원이 정보의 출처로 SSH 키를 활용하는 대신 Identity and Access Management(IAM) 권한을 사용하여 VM에 연결할 수 있습니다. 따라서 조직에서 SSH 키를 관리할 필요가 없습니다. OS 로그인은 관리자의 액세스 권한을 직원 수명 주기에 연결합니다. 즉, 직원이 다른 역할로 이동하거나 조직을 떠나면 해당 사용자의 액세스 권한이 취소됩니다. OS 로그인은 2단계 인증도 지원하므로 계정 탈취 공격에 대한 보안이 한층 강화됩니다.
GKE에서 App Engine은 Docker 컨테이너 내에서 애플리케이션 인스턴스를 실행합니다. 정의된 위험 프로필을 사용 설정하고 직원이 컨테이너를 변경하지 못하도록 하려면 컨테이너가 스테이트리스(Stateless)이자 변경 불가능이어야 합니다. 불변성의 원칙은 직원이 컨테이너를 수정하거나 대화식으로 액세스하지 않는다는 것을 의미합니다. 이미지를 변경해야 하는 경우 새 이미지를 빌드하고 다시 배포합니다. 특정 디버깅 시나리오에서만 기본 컨테이너에 대한 SSH 액세스를 사용 설정합니다.
필요한 경우가 아니면 외부 IP 주소 사용 중지
프로덕션 VM의 외부 IP 주소 할당을 사용 중지(동영상)하고 외부 부하 분산기의 사용을 방지하려면 조직 정책을 사용하면 됩니다. VM을 인터넷이나 온프레미스 데이터 센터에 연결해야 하는 경우 Cloud NAT 게이트웨이를 사용 설정하면 됩니다.
GKE에 비공개 클러스터를 배포할 수 있습니다. 비공개 클러스터의 노드에는 내부 IP 주소만 있습니다. 즉, 노드와 포드는 기본적으로 인터넷에서 격리되어 있습니다. 또한 네트워크 정책을 정의하여 클러스터에서 포드 간 통신을 관리할 수도 있습니다. 자세한 내용은 서비스 비공개 액세스 옵션을 참조하세요.
컴퓨팅 인스턴스 및 GKE 사용량 모니터링
Cloud 감사 로그는 Compute Engine 및 GKE에서 자동으로 사용 설정됩니다. 감사 로그를 사용하면 클러스터와 관련된 모든 활동을 자동으로 캡처하고 의심스러운 활동을 모니터링할 수 있습니다.
런타임 보안을 위해 GKE를 파트너 제품과 통합할 수 있습니다. 이러한 솔루션을 Security Command Center와 통합하여 애플리케이션 모니터링을 위한 단일 인터페이스를 제공할 수 있습니다.
이미지 및 클러스터를 최신 상태로 유지
Google Cloud는 정기적으로 패치되는 선별된 OS 이미지를 제공합니다. 커스텀 이미지를 가져와 Compute Engine에서 실행할 수 있지만 이 경우에는 직접 패치해야 합니다. Google Cloud는 보안 게시판에 설명된 대로 새로운 취약점을 완화하기 위해 OS 이미지를 정기적으로 업데이트하고, 기존 배포의 취약점을 해결하기 위한 조치를 제공합니다.
GKE를 사용하는 경우 Google에서 최신 패치로 클러스터 노드를 업데이트하도록 노드 자동 업그레이드를 사용 설정하는 것이 좋습니다. Google은 자동으로 업데이트되고 패치되는 GKE 제어 영역을 관리합니다. 또한 배포에 Google에서 선별한 컨테이너 최적화 이미지를 사용합니다. Google은 이러한 이미지를 정기적으로 패치하고 업데이트합니다.
이미지 및 클러스터에 대한 액세스 제어
인스턴스를 만들고 실행할 수 있는 사용자를 이해하는 것이 중요합니다. IAM을 사용하여 이 액세스를 제어할 수 있습니다. 필요한 액세스 워크로드 결정 방법에 대한 자세한 내용은 워크로드 아이덴티티 계획을 참조하세요.
또한 VPC 서비스 제어를 사용하여 프로젝트에서 커스텀 할당량을 정의하면 이미지를 실행할 수 있는 사용자를 제한할 수 있습니다. 자세한 내용은 네트워크 보호 섹션을 참조하세요.
클러스터에 인프라 보안을 제공하기 위해 GKE는 IAM을 역할 기반 액세스 제어(RBAC)와 함께 사용하여 클러스터 및 네임스페이스에 대한 액세스를 관리할 수 있습니다.
샌드박스에서 컨테이너 격리
GKE Sandbox를 사용하여 호스트 커널로부터 격리와 추가 보안 레이어가 필요한 멀티 테넌트 애플리케이션을 배포합니다. 예를 들어 알 수 없거나 신뢰할 수 없는 코드를 실행하는 경우 GKE Sandbox를 사용합니다. GKE Sandbox는 GKE에서 컨테이너화된 워크로드 간의 2차 방어 레이어를 제공하는 컨테이너 격리 솔루션입니다.
GKE Sandbox는 I/O 요구사항이 적지만 확장성은 우수한 애플리케이션용으로 빌드되었습니다. 컨테이너화된 워크로드의 경우 속도와 성능을 유지해야 하지만 신뢰할 수 없는 코드가 포함될 수도 있어 추가적인 보안이 필요합니다. 컨테이너 런타임 샌드박스인 gVisor는 애플리케이션과 호스트 커널 간의 추가 보안 격리를 제공합니다. gVisor는 추가 무결성 검사를 제공하고 서비스에 대한 액세스 범위를 제한합니다. 외부 위협으로부터 보호하기 위한 컨테이너 강화 서비스는 아닙니다. gVisor에 대한 자세한 내용은 gVisor: 실제 환경에서 GKE 및 서버리스 사용자 보호를 참조하세요.
다음 단계
다음 리소스를 통해 컴퓨팅 및 컨테이너 보안에 대해 자세히 알아보세요.
- 네트워크 보호(이 시리즈의 다음 문서)
- 컨테이너 보안이 중요한 이유(PDF)
- Google Cloud 출시 체크리스트
- 인스턴스 ID 확인
- 워크로드 아이덴티티
- 보안 VM
- 영구 디스크 스냅샷 권장사항
- 이미지 관리 권장사항