GKE 앱을 위한 보안 제어 및 포렌식 분석

Last reviewed 2019-08-22 UTC

이 문서에서는 Google Kubernetes Engine(GKE)에 배포되는 앱을 위해 포렌식 분석에 사용되는 계측 및 도구에 대해 자세히 설명합니다.

어떤 조직에서든 코드, 앱, 인프라를 위해 보안 환경을 빌드하고 유지보수하는 것이 중요한 우선순위입니다. 또한 보안 이슈가 발생했을 때는 여기에 대처하고 조사하는 방법을 알고 있어야 합니다.

Google Cloud는 클러스터 및 Google Cloud 환경 보호에 도움이 되는 고급 보안 관련 기능을 제공하여 GKE 앱 보안을 단순화합니다. Cloud 감사 로그는 포렌식 분석에 사용할 수 있는 자세한 로깅을 제공합니다. 고급 보안 관련 기능과 로깅을 통해 조직의 GKE 앱 보호에 도움이 되는 강력한 플랫폼을 제공합니다.

이 문서의 목표는 GKE에서 Google Cloud 인프라 및 컨테이너 기반 코드를 보호하고 보안 이슈에 대비할 수 있도록 돕기 위한 것입니다.

Google Cloud로 환경을 보호하고 포렌식 분석을 준비하기 위해서는 몇 가지 중요한 단계가 필요합니다.

  • Google Cloud 환경 보호. 적절한 보안 관련 제어 및 구성을 사용하여 Google Cloud를 구성하고 워크로드를 배포합니다.
  • 이슈 대응 계획 준비. 보안 이슈에 대한 대응 방법을 계획합니다.
  • 모든 관련 로그 및 데이터 소스 수집. Google Cloud 환경에 대한 로그 및 적절한 데이터를 미리 수집하고 액세스 방법을 확인합니다.
  • 자동화된 이벤트 감지 사용. 잠재적 보안 이벤트, 잘못된 구성, 취약점을 알리도록 사전 예방적 스캔을 구성합니다.
  • 포렌식 분석을 위한 분석 도구 사용. 분석 도구를 사용하여 숨겨진 보안 이슈를 확인하고 기록합니다.

Google Cloud 환경 보호

Google Cloud는 Google Cloud 조직 및 프로젝트를 보호하기 위해 사용할 수 있는 다양한 구성 및 도구를 제공합니다.

공유 책임 모델

클라우드의 보안은 클라우드 제공업체와 고객이 공유하는 책임입니다. Google Cloud는 기본적으로 저장 데이터 암호화를 제공하고, IAM 및 Cloud 감사 로그의 액세스 제어와 같이 워크로드 보호를 위해 사용할 수 있는 기능을 제공하여 기본 인프라를 보호합니다. GKE에서 Google Cloud는 제어 영역을 보호하고 고객은 자신의 워크로드를 보호합니다. 공유 보안 모델에 대해 심도 깊은 논의를 보려면 컨테이너 보안 탐색: GKE에서의 공유 책임 모델 블로그 게시물을 참조하세요.

GKE 보안

Kubernetes 및 GKE는 클러스터와 워크로드 보호에 도움이 되는 여러 메커니즘을 제공합니다. 최소 권한 액세스와 적절한 보안 관련 제어를 사용하여 환경을 빌드하면 공격 영역이 줄어듭니다. 클러스터 및 해당 워크로드 보호에 대한 자세한 내용은 다른 여러 가이드를 참조하세요.

이슈 대응 계획 준비

발생한 이슈를 관리 및 복구하고 미래 이슈를 방지하기 위해서는 효율적인 이슈 대응이 매우 중요합니다. 이슈 대응 계획을 빌드하거나 향상시키는 방법은 Google Cloud의 이슈 대응 계획을 참조하세요.

다음 단계에서는 이러한 절차를 간략하게 보여줍니다.

  1. 식별. 이슈를 조기에 정확히 식별하는 것이 강력하고 효과적인 이슈 관리의 관건입니다. 이 단계에서 초점을 맞출 부분은 보안 이벤트를 모니터링하여 잠재적 데이터 이슈를 감지하고 보고하는 것입니다.
  2. 조정. 이슈가 보고되면 비상 대기팀이 이슈 보고의 본질을 검토 및 평가하여 해당 이슈가 잠재적 데이터 이슈에 해당하는지, 이슈 대응 절차를 시작해야 하는지 결정합니다.
  3. 해결. 이 단계에서는 근본 원인 조사, 이슈의 영향 제한, 즉각적인 보안 위험 해결, 구제 조치의 일환으로서 필요한 수정 구현, 영향을 받는 시스템, 데이터, 서비스의 복원에 초점을 맞춥니다.
  4. 지속적 개선. 이슈가 새로 발생할 때마다 얻은 새로운 교훈을 통해 도구, 학습, 프로세스를 향상시킬 수 있습니다.

