컨테이너 seccomp 프로파일 적용 점검

Linux 컨테이너에 적절한 seccomp 프로파일을 적용하고 실제 동작을 확인하세요.

설명

seccomp는 컨테이너 프로세스가 사용할 수 있는 시스템 호출을 제한해 커널 공격 표면을 줄입니다. Unconfined로 실행하면 이 제한을 사용하지 않습니다. 명시적 설정이 없더라도 kubelet이나 런타임 기본값에 따라 프로파일이 적용될 수 있으므로 실제 적용 상태를 확인해야 합니다.

잠재적 영향

  • 불필요한 시스템 호출을 허용하면 침해된 프로세스가 악용할 수 있는 기능이 늘어날 수 있습니다.
  • 애플리케이션에 맞지 않는 프로파일은 정상 작업을 차단할 수 있습니다.

해결 방법

  • 지원되는 Linux 워크로드의 security_context.seccomp_profile에 type = "RuntimeDefault"를 지정하거나 검토한 Localhost 프로파일을 사용하세요. 컨테이너별 재정의와 특권 실행도 확인하세요.
  • 프로파일 적용 후 필요한 기능을 시험하고 거부 기록을 점검하세요. seccomp와 함께 비 root 실행, 최소 capability와 보안 업데이트를 유지하세요.

예시

잘못된 과거 annotation 대신 지원되는 seccomp_profile 블록을 사용한 비교입니다. Linux 노드와 호환되는 공급자가 필요하며, 실제 배포에는 유지보수되는 이미지를 사용하세요.

변경 전

hcl
resource "kubernetes_pod" "pod" {
  metadata {
    name = "terraform-example"
  }

  spec {
    security_context {
      seccomp_profile {
        type = "Unconfined"
      }
    }

    container {
      image = "nginx:1.7.9"
      name  = "example"
    }
  }
}

변경 후

hcl
resource "kubernetes_pod" "pod" {
  metadata {
    name = "terraform-example"
  }

  spec {
    security_context {
      seccomp_profile {
        type = "RuntimeDefault"
      }
    }

    container {
      image = "nginx:1.7.9"
      name  = "example"
    }
  }
}

설명:

  • 변경 전: Unconfined로 seccomp 제한을 사용하지 않습니다.
  • 변경 후: 런타임의 기본 seccomp 프로파일을 명시적으로 요청합니다.

참조