이 문서에서는 Google Distributed Cloud (GDC) 오프라인 Kubernetes 클러스터의 노드 격리의 이점과 제한사항을 설명합니다. 전용 노드 풀을 사용한 노드 격리는 클러스터 내에서 특정 포드가 실행되는 위치를 정확하게 제어할 수 있도록 하여 클러스터 보안을 강화합니다.
워크로드 격리는 다음과 같은 이점을 제공합니다.
- Kubernetes 클러스터에서 권한 에스컬레이션 공격의 위험이 감소합니다.
- 추가 리소스가 필요한 포드를 더 많이 제어할 수 있습니다.
이러한 경우 더 많은 제어와 최적화를 위해 전용 노드 풀에서 컨테이너 워크로드를 격리하는 것이 좋습니다. 노드 격리에 필요한 추가 유지관리 비용에 대해 정보에 입각한 결정을 내릴 수 있도록 제한사항도 고려해야 합니다.
이 문서는 Kubernetes 클러스터의 노드 풀을 관리하는 플랫폼 관리자 그룹 내 IT 관리자, 컨테이너 워크로드를 관리하는 애플리케이션 운영자 그룹 내 애플리케이션 개발자 등의 독자를 대상으로 합니다. 자세한 내용은 GDC 오프라인 문서의 대상을 참고하세요.
워크로드를 격리해야 하는 이유는 무엇인가요?
필수는 아니지만 노드 풀을 특정 컨테이너 워크로드에 전용으로 지정하면 잠재적인 문제를 방지할 수 있습니다. 하지만 이 접근 방식은 더 많은 관리가 필요하며 필수가 아닌 경우가 많습니다.
Kubernetes 클러스터는 권한이 있는 GDC 관리 워크로드를 사용하여 측정항목 수집과 같은 특정 클러스터 기능과 기능을 사용 설정합니다. 이러한 워크로드에는 클러스터에서 올바르게 실행될 수 있는 특수한 권한이 부여됩니다.
노드에 배포하는 워크로드는 악의적인 항목에 의해 손상될 가능성이 있습니다. 권한이 있는 GDC 관리 워크로드와 함께 이러한 워크로드를 실행하면 손상된 컨테이너를 침입한 공격자가 노드에서 권한이 있는 워크로드의 사용자 인증 정보를 사용하여 클러스터의 권한을 에스컬레이션할 수 있습니다.
전용 노드 풀은 추가 메모리 또는 추가 로컬 디스크 공간 등 다른 것보다 더 많은 리소스가 필요한 포드를 예약해야 할 경우에도 유용합니다.
다음 메커니즘을 사용하여 전용 노드 풀에서 워크로드를 예약할 수 있습니다.
- 노드 taint: Kubernetes 클러스터에 해당 톨러레이션(toleration) 없이 특정 노드에 워크로드를 예약하지 않도록 알립니다.
- 노드 어피니티: 전용 노드에서 특정 포드를 예약하도록 Kubernetes 클러스터에 알립니다.
노드 격리는 최소 권한의 컨테이너 및 서비스 계정과 같은 다른 격리 기능과 함께만 사용해야 하는 심층 방어 메커니즘입니다. 노드 격리는 모든 에스컬레이션 경로를 포함하지 않을 수 있으며 기본 보안 경계로 사용해서는 안 됩니다.
노드 격리 작동 방식
워크로드의 노드 격리를 구현하려면 다음을 수행해야 합니다.
워크로드의 노드 풀을 taint하고 라벨을 지정합니다.
해당 톨러레이션(toleration) 및 노드 어피니티 규칙으로 워크로드를 업데이트합니다.
이 가이드는 클러스터에서 노드 풀 한 개로 시작한다고 가정합니다. 노드 taint 외에 노드 어피니티를 반드시 사용할 필요는 없지만 예약을 보다 효율적으로 제어할 수 있으므로 이를 사용하는 것이 좋습니다.
추천 및 권장사항
노드 격리를 설정한 후에는 다음을 수행하는 것이 좋습니다.
새 노드 풀을 만들 때 노드 풀에 자체 taint를 추가하여 대부분의 GDC 관리 워크로드가 이러한 노드에서 실행되지 않도록 합니다.
타사 도구를 설치할 때와 같이 새 워크로드를 클러스터에 배포할 때마다 포드에 필요한 권한을 감사합니다. 가능하면 공유 노드에 승격된 권한을 사용하는 워크로드를 배포하지 마세요.
제한사항
격리된 노드 풀에서 실행되는 포드에는 다음 제한사항이 적용됩니다.
공격자는 여전히 손상된 노드에서 서비스 거부 (DoS) 공격을 시작할 수 있습니다.
권한이 승격되고 taint를 허용할 수 있는
DaemonSet
리소스를 배포하는 경우, 해당 포드는 손상된 노드에서 권한 에스컬레이션을 위한 경로가 될 수 있습니다.손상된 노드는 클러스터의 모든 포드 및 네임스페이스를 포함하여 여러 리소스를 계속 읽을 수 있습니다.
손상된 노드는 해당 노드에서 실행되는 모든 포드에서 사용되는 보안 비밀과 사용자 인증 정보에 액세스할 수 있습니다.
손상된 노드는 계속해서 이그레스 네트워크 정책을 우회할 수 있습니다.
별도의 노드 풀을 사용하여 워크로드를 격리하면 비용 효율성, 자동 확장, 리소스 사용률에 영향을 미칠 수 있습니다.
일부 GDC 관리 워크로드는 클러스터의 모든 노드에서 실행되어야 하며 모든 taint를 허용하도록 구성됩니다.