계획을 따르고 언제 전문가를 불러야 하는지 알기

프로덕션 클러스터에 코드를 적용하려면 먼저 앱 및 인프라(Google Cloud 포함)에 대한 보안 모델을 이해하고 이슈 대응 모델을 빌드하는 것이 매우 중요합니다. 계획에서 각 대응 단계를 수행할 팀을 설명하는 에스컬레이션 경로를 포함해야 합니다.

예를 들어 이슈 대응은 이후에 보안 이슈로 분류되는 잠재적 이슈를 제출하는 운영 팀으로부터 시작될 수 있습니다. 그런 다음에는 이슈가 적절한 보안 팀 구성원에게 할당됩니다. 이슈 대응 계획은 외부 보안 전문가를 부르고 포함시키는 방법을 정의합니다. 이와 같은 프로세스 개발이 효율적인 이슈 대응을 준비하기 위한 핵심 부분입니다.

모든 관련 로그 및 데이터 소스 수집

Kubernetes 환경에 필요한 보안 보호 메커니즘을 구현하고 이슈 대응 계획 초안을 작성한 다음에는 포렌식 분석을 위해 필요한 모든 정보에 액세스할 수 있는지 확인해야 합니다. 앱을 배포하거나 Google Cloud 프로젝트를 설정하는 즉시 로그 수집을 시작해야 합니다. 로그를 캡처하면 분석을 위해 필요할 때 바로 사용할 수 있습니다. 일반적으로 데이터 소스는 Google Cloud 환경에 따라 달라지고, 컨테이너에 공통적인 데이터 소스도 있습니다. 두 소스 모두 유지하고 분석에 사용할 수 있어야 합니다.

로그는 특정 보안 이벤트를 식별하는 데 도움이 되는 다양한 데이터 세트를 제공합니다. 다음 각 로그 소스는 분석에 사용할 수 있는 세부정보를 제공할 수 있습니다.

Cloud 감사 로그

Google Cloud 서비스는 Cloud 감사 로그라는 감사 로그를 작성합니다. 이러한 로그는 '언제 누가 어디서 무엇을 했는가'에 대한 질문에 답하는 데 도움을 줍니다. 각 프로젝트, 폴더, 조직에는 관리자 활동, 데이터 액세스, 시스템 이벤트라는 세 가지 유형의 감사 로그가 있습니다. 이러한 로그는 수행된 관리 API 호출, 액세스된 데이터, 발생한 시스템 이벤트를 총체적으로 이해하는 데 도움을 줍니다. 이 정보는 모든 분석에 중요합니다. 감사 로그를 제공하는 Google Cloud 서비스 목록은 감사 로그를 생성하는 Google 서비스를 참조하세요.

GKE를 위한 Cloud 감사 로그에서도 Kubernetes API 서버에 수행되는 호출에 대해 시간순 레코드를 제공하는 Kubernetes Audit Logging에 대해 알아볼 수 있습니다. 이러한 로그는 Cloud 감사 로그에서도 수집됩니다.

앱 로그

Cloud Logging은 컨테이너 표준 출력 및 오류 로그를 수집합니다. 사이드카 방식을 사용하여 다른 로그를 추가할 수 있습니다. Istio 및 Cloud Logging이 사용 설정된 클러스터의 경우 Istio stackdriver 어댑터가 Istio 관련 로그를 수집 및 보고하고 로그를 Cloud Logging으로 전송합니다.

인프라 로그

인프라 로그는 OS, 클러스터, 네트워킹 수준에서 활동 및 이벤트에 대한 유용한 정보를 제공합니다.

GKE 감사 로그

