클러스터 보안 강화

Kubernetes의 개발 속도로 인해 종종 새로운 보안 기능을 사용하게 됩니다. 이 문서에서는 Google Distributed Cloud 클러스터를 강화하는 방법을 설명합니다.

이 문서에서는 클러스터 생성 시 조치가 필요한 가치가 높은 보안 완화 방법을 우선합니다. 중요도가 낮은 기능, 기본 설정에 따른 보안, 클러스터 생성 후 사용 설정할 수 있는 기능은 이 문서의 뒷부분에서 설명합니다. 보안 주제의 일반적인 개요는 보안을 참조하세요.

체크리스트

다음 배포 체크리스트에서는 GKE 클러스터 플랫폼 배포를 강화하기 위한 권장사항을 중점적으로 설명합니다. 각 사항에 대한 자세한 내용은 이 문서의 섹션을 참조하세요.

배포 체크리스트 설명
ID 및 액세스 제어

vSphere 계정 권한 사용:
최소 권한이 있는 vSphere 관리자 계정을 사용합니다.

안전한 Google Cloud 서비스 계정:
Google Cloud 서비스 계정 권한을 최소화합니다.

OpenID Connect(OIDC 구성):
사용자 인증을 위해 OpenID Connect를 구성합니다.

Kubernetes 네임스페이스 및 RBAC를 사용하여 액세스 제한:
관리 격리와 최소 권한 역할 및 자격에 RBAC를 사용하여 네임스페이스를 사용합니다.

데이터 보호

vSphere 가상 머신 암호화:
Google Distributed Cloud에서 사용하는 볼륨을 암호화하도록 vSphere를 설정합니다.

보안 비밀 관리:
저장 데이터를 암호화합니다.

네트워크 보호

제어 영역 및 노드에 대한 네트워크 액세스 제한:
제어를 설정하여 제어 영역 네트워크와 노드를 격리하고 보호합니다.

네트워크 정책을 사용하여 트래픽 제한:
클러스터 내 트래픽을 제한하는 네트워크 정책을 구현합니다.

선언적 보안

정책 컨트롤러 사용:
클러스터 내에서 선언적 보안 정책에 대한 정책 컨트롤러를 설치합니다.

유지보수

GKE 업그레이드:
플랫폼에서 최신 버전의 GKE Enterprise를 실행 중인지 확인합니다.

보안 게시판 모니터링:
GKE Enterprise 보안 게시판에서 버전 관리에 대한 최신 조언과 안내를 확인하세요.

모니터링 및 로깅

GKE 클러스터 로깅 옵션 설정:
로깅이 사용 설정되어 SIEM 솔루션에 통합되었는지 확인합니다.

ID 및 액세스 제어

이 섹션에서는 클러스터에 대한 액세스 제어에 관한 정보를 제공합니다.

vSphere 계정 권한 사용

Google Distributed Cloud를 설치하는 데 사용하는 vCenter 사용자 계정에는 충분한 권한이 있어야 합니다. 예를 들어 vCenter의 관리자 역할이 할당된 사용자 계정은 모든 vCenter 객체에 대한 전체 액세스 권한이 있으며 Google Distributed Cloud 클러스터 관리자에게 전체 액세스 권한을 제공합니다.

GKE Enterprise를 성공적으로 설치하는 데 필요한 권한만 부여하는 최소 권한의 원칙이 권장됩니다. 설치를 수행하는 데 필요한 최소 권한 집합과 이러한 권한을 부여하는 데 필요한 명령어를 사전 정의했습니다.

안전한 Google Cloud 서비스 계정

Google Distributed Cloud에는 3개의 Google Cloud 서비스 계정이 필요합니다.

  • Google Distributed Cloud 소프트웨어에 액세스하는 데 사용되는 사전 정의된 서비스 계정입니다. GKE Enterprise를 구매할 때 이 계정을 만듭니다.
  • Connect에서 Google Distributed Cloud 클러스터를 Google Cloud에 등록하는 데 사용되는 등록 서비스 계정입니다.
  • Cloud Logging에서 사용할 클러스터 로그를 수집하는 데 사용되는 Cloud Logging 서비스 계정입니다.

설치하는 동안 이러한 서비스 계정에 Identity and Access Management 역할을 결합합니다. 이러한 역할은 서비스 계정에 프로젝트 내의 특정 권한을 부여하며, 설치 중에 생성될 수 있습니다.

클러스터 사용자를 위한 인증 구성

클러스터의 사용자 인증을 구성하려면 OpenID Connect(OIDC) 또는 경량 디렉터리 액세스 프로토콜(LDAP)을 사용하면 됩니다.

자세한 내용은 GKE Identity Service를 참조하세요.

Kubernetes 네임스페이스 및 RBAC를 사용하여 액세스 제한

팀에 Kubernetes에 대한 최소 액세스 권한을 부여하려면 Kubernetes 네임스페이스 또는 환경별 클러스터를 만듭니다. 책임성 및 지불 거절과 관련하여 각 네임스페이스에 비용 센터 및 적절한 라벨을 지정합니다. 특히 프로덕션 환경에서 애플리케이션을 배포하고 관리하는 데 필요한 네임스페이스의 액세스 수준을 개발자에게만 제공합니다.

