이 항목에서는 Tanzu Kubernetes Grid 보안에 대한 개괄적인 개요를 제공합니다.
TKG(Tanzu Kubernetes Grid)는 모든 클라우드에서 Kubernetes 네이티브인 일관된 환경을 제공합니다. 따라서 TKG에서 미리 패키지된 여러 구성 요소를 사용하여 환경 전체에 보안 제어를 일관되게 적용하여 워크로드 클러스터 및 기본 환경에 대한 보안 제어를 강화할 수 있습니다. 공동 책임 모델은 클라우드 네이티브 스택의 모든 계층에 대해 Tanzu Kubernetes Grid 프로비저닝 클러스터를 실행하는 환경을 보호하는 경우에도 적용됩니다 - 코드, 컨테이너, 클러스터, 클라우드.
이 문서는 TKG 보안의 현재 상태를 공유합니다. VMware는 모든 릴리스에서 원활한 개발자 환경을 유지하면서 제품의 보안을 내장적으로 구성하는 데 중점을 두고 TKG 보안을 개선하기 위해 최선을 다하고 있습니다. 이 문서의 모든 권장 사항은 조직의 보안 상태 및 위험 상태에 따라 고려해야 합니다.
보안 세부 정보는 vSphere with Tanzu Supervisor와 함께 배포된 TKG와 독립형 관리 클러스터로 배포된 TKG가 다릅니다. Supervisor 기반 배포에 대한 보안 이야기는 아래 연결된 vSphere with Tanzu 설명서에서 다룹니다. 이 항목의 나머지 항목에서는 독립형 관리 클러스터가 있는 TKG 배포에 대해 설명합니다.
Supervisor가 있는 vSphere 8의 Tanzu Kubernetes Grid v2.0은 vSphere 추가 기능 모듈입니다. vSphere 보안 및 vCenter SSO를 비롯한 여러 vSphere 기능을 활용합니다. Tanzu Kubernetes Grid v2.0 보안에 대한 자세한 내용은 vSphere 8 설명서에서 vSphere with Tanzu 보안을 참조하십시오.
이 문서는 Tanzu Kubernetes Grid 멀티 클라우드 오퍼링에만 적용됩니다. 공식 제품 설명서 및 기타 오퍼링과의 차이점은 여기에 설명되어 있습니다.
다른 VMware Tanzu 오퍼링에 대한 보안 지침은 다음을 참조하십시오.
Tanzu Kubernetes Grid Integrated Edition: TKGI 설명서의 Tanzu Kubernetes Grid Integrated Edition 보안을 참조하십시오.
Tanzu Mission Control: VMware Tanzu Mission Control 보안 조치를 참조하십시오.
보안 소프트웨어 개발을 위한 VMware 정책 및 관행: VMware 제품 보안을 참조하십시오.
아래 섹션에서는 독립형 관리 클러스터와 함께 배포된 TKG 및 그 주변의 보안을 설명합니다. 제품에 내장된 사용 가능한 보안 제어 및 Tanzu Kubernetes Grid 클러스터가 배포된 환경을 보호하는 보완적인 보안 제어를 구현하는 모범 사례를 간략하게 설명합니다.
Tanzu Kubernetes Grid는 Kubernetes 포드로 배포된 애플리케이션 개발자가 작성한 코드를 실행합니다. Tanzu Kubernetes Grid는 다양한 구성 요소로 구성되어 있고 그 중 일부는 오픈 소스이며 VMware 전용입니다. 이러한 모든 애플리케이션 및 구성 요소의 코드가 안전한 경우 Tanzu Kubernetes Grid 프로비저닝된 클러스터를 실행하는 환경의 보안 상태를 개선합니다.
Tanzu Kubernetes Grid는 VMware 보안 개발 수명 주기 프로세스와 규정을 준수하여 개발되었습니다. 일반적으로 Tanzu Kubernetes Grid 제품 보안을 보장하기 위해 다음과 같은 모범 사례가 제공되었습니다.
제품의 모든 주요 설계 변경에 대한 위협 모델을 수정합니다.
위협 모델링 연습에서 나온 결과에 대해 우선 순위가 높은 수정 작업을 합니다.
모든 핵심 Tanzu Kubernetes Grid 구성 요소가 소스 코드에서 컴파일하기 위한 자동화된 빌드입니다.
보안 수정, 릴리스 관리, 취약점 분류를 위해 업스트림에 참여합니다.
main
분기로 병합하기 전에 전용 코드:
피어 코드 검토를 통해 다시 확인합니다.
golint
, gosec
, govet
와 같은 도구를 사용하여 자동화된 정적 코드 검색을 실행합니다.
VMware 서명 키로 kubectl
또는 tanzu-cli
와 같은 바이너리를 서명합니다.
Tanzu Kubernetes Grid에서 실행되는 컨테이너화된 애플리케이션의 코드를 보호하기 위해 다음 리소스가 유용한 참조로 사용될 수 있습니다.
컨테이너는 Linux 네임스페이스 격리 프로세스로 인스턴스화되며 모든 런타임 종속성 및 애플리케이션 바이너리에 기본적으로 tarball인 미리 패키지된 이미지를 사용하여 컨테이너화된 애플리케이션을 실행합니다. Tanzu Kubernetes Grid는 이러한 컨테이너를 Kubernetes 포드의 일부로 실행합니다. 많은 Tanzu Kubernetes Grid 구성 요소도 컨테이너 이미지로 패키징되며 포드(때로는 Kubernetes 데몬셋 또는 정적 포드)로 실행되도록 구성됩니다. Tanzu Kubernetes Grid 구성 요소의 컨테이너를 보호하기 위해 구현되는 모범 사례는 다음과 같습니다.
스테이징 컨테이너 레지스트리로 push
하는 동안 취약성 스캐너가 있는 모든 컨테이너 이미지에서 CVE(Common Vulnerability and Exposures)를 검색합니다.
최소 권한 원칙에 따라 외부 연결 컨테이너 레지스트리에 대한 push
액세스를 Tanzu Kubernetes Grid 릴리스 팀으로 제한합니다.
릴리스 기준 및 적절한 테스트가 완료된 후 스테이징에서 프로덕션으로 컨테이너 이미지 push
를 자동화하는 중앙 집중식(LDAP) 관리 서비스 또는 로봇 계정을 사용합니다.
컨테이너 이미지의 수정되지 않은 중요한 취약성을 문서화하는 내부 영향 평가를 수행합니다.
새로 식별된 취약점에 대한 수정 사항을 가져오기 위해 Tanzu Kubernetes Grid 구성 요소를 최신 기본 이미지로 정기적으로 업데이트합니다.
가능한 경우 모든 Tanzu Kubernetes Grid 구성 요소에 대한 최소 이미지로의 이동을 선호하고 추진하고 기본 이미지 배포를 적은 수로 제한하여 모든 이미지의 패치 표면 영역을 줄입니다.
일반적으로 컨테이너 이미지를 안전하게 구축하고, 실행하고, 사용하려면 다음 리소스가 유용합니다.
VMware는 호환되는 Kubernetes 버전 및 지원 구성 요소와 함께 Tanzu Kubernetes 릴리스(TKr)의 버전이 지정된 기본 시스템 OS 이미지를 패키지합니다. 그러면 Tanzu Kubernetes Grid가 이러한 패키징된 OS, Kubernetes, 구성 요소 버전을 사용하여 클러스터와 제어부 노드를 생성합니다. 자세한 내용은 Tanzu Kubernetes 릴리스 및 사용자 지정 노드 이미지를 참조하십시오.
게시된 각 TKr은 이미지가 빌드된 날짜를 기준으로 모든 현재 CVE 및 USN 수정 사항이 포함된 패키지로 제공되는 OS 버전의 최신 안정되고 일반적으로 사용 가능한 업데이트를 사용합니다. VMware는 이러한 노드 이미지(vSphere OVA, AWS AMI, Azure VM 이미지)를 Tanzu Kubernetes Grid의 각 릴리스와 함께 가능하면 더 자주 재구축합니다. 이미지 파일은 VMware에서 서명되고 고유한 해시코드 식별자가 포함된 파일 이름을 갖습니다.
중요하거나 우선 순위가 높은 CVE가 보고되면 VMware는 수정 사항에 대해 협력하고 수정 사항이 게시되면 업데이트를 포함하도록 영향을 받는 모든 노드 이미지와 컨테이너 기본 이미지를 다시 빌드합니다.
핵심 구성 요소가 BoringCrypto/Boring SSL 모듈을 기반으로 하는 FIPS 지원 라이브러리에서 제공하는 암호화 프리미티브를 사용하는 FIPS 지원 버전의 Tanzu Kubernetes Grid v2.1.0 및 v2.1.1을 설치하고 실행할 수 있습니다. 이러한 핵심 구성 요소에는 Kubernetes, Containerd 및 CRI, CNI 플러그인, CoreDNS, etcd 구성 요소가 포함되어 있습니다.
FIPS 지원 Tanzu Kubernetes Grid v2.1을 설치하는 방법에 대한 자세한 내용은 TKG v2.1 설명서에서 FIPS 지원 버전을 참조하십시오.
Kubernetes 클러스터는 클러스터의 제어부 역할을 하는 여러 구성 요소와 배포된 워크로드를 실제로 실행하는 데 도움이 되는 지원 구성 요소 및 Worker 노드 집합으로 구성됩니다. Tanzu Kubernetes Grid 설정에는 두 가지 유형 즉, 관리 클러스터와 워크로드 클러스터가 있습니다. Tanzu Kubernetes Grid 관리 클러스터는 워크로드 클러스터를 관리하는 데 사용되는 모든 Tanzu Kubernetes Grid 구성 요소를 호스팅합니다. Tanzu Kubernetes Grid 관리자가 스핀업한 워크로드 클러스터는 컨테이너화된 애플리케이션을 실제로 실행하는 데 사용됩니다. 클러스터 보안은 Tanzu Kubernetes Grid 프로비저닝된 클러스터에서 앱을 실행하는 Tanzu Kubernetes Grid 클러스터 관리자, 개발자, 운영자의 공동 책임입니다. 이 섹션에서는 관리 및 워크로드 클러스터 모두에 대한 안전한 모범 사례를 구현하는 데 도움이 될 수 있는 Tanzu Kubernetes Grid에 포함된 구성 요소를 기본적으로 열거합니다.
Tanzu Kubernetes Grid에는 ID 및 액세스 관리에 설명된 대로 Kubernetes 클러스터의 보안 액세스를 지원하는 Pinniped 패키지가 있습니다.
Tanzu Kubernetes Grid 운영자는 기본 제공 역할 기반 액세스 제어를 통해 Kubernetes의 다른 사용자에게 클러스터 리소스에 대한 액세스 권한을 부여할 책임이 있습니다. Tanzu Kubernetes Grid 프로비저닝된 클러스터에서 ID를 관리하기 위한 권장 모범 사례는 다음과 같습니다.
최소 권한 원칙에 따라 클러스터 리소스에 대한 액세스를 제한합니다.
관리 클러스터에 대한 액세스를 적절한 사용자 집합으로 제한합니다. 예를 들어 인프라 및 클라우드 리소스 관리를 담당하는 사용자에게만 액세스 권한을 제공하고, 애플리케이션 개발자에게는 액세스 권한을 제공하지 않습니다. 이는 관리 클러스터에 대한 액세스가 본질적으로 모든 워크로드 클러스터에 대한 액세스를 제공하기 때문에 특히 중요합니다.
워크로드 클러스터에 대한 클러스터 관리자 액세스를 적절한 사용자 집합으로 제한합니다. 예를 들어 조직의 인프라 및 플랫폼 리소스 관리를 담당하지만 애플리케이션 개발자는 관리하지 않는 사용자입니다.
Pinniped를 사용하여 중앙 집중식 ID 제공자에 연결하여 관리자가 생성한 kubeconfig
파일에 의존하지 않고 클러스터 리소스에 액세스할 수 있는 사용자 ID를 관리합니다.
Tanzu Kubernetes Grid의 핵심 이점 중 하나는 단일 관리부를 통해 여러 클러스터의 전체 수명 주기를 관리하는 기능입니다. 이는 멀티 테넌시 관점에서 볼 때 신뢰할 수 없는 워크로드가 별도의 Kubernetes 클러스터에서 실행될 때 가장 높은 형태의 격리가 가능하기 때문에 중요합니다. 다음은 Tanzu Kubernetes Grid에서 다중 테넌트 워크로드를 지원하도록 구성된 몇 가지 기본값입니다.
노드는 클러스터 간에 공유되지 않습니다.
노드는 컨테이너 워크로드만 호스팅하도록 구성되어 있습니다.
관리부는 자체 전용 클러스터에서 실행되어 워크로드 클러스터와의 문제를 분리할 수 있습니다.
api-server
, scheduler
, controller-manager
등과 같은 Kubernetes 관리 구성 요소는 전용 노드에서 작동합니다. 또한 제어부 노드에 대한 워크로드 포드 배포를 감지하기 위해 감사 규칙을 적용하는 것이 좋습니다.
관리 구성 요소에 대한 전용 노드의 애플리케이션 포드 스케줄링(위에 설명됨)은 노드 테인트(taint) 및 선호도 규칙을 통해 비활성화되어 있습니다.
AWS 멀티 테넌트 환경에서 보안을 향상하려면 워크로드 클러스터를 관리 클러스터 배포에 사용되는 계정과는 다른 AWS 계정에 배포합니다. 여러 AWS 계정에 워크로드 클러스터를 배포하려면 다른 AWS 계정의 클러스터를 참조하십시오.
멀티 테넌트 환경을 배포할 때의 설계 고려 사항에 대한 자세한 내용은 워크로드 테넌시를 참조하십시오.
워크로드 분리 요구 사항은 고객마다 다릅니다. 따라서 허용 가능한 위험 허용 범위를 사용하여 서로 워크로드를 합리적으로 분리하려면 공동 책임 모델에 따라 추가 작업이 필요합니다. 여기에는 더 높은 권한으로 실행해야 하는 컨테이너 수를 소수의 네임스페이스로 제한하고 런타임, 포드, 노드 수준에서 AppArmor 및 SELinux와 같은 심층 방어 메커니즘을 구현하는 것이 포함됩니다. Tanzu Kubernetes Grid 1.6 이상에서는 Ubuntu 20.04 이미지에서 AppArmor가 기본적으로 사용하도록 설정됩니다.
이러한 구성은 포드 보안 승인 컨트롤러를 통해 포드에서 중앙 집중식으로 적용할 수 있습니다.
고급 사용 사례 및 사용자 지정 정책 관리의 경우 일반적으로 다음 리소스로 시작하는 것이 좋습니다. OPA, 사용 권한 제어, 포드 보안 표준
마이크로비스 아키텍처의 기본 측면 중 하나는 한 가지만 수행하는 서비스를 구축하는 것입니다. 이를 통해 문제를 분리하고 팀이 더 빠르게 이동할 수 있습니다. 또한 이렇게 하면 자체 포드의 동일한 클러스터에서 자주 실행되는 여러 다른 마이크로 서비스와 통신해야 할 필요성이 증가합니다. 따라서 런타임에서 이러한 통신을 보호하기 위해 다음 모범 사례를 고려해야 합니다.
최소 권한의 네트워크 정책: Antrea는 Tanzu Kubernetes Grid에서 사용하도록 설정된 기본 CNI 플러그인입니다. 위험 상태에 따라 적용할 수 있는 네트워크 정책을 구현하는 데 사용하는 방법에 대한 자세한 내용은 Antrea에 대한 공식 문서를 참조하십시오. 선택한 CNI 플러그인을 사용하려면 다음 가이드를 따르십시오. 포드 및 컨테이너 네트워킹
기본적으로 상호 TLS: 이를 구현하는 것은 Tanzu Kubernetes Grid 고객의 책임입니다. 애플리케이션 매니페스트의 일부로 또는 사이드카 컨테이너가 애플리케이션 컨테이너에 대한 TLS 통신을 처리할 수 있도록 해주는 서비스 메시를 사용하여 구현할 수 있습니다.
암호 보호: Kubernetes 클러스터에서 암호를 관리할 때 선택할 수 있는 몇 가지 옵션이 있습니다. 빠른 실행 옵션을 보려면 암호 관리를 참조하십시오.
애플리케이션 포드를 포함한 클러스터 리소스의 관찰 가능성 및 거부를 보장하려면 Tanzu Kubernetes Grid 프로비저닝 클러스터에 대한 감사 및 모니터링을 사용하도록 설정하는 것이 중요합니다. Tanzu Kubernetes Grid는 관리자가 기본적으로 이를 활성화할 수 있는 확장 세트와 함께 패키지로 제공됩니다. 다음 가이드에서 이를 자세히 설명합니다.
API 서버 및 시스템 감사: 클러스터 사용량 거부를 방지하기 위해 API 서버 감사도 시스템 수준(노드) 감사를 사용하도록 설정하는 방법입니다. Tanzu Kubernetes Grid에는 API 서버 감사에 대한 기본 정책이 포함되어 있습니다. 컨테이너 런타임 바이너리 및 구성의 변조를 감지할 수 있도록 노드 수준 감사 데몬에 대한 적절한 정책을 설정하는 것이 좋습니다.
Fuent Bit를 사용하여 로그 전달: 로그의 로컬 변조로 인한 거부 손실을 방지할 수 있는 중앙 집중식 로그 수집을 활성화하는 방법입니다.
Prometheus 및 Grafana를 사용하여 모니터링: 서비스 거부 공격에 따른 리소스 사용량의 갑작스러운 스파이크를 감지할 수 있는 경고 및 시각화를 위해 클러스터 및 시스템 메트릭의 관찰 가능성을 활성화하는 방법입니다.
설명된 관련 위협에 따라 위의 제어 중 일부 또는 전부를 Tanzu Kubernetes Grid 클러스터에 적용할 수 있습니다.
클라우드 제공자는 온프레미스(예: vSphere) 또는 퍼블릭 클라우드(예: AWS, Azure 또는 Google Cloud) 배포 여부에 관계없이 모든 Tanzu Kubernetes Grid 프로비저닝 Kubernetes 클러스터에 대한 언더레이 리소스 역할을 합니다. 기본 인프라 보안은 일반적으로 Tanzu Kubernetes Grid 고객과 클라우드 제공자의 공동 책임입니다. 다음은 Tanzu Kubernetes Grid 프로비저닝된 클러스터를 기반으로 하는 클라우드의 보안을 개선하기 위한 몇 가지 권장 사항입니다.
이 가이드를 사용하여 클라우드 자격 증명을 주기적으로 순환하거나 업데이트합니다(vSphere 전용). Tanzu 클러스터 암호(순환을 자동화하는 경우 운영 환경이 아닌 환경에서 테스트하여 이로 인해 발생할 수 있는 중단을 관찰하고 계획하는 것이 좋습니다.)
AWS, Azure, vSphere 제공자의 설명서에 설명된 대로 클라우드 자격 증명에 권한이 가장 낮은 사용 권한을 적용합니다. 가능하면 관리 및 워크로드 클러스터를 별도의 (VPC) 및 방화벽 영역에서 실행합니다. Tanzu Kubernetes Grid 프로비저닝 클러스터에 대한 기본 설정입니다.
특히 제어부 노드에 대한 SSH 노드 액세스는 인프라 관리자 역할을 수행하는 소규모 사용자 집합으로 제한되어야 합니다.
SSH 액세스는 주로 관리 클러스터 자격 증명 손실과 같은 임시 액세스 부여 절차로 거의 사용되지 않아야 합니다.
인터넷에서 인증되지 않은 사용자가 클러스터 리소스에 액세스할 수 없는지 확인합니다. 위험 허용 범위가 낮은 고객은 적절한 로드 밸런서 구성으로 API 서버 포트를 인터넷에 노출하지 않고 클러스터를 배포해야 합니다.
전용 VPC 또는 다른 비 Tanzu 클라우드 워크로드에서 방화벽 뒤에 있는 Tanzu Kubernetes Grid 환경(관리 및 워크로드 클러스터)을 분리하여 수평 이동을 제한하고 손상된 클러스터의 경우 공격 표면을 줄일 수 있습니다.
클러스터 간 이중화 및 다중 지역 가용성에 대한 재해 복구 시나리오를 적용하고, 테스트하고, 검증합니다.
데이터 손상, 랜섬웨어 공격 또는 물리적 하드웨어 손상을 초래하는 자연 재해로 인한 데이터 손실로부터 복구 계획을 구현합니다.
재해 복구 계획 및 데이터 손실 복구 시나리오에 도움이 되도록 Velero를 사용하여 클러스터 리소스의 네이티브 백업 및 복원을 사용하는 것이 좋습니다.
이러한 권장 사항은 모든 클라우드 제공자의 일반 보안 지침에 추가됩니다. 클라우드 보안에 대한 일반적인 지침은 관련 클라우드 제공자의 공식 보안 설명서를 참조하십시오.
결론적으로 이 문서는 Tanzu Kubernetes Grid에 적용할 수 있는 최신 기술과 권장되는 보안 제어에 대한 전반적인 내용을 설명합니다. 당사는 원활한 개발자 경험을 원하는 요구를 염두에 두고 모든 릴리스와 함께 본질적으로 더 안전한 Tanzu Kubernetes Grid를 제공하기 위해 최선을 다하고 있습니다.
문서에 대한 피드백이 있거나 보안과 관련된 기능 요청이 있는 경우 VMware 담당자에게 문의하십시오.
다음은 일부 업스트림(CNCF/Kubernetes) 커뮤니티에 기반한 보안 중심의 리소스입니다.
Kubernetes SIG 보안 2020년 연례 보고서: 2021에 대한 업데이트가 진행 중입니다.
클라우드 네이티브 보안 백서(2020년): 2021에 대한 업데이트가 진행 중입니다.
클러스터용 클라우드 네이티브 보안 Kubernetes 관련 작업(2).
Kubernetes 보안용 4 C 모델: 이 페이지는 여기에서 높은 수준의 구조를 차용합니다.
다음은 정부 및 표준 기관에서 특별한 순서 없이 발행된 문서 목록입니다.
NSA/CISA Kubernetes 강화 가이드: 2021년 8월에 게시된 이 문서는 Kubernetes 보안과 관련된 많은 분야를 다루는 규범입니다.
NIST 애플리케이션 컨테이너 보안 가이드: 2017에 게시되었습니다.
NIST Kubernetes STIG 체크리스트: 2021년 4월에 게시되었으며, 기본 Kubernetes 플랫폼을 보호하기 위한 기술적 요구 사항의 규범 목록을 제공합니다.
CIS Kubernetes 벤치마크: 보안 구성 가이드로 널리 사용되며, 2021년 6월에 마지막으로 업데이트되었습니다.
컨테이너 플랫폼 보안 요구 사항 가이드: 미국 국방부에서는 2020년 12월에 기본 Kubernetes 플랫폼을 보호하기 위해 이 가이드를 게시했습니다.
AWS Well-Architected- 보안 요소: AWS에 대한 보안을 고려한 클라우드 아키텍처 설계를 설명하는 개략적인 문서입니다.
Azure well-architected- 보안 요소: Azure에 대한 보안을 염두에 두고 클라우드 아키텍처를 설계하는 방법을 설명하는 개략적인 문서입니다.
Google 아키텍처 프레임워크 - 보안, 개인정보보호, 규정 준수: Google Cloud에 대한 보안을 염두에 두고 클라우드 아키텍처를 설계하는 방법을 설명하는 개략적인 문서입니다.
vSphere의 강화 및 규정 준수: 보안 및 규정 준수 전략을 계획하는 데 도움이 되는 주의가 필요한 보안 및 규정 준수에 대한 개괄적인 개요입니다.