GKE는 두 가지 유형의 감사 로그, 즉 GKE 감사 로그와 Kubernetes Audit Logging을 전송합니다. Kubernetes는 Kubernetes API 서버에 수행된 호출에 대해 Cloud 감사 로그를 작성합니다. Kubernetes 감사 로그 항목은 의심스러운 API 요청 조사, 통계 수집 또는 원치 않는 API 호출에 대한 모니터링 알림 생성에 유용합니다. 또한 GKE는 GKE 클러스터에서 수행되는 작업을 식별하는 자체 감사 로그를 작성합니다.

GKE 노드를 위한 Compute Engine Cloud 감사 로그

GKE는 고유 감사 로그를 생성하는 Compute Engine 노드를 기반으로 실행됩니다. 또한 Linux 시스템 로그를 캡처하도록 auditd를 구성할 수 있습니다. auditd는 클러스터 노드에 대해 오류 메시지, 로그인 시도, 바이너리 실행과 같은 중요한 정보를 제공합니다. Compute Engine 감사 로그 및 auditd 감사 로그는 기본 클러스터 인프라 수준에서 발생하는 활동에 대한 유용한 정보를 제공합니다.

컨테이너 로그

컨테이너 및 시스템 로그의 경우, GKE는 컨테이너 로그를 읽고, 유용한 메타데이터를 추가하고, 로그를 저장하는 노드별 로깅 에이전트를 배포합니다. 로깅 에이전트는 다음 소스에서 컨테이너 로그를 확인합니다.

  • 컨테이너식 프로세스의 표준 출력 및 표준 오류 로그
  • kubelet 및 컨테이너 런타임 로그
  • VM 시작 스크립트 등 시스템 구성요소의 로그

이벤트의 경우 GKE는 이벤트를 자동으로 수집해 Cloud Logging으로 전송하는 kube-system 네임스페이스의 배포를 사용합니다. 로그는 클러스터, 노드, Pod, 컨테이너에 대해 수집됩니다.

Google Kubernetes Engine의 Istio

Istio가 있는 클러스터의 경우, Istio stackdriver 어댑터가 클러스터 생성 중에 설치되며, 메시에서 Google Cloud의 작업 제품군으로 측정항목, 로깅, trace 데이터를 전송합니다.

GKE의 Container-Optimized OS를 위한 Auditd

Linux 시스템의 경우 auditd 데몬은 OS 시스템 수준 명령어에 대한 액세스를 제공하고, 컨테이너 내부의 이벤트에 대해 유용한 정보를 제공할 수 있습니다. GKE에서는 auditd 로그를 수집하고 이를 Cloud Logging으로 전송할 수 있습니다.

VPC 흐름 로그

VPC 흐름 로그는 VM 인스턴스에서 전송되거나 수신되는 네트워크 흐름의 샘플을 기록합니다. 이 정보는 네트워크 통신 분석에 유용합니다. VPC 흐름 로그에는 Kubernetes 클러스터의 노드 내 공개 상태 기능을 통해 모든 Pod 간 트래픽이 포함됩니다.

기타 Google Cloud 서비스

Google Cloud 서비스는 Cloud 감사 로그를 생성하고, 일부 서비스(예: Cloud Load Balancing)는 추가 로그를 생성합니다. 서비스가 사용 설정된 다음 Cloud Logging이 로그 생성을 시작합니다. Cloud 감사 로그의 경우 기본적으로 관리자 활동 로그만 사용 설정됩니다. 다른 서비스의 감사 로그는 해당 서비스가 사용 설정될 때 사용 설정할 수 있습니다.

스냅샷

스냅샷은 특정 시점에서 스토리지 내용을 분석하는 데 유용할 수 있습니다. Google Kubernetes Engine 클러스터 노드에 연결된 스토리지 스냅샷을 작성하고 이를 정기적으로 예약할 수 있습니다. 스냅샷이 클러스터 노드 수준에서 작동하고, 시간이 지나면 클러스터 노드가 변경될 수 있기 때문에, 새 스토리지가 사용되는 노드가 생성될 때마다 스냅샷 작성을 자동화해야 합니다. 노드 스토리지의 스냅샷을 정기적으로 작성하면 분석에 필요한 스토리지 데이터를 바로 사용할 수 있습니다.

자동화된 이벤트 감지 사용

알림과 함께 자동화는 모든 규모의 환경을 모니터링하기 위한 핵심입니다. Google Cloud 및 Kubernetes 도구를 모두 사용해서 잠재적인 위협과 잘못된 구성을 식별할 수 있습니다.

Security Command Center