사용자가 클러스터에 완료해야 하는 태스크를 매핑하고 각 태스크를 수행하는 데 필요한 권한을 정의합니다. 클러스터 수준 및 네임스페이스 수준의 권한을 부여하려면 Kubernetes RBAC를 사용합니다.

Google Distributed Cloud를 설치하는 데 사용되는 Google Cloud 서비스 계정의 권한 외에 IAM은 Google Distributed Cloud 클러스터에 적용되지 않습니다.

자세한 내용은 다음 문서를 참조하세요.

데이터 보호

이 섹션에서는 데이터 보호에 대한 정보를 제공합니다.

vSphere 가상 머신 암호화

Google Distributed Cloud 클러스터 노드는 vSphere 클러스터의 가상 머신(VM)에서 실행됩니다. 저장 데이터를 모두 암호화하는 것이 좋습니다. vSphere에서 이 작업을 수행하려면 VMware vSphere 7 보안 구성 및 가화 가이드VM 암호화 권장사항 안내를 따르세요.

GKE Enterprise를 설치하기 전에 이 작업을 수행해야 합니다.

보안 비밀 관리

etcd에 저장된 Kubernetes 보안 비밀과 같은 민감한 정보에 추가적인 보안 레이어를 제공하도록 Google Distributed Cloud 클러스터와 통합된 보안 비밀 관리자를 구성합니다.

여러 환경에서 워크로드를 실행하는 경우 Google Kubernetes Engine과 Google Distributed Cloud 모두에서 작동하는 솔루션을 선호할 수 있습니다. HashiCorp Vault와 같은 외부 보안 비밀 관리자를 사용하는 경우 Google Distributed Cloud 클러스터를 통합하기 전에 설정해야 합니다.

보안 비밀 관리에는 여러 가지 옵션이 있습니다.

  • 기본적으로 Google Distributed Cloud에서 Kubernetes 보안 비밀을 사용할 수 있습니다. 앞에서 설명한 것처럼 클러스터는 VM에 vSphere 암호화를 사용하여 보안 비밀에 대한 기본적인 저장 데이터 암호화 보호 기능을 제공합니다. 보안 비밀은 기본적으로 더 이상 암호화되지 않습니다.
  • HashiCorp Vault와 같은 외부 Secret Manager를 사용할 수 있습니다. Kubernetes 서비스 계정 또는 Google Cloud 서비스 계정을 사용하여 HashiCorp에 인증할 수 있습니다.

자세한 내용은 다음 문서를 참조하세요.

네트워크 보호

이 섹션에서는 네트워크 보호에 대한 정보를 제공합니다.

제어 영역 및 노드에 대한 네트워크 액세스 제한

클러스터 제어 영역과 노드의 인터넷 노출을 제한합니다. 클러스터를 만든 후에는 이러한 선택 항목을 변경할 수 없습니다. 기본적으로 Google Distributed Cloud 클러스터 노드는 RFC 1918 주소를 사용하여 생성되며 이를 변경하지 않는 것이 좋습니다. 온프레미스 네트워크에 방화벽 규칙을 구현하여 제어 영역에 대한 액세스를 제한합니다.

네트워크 정책을 사용하여 트래픽 제한

기본적으로 Google Distributed Cloud 클러스터의 모든 서비스는 서로 통신할 수 있습니다. 워크로드에 필요에 따라 서비스 간 통신을 제어하는 방법에 대한 자세한 내용은 다음 섹션을 참조하세요.

서비스에 대한 네트워크 액세스를 제한하면 클러스터 내에서 공격자의 측면 이동이 더 어려워지고 실수로 인한 서비스 거부나 고의적인 서비스 거부로부터 서비스를 보호할 수 있습니다. 트래픽을 제어하는 두 가지 권장 방법이 있습니다.

  • 애플리케이션의 엔드포인트에 대한 L7 트래픽을 제어하려면 Istio를 사용합니다. 부하 분산, 서비스 승인, 제한, 할당량, 측정항목에 관심이 있다면 이 옵션을 선택하세요.
  • 포드 간 L4 트래픽을 제어하려면 Kubernetes 네트워크 정책을 사용합니다. Kubernetes에서 관리하는 기본 액세스 제어 기능을 찾고 있는 경우 이 옵션을 선택합니다.

Google Distributed Cloud 클러스터를 만든 후에 Istio 및 Kubernetes 네트워크 정책을 모두 사용 설정할 수 있습니다. 필요한 경우 함께 사용해도 됩니다.

자세한 내용은 다음 문서를 참조하세요.

선언적 보안

이 섹션에서는 클러스터 보안을 위한 권장사항을 제공합니다.

정책 컨트롤러 사용

