컨테이너 보안

GCP, GKE 또는 Anthos에서 컨테이너 환경을 안전하게 보호합니다.

개요

컨테이너화 덕분에 개발팀은 더욱 신속하게 움직이고 효율적으로 소프트웨어를 배포하며 전례 없는 수준의 확장성을 확보할 수 있게 되었습니다. 기업에서 생성되는 컨테이너식 워크로드가 늘면서 빌드 및 배포 주기의 각 단계에 대한 보안 요소 통합 작업이 반드시 필요해졌습니다. GCP에서 구동되는 컨테이너 환경(Google Kubernetes Engine 또는 Anthos)을 안전하게 보호하는 방법을 3가지 주요 영역으로 나누어 살펴봅니다.

인프라 보안

인프라 보안은 컨테이너 관리 플랫폼에서 적절한 보안 기능을 제공한다는 의미입니다. Kubernetes에는 사용자 ID, 보안 비밀, 네트워크를 보호하는 보안 기능이 포함되어 있으며 Google Kubernetes Engine은 Cloud IAM, Cloud Audit Logging, Virtual Private Cloud와 같은 기본 GCP 기능과, 애플리케이션 레이어 보안 비밀 암호화워크로드 아이덴티티 같은 GKE 관련 기능을 사용하여 Google 최고의 보안 성능을 워크로드에 적용합니다.

소프트웨어 공급망

소프트웨어 공급망의 보안을 강화하면 컨테이너 이미지를 안전하게 배포할 수 있게 됩니다. 이로써 컨테이너 이미지의 취약점이 사라지고 빌드하는 이미지가 배포 전에 수정되는 것을 방지할 수 있습니다.

런타임 보안

런타임 보안이 보장되면 프로덕션 단계에서 악의적으로 작동하는 컨테이너를 파악하여 워크로드를 보호하기 위한 조치를 취할 수 있습니다.

컨테이너를 실행하면 근본적으로 다른 보안 모델을 도입하는 것이 가능합니다.

보다 단순한 패치 관리 및 불변성

보다 단순한 패치 관리 및 불변성

컨테이너는 불변성을 가지므로 변경하려면 새 이미지를 배포해야 합니다. 이미지를 정기적으로 다시 빌드하는 방식으로 패치 관리를 간소화하면 차후 컨테이너 배포 시 패치를 선택할 수 있습니다. 정기적인 이미지 보안 검토를 통해 환경의 전반적인 상태를 파악하세요.

좁아진 공격 면적

좁아진 공격 면적

컨테이너는 더 많은 부분이 애플리케이션에 직접 패키징되어 있으므로 VM에 비해 훨씬 규모가 작은 호스트 OS에서 실행되는 것이 일반적입니다. 최소한의 호스트 OS 덕분에 워크로드의 공격 가능 면적이 더 좁습니다.

리소스 및 워크로드 격리

리소스 및 워크로드 격리

컨테이너는 cgroup 및 네임스페이스를 사용하여 스토리지 볼륨과 같은 리소스를 특정 프로세스로 간편하게 격리할 수 있는 방법을 제공합니다. GKE Sandbox와 같은 기술을 통해 워크로드를 다른 애플리케이션과 별도로 VM 하위 샌드박스에 논리적으로 격리할 수 있습니다.

인프라 보안

컨테이너 인프라 보안을 위해서는 개발자가 컨테이너 방식의 서비스를 안전하게 빌드할 수 있는 도구를 갖추고 있어야 합니다. 이러한 기능은 일반적으로 Kubernetes와 같은 컨테이너 조정자에 내장되어 있습니다. Kubernetes Engine을 사용하는 경우 다른 Google Cloud 기능과 더불어 이 기능을 기본적으로 사용할 수 있습니다.

ID 확인 및 승인

Google Kubernetes Engine에서는 프로젝트 액세스 관리에 Cloud IAM을 사용하고, 클러스터 및 네임스페이스 액세스 관리에 역할 기반 액세스 제어(RBAC)를 사용합니다.

감사 로깅

Kubernetes에서는 API 감사 로그가 자동으로 캡처됩니다. Google Kubernetes Engine에서는 Cloud 감사 로그가 자동으로 API 감사 로그를 기록합니다.

네트워킹

Google Kubernetes Engine에서는 클러스터의 pod 간 통신을 관리하기 위한 네트워크 정책을 생성할 수 있습니다. 비공개 IP에 비공개 클러스터를 사용하고 공유 VPC에 Google Kubernetes Engine 리소스를 포함하세요.

규정 준수

Google Kubernetes Engine은 ISO 27001, ISO 27017, ISO 27108, HIPAA, PCI-DSS를 비롯한 여러 규정 준수 인증을 취득했습니다.

최소한의 호스트 OS

Google Kubernetes Engine은 용도에 맞춰 설계되고 컨테이너 실행에 최적화된 OS인 Container-Optimized OS(COS)를 기본적으로 사용합니다. COS는 Google에서 오픈소스로 관리합니다.

자동으로 업그레이드된 구성요소

GKE에서는 마스터가 최신 Kubernetes 버전으로 자동 패치되며, 노드 자동 업그레이드를 사용하여 사용자 노드에 최신 패치를 자동으로 적용해 보안 상태를 최신으로 유지할 수 있습니다.

고객 관리 암호화 키

규제 대상 업계의 사용자들은 GKE에 저장된 데이터의 암호화에 사용된 키를 제어할 수 있어야 합니다. 고객 관리 암호화 키를 사용하면 Cloud KMS에서 키를 선택해 GKE 영구 디스크를 보호할 수 있습니다.