Security Command Center는 Google Cloud를 위한 보안 및 위험 플랫폼입니다. Security Command Center는 데이터를 수집하고, 위협을 식별하고, 작업을 제안하여 위협 방지, 감지, 대응을 쉽게 수행할 수 있게 해줍니다. Google Cloud에서 제공되는 많은 보안 스캔 도구가 Security Command Center에 결과를 보고하므로, 자동화된 감지를 위해 이 플랫폼을 유용하게 활용할 수 있습니다. Security Command Center는 SecOps 또는 DevSecOps팀에 중요한 도구입니다.

Event Threat Detection

Event Threat Detection은 조직이 직면한 가장 심각한 위협을 자동으로 감지하고 결과를 Security Command Center에 게시하도록 빌드되었습니다. 위협의 예시로는 악의적일 수 있는 사용자 및 서비스 계정 추가, 손상된 Compute Engine 인스턴스, 악의적인 네트워크 트래픽 등이 포함됩니다. Event Threat Detection은 Google의 오픈소스 및 클로즈소스 위협 인텔리전스와 작업들로 구성되며, Cloud Logging에 제공된 로그에서 위협을 감지합니다.

Security Health Analytics

Security Health Analytics는 Google Cloud 제품들 간에 공통적인 취약점과 잘못된 구성을 자동으로 스캔하는 Google Cloud 서비스입니다. Security Health Analytics는 컨테이너 관련 취약점을 감지할 수 있습니다. 취약점에는 사용 중지 항목의 로깅 또는 모니터링과 Kubernetes 관리 웹 UI 대시보드 사용 설정이 포함됩니다. 발견 항목은 Security Command Center에 기록됩니다.

Forseti 보안

Forseti는 Google Cloud 리소스의 인벤토리를 빌드하고, 환경을 스캔하고, 적용할 정책을 설정할 수 있는 오픈소스 프로젝트입니다. Forseti는 Security Command Center와 통합되며, Security Command Center로 검색 결과를 보고할 수 있습니다. Forseti를 사용하면 GKE 클러스터에서 임의의 구성 값을 조사하여 해당 사양과 일치하는지 확인할 수 있습니다. Anthos를 사용하는 경우 Anthos Config Management를 사용하여 공통 구성을 정의하고, 이러한 구성을 적용하고, 구성 드리프트에 따라 모니터링할 수 있습니다.

kube-hunter

kube-hunter는 원격, 내부, 네트워크 스캔을 사용하여 Kubernetes 클러스터의 보안 약점을 스캔합니다. kube-hunter는 대화형 모드로 사용되거나 클러스터에 대해 자동화된 원격 침투 테스트로 사용될 수 있습니다.

컨테이너 포렌식 분석을 위한 분석 도구 사용

Google Cloud 및 Kubernetes 생태계의 많은 도구가 포렌식 분석에 유용합니다. 이 섹션에는 참조를 위해 세 가지 항목이 포함되어 있습니다.

BigQuery를 사용한 Google Cloud 로그 분석

Cloud 감사 로그는 추가 분석을 위해 Cloud Storage, Pub/Sub, BigQuery로 내보낼 수 있습니다. 예를 들어 특정 기간 동안 Google Cloud 프로젝트에서 수행된 모든 방화벽 규칙 변경 사항을 조회해야 할 수 있습니다. 이를 위해서는 Cloud 감사 로그를 BigQuery로 내보내면 됩니다. 그런 다음 BigQuery를 사용해서 SQL 쿼리를 생성하여 이 정보를 반환할 수 있습니다.

Docker-explorer

Docker-explorer는 포렌식 분석가가 오프라인 Docker 파일 시스템을 탐색하기 위한 프로젝트입니다. 이 접근 방식은 Docker 컨테이너가 손상되었을 때 유용할 수 있습니다.

Kubectl Sysdig 캡처 + Sysdig 조사

Kubectl Sysdig Capture는 Pod에서 시스템 활동 캡처를 트리거하는 오픈소스 kubectl 플러그인입니다. Sysdig는 컨테이너 문제해결 및 보안 조사에 사용되는 오픈소스 도구인 Sysdig Inspect에 Pod 정보를 제공합니다. Sysdig Inspect는 Linux 시스템의 세부적인 시스템, 네트워크, 앱 활동을 정리하고 Pod 내의 활동을 정리해서 보여줍니다.

다음 단계