Kubernetes 허용 컨트롤러는 Kubernetes 클러스터 사용 방법을 제어하고 적용하는 플러그인입니다. 허용 컨트롤러는 클러스터를 강화하기 위한 심층 방어 방식에서 중요한 요소입니다.

정책 컨트롤러를 사용하는 것이 가장 좋습니다. 정책 컨트롤러는 OPA 제약조건 프레임워크를 사용하여 CRD로 정책을 설명하고 적용합니다. 클러스터에 적용하는 제약조건은 클러스터에 배포되는 제약조건 템플릿에서 정의됩니다.

정책을 시행하기 전에 정책을 테스트할 수 있는 추가 기능과 함께PodSecurityPolicies와 동일한 보호를 많이 달성하기 위해 정책 컨트롤러 제약조건을 사용하는 방법에 대한 자세한 내용은 제약조건을 사용하여 포드 보안 적용을 참조하세요.

자세한 내용은 다음 문서를 참조하세요.

워크로드가 자체 수정하는 기능을 제한

특정 Kubernetes 워크로드, 특히 시스템 워크로드에는 자체 수정 권한이 있습니다. 예를 들어 일부 워크로드는 수직적으로 자동 확장됩니다. 이렇게 하면 노드를 이미 손상시킨 공격자가 클러스터에서 추가로 에스컬레이션할 수 있습니다. 예를 들어 공격자는 노드에 있는 워크로드가 동일 네임스페이스에 존재하는 권한이 높은 서비스 계정으로 실행되도록 변경할 수 있습니다.

워크로드에 자체 수정 권한이 애초에 부여되지 않는 것이 좋습니다. 자체 수정이 필요한 경우 몇 가지 유용한 보안 정책을 제공하는 오픈소스 Gatekeeper 라이브러리에서 NoUpdateServiceAccount와 같은 Gatekeeper 또는 Policy Controller 제약조건을 적용하여 권한을 제한할 수 있습니다.

정책을 배포할 때는 일반적으로 클러스터 수명 주기를 관리하는 컨트롤러가 정책, 로깅 및 모니터링 파이프라인을 우회할 수 있도록 해야 합니다. 이는 컨트롤러가 클러스터 업그레이드 적용과 같이 클러스터를 변경할 수 있도록 하기 위해 필요합니다. 예를 들어 Google Distributed Cloud에 NoUpdateServiceAccount 정책을 배포하는 경우 Constraint에 다음 매개변수를 설정해야 합니다.

parameters:
  allowedGroups:
  - system:masters
  allowedUsers:
  - system:serviceaccount:kube-system:monitoring-operator
  - system:serviceaccount:kube-system:stackdriver-operator
  - system:serviceaccount:kube-system:metrics-server-operator
  - system:serviceaccount:kube-system:logmon-operator

유지보수

이 섹션에서는 클러스터 유지관리에 대한 정보를 제공합니다.

GKE Enterprise 업그레이드

Kubernetes에는 새로운 보안 기능과 보안 패치가 정기적으로 제공됩니다.

사용자는 Google Distributed Cloud 클러스터를 최신 상태로 유지해야 합니다. 각 출시 버전의 출시 노트를 검토합니다. 또한 매월 새로운 패치 출시 버전으로 업데이트하고 3개월마다 부 버전으로 업데이트하세요. 클러스터를 업그레이드하는 방법을 알아봅니다.

또한 vSphere 인프라를 업그레이드하고 보호해야 합니다.

보안 게시판 모니터링

GKE Enterprise 보안팀에서는 심각도가 높거나 매우 높은 취약점에 대해 보안 게시판을 게시합니다.

이 게시판은 일반적인 Google Cloud 취약점 번호 지정 스킴을 따르며 기본 Google Cloud 게시판 페이지 및 Google Distributed Cloud 출시 노트에서 연결됩니다. 각 보안 게시판 페이지에는 사용자가 업데이트를 구독할 수 있는 RSS 피드가 있습니다.

심각도가 높거나 매우 높은 취약점을 해결하기 위해 고객의 조치가 필요한 경우 Google에서는 이메일로 고객에게 연락합니다. 또한 지원 채널의 지원 계약을 통해 고객에게 연락할 수도 있습니다.

자세한 내용은 다음 문서를 참조하세요.

모니터링 및 로깅

Google Distributed Cloud에는 클라우드 기반 관리형 서비스, 오픈소스 도구, 서드 파티 상업용 솔루션과 검증된 호환성 등 여러 가지 클러스터 로깅 및 모니터링 옵션이 포함되어 있습니다.

  • Cloud Logging 및 Cloud Monitoring이 Google Distributed Cloud를 사용하여 배포된 클러스터 내 에이전트에 의해 사용 설정됩니다.
  • 타사 솔루션을 사용한 검증된 구성

비즈니스 요구사항에 따라 선택하는 로깅 솔루션 모두 보안 이슈 관리를 위해 중앙 집중식 보안 정보 및 이벤트 관리(SIEM) 서비스에 전달 관련 이벤트 및 알림을 로깅하는 것이 좋습니다.

자세한 내용은 다음 문서를 참조하세요.