애플리케이션 레이어 보안 비밀 암호화

기본적으로 Kubernetes 보안 비밀은 일반 텍스트로 저장됩니다. GKE는 이러한 보안 비밀을 디스크에서 암호화하고 이 데이터에 대한 내부자의 액세스를 모니터링합니다. 그러나 이것만으로는 사용자 환경에서 악성 애플리케이션으로부터 보안 비밀을 보호할 수 없습니다. 애플리케이션 레이어 보안 비밀 암호화는 Cloud KMS에서 관리되는 키인 봉투 암호화로 보안 비밀을 보호합니다.

워크로드 아이덴티티

컨테이너식 애플리케이션은 작업 수행을 위해 데이터베이스와 같은 다른 서비스에 액세스해야 할 수 있습니다. 이를 위해서는 애플리케이션을 먼저 해당 서비스에 인증해야 합니다. 워크로드 아이덴티티는 애플리케이션 인증을 위한 최소 권한 원칙에 따라 Google 관리형 서비스 계정을 사용하여 사용자 인증 정보를 공유합니다.

관리형 SSL 인증서

GKE에서 HTTPS 부하 분산기는 SSL 인증서와 연결되어야 합니다. 이러한 인증서는 직접 다운로드, 관리, 갱신할 수도 있고, 갱신의 부담을 줄이고 혹시라도 갱신을 놓치는 일이 없도록 Google에서 자동으로 다운로드, 관리, 갱신하도록 설정할 수도 있습니다.

소프트웨어 공급망

소프트웨어 공급망을 갖추면 환경에 무엇이 배포되는지 정확하게 파악할 수 있어 코드에서 이미지, 배포에 이르기까지 애플리케이션 제어가 가능합니다. 이러한 기능은 일반적으로 CI/CD 파이프라인, 컨테이너 레지스트리(예: Google Container Registry)에 내장되어 있고 컨테이너를 프로덕션 단계로 배포하기 전 자격 확인 절차로 수행됩니다.

안전한 관리형 기본 이미지

Google Container Registry는 DebianUbuntu 기본 이미지를 모두 제공하며 이러한 이미지는 Google에서 정기적인 패치 및 테스트로 관리합니다. 이러한 Google 관리 이미지는 업스트림에서 사용할 수 있는 최신 패치가 적용되기 때문에 알 수 없는 저장소에서 이미지를 가져오거나 이미지를 직접 유지보수할 필요 없이 간편하게 최신 상태로 유지할 수 있습니다.

취약점 스캔

Google Container Registry는 이미지와 패키지에 CVE 데이터베이스의 알려진 취약점이 있는지 검사하는 취약점 스캔 기능을 제공합니다.

배포 정책

Google Kubernetes Engine에서 Binary Authorization을 사용하면 이미지 증명을 기반으로 환경에 배포하는 항목을 제한할 수 있습니다. 배포하려면 이미지가 증명 또는 서명 형식으로 정의한 요구사항을 충족하도록 할 수 있습니다. 요구사항에는 취약점이 있는지 검사하는 이미지 스캔 또는 QA팀의 확인이 포함될 수 있습니다.

정기 빌드

컨테이너는 정기적으로 다시 빌드하고 배포할 수 있으므로 사용자 환경에 대해 지속적으로 출시되는 최신 패치의 이점을 활용할 수 있습니다.

런타임 보안

컨테이너 런타임 보안을 확보하려면 보안 대응팀이 사용자 환경에서 실행되는 컨테이너의 보안 위협을 감지하고 이에 대응할 수 있어야 합니다. 이러한 기능은 일반적으로 보안 작업 도구에 내장되어 있습니다.

모니터링

Google Kubernetes Engine에는 Cloud Logging이 통합되어 있어 간편한 로그 분석을 제공합니다. Cloud Security Command Center(Cloud SCC)에 보안 관련 활동을 작성할 수도 있습니다.

이상 작업 감지

Aqua Security, Capsule8, StackRox, Sysdig Secure, Twistlock을 비롯한 Google 파트너를 활용하여 Security Command Center에서 공격을 모니터링하고 결과를 확인할 수 있습니다.

보안 정책 시행

PodSecurityPolicy는 오픈소스 Kubernetes의 기능으로, 이 기능을 사용하면 pod 실행 방법에 제약조건을 적용(예: AppArmor와 seccomp와 같은 제약조건 시행)하여 컨테이너의 가드레일을 만들 수 있습니다.

격리

악성 컨테이너가 다른 컨테이너에 영향을 주지 않도록 하세요. GKE Sandbox는 사용자 공간 커널을 사용하여 syscall을 가로채 처리하므로 개발자가 애플리케이션과 상호작용하는 방식을 변경하지 않고도 사용자의 컨테이너를 보다 심층적으로 방어할 수 있습니다. GKE Sandbox는 Google에서 만든 오픈소스 프로젝트인 gVisor를 기반으로 합니다.

리소스

컨테이너 보안과 관련된 자세한 정보를 살펴보세요.

Google Cloud

시작하기

학습 및 빌드

GCP를 처음 사용하시나요? $300 크레딧으로 모든 GCP 제품을 무료로 시작해 보세요.

도움이 더 필요하신가요?

니즈에 맞는 솔루션을 빌드하거나 파트너를 찾을 수 있도록 Google 전문가들이 도와 드립니다.