InfoGrab DocsInfoGrab Docs

태스크 러너 보안 강화

셀프 호스팅 n8n 인스턴스의 태스크 러너를 강화하여 격리 수준을 높이는 방법을 설명합니다.

태스크 러너 는 Code node 의 코드 실행을 담당합니다. Code node 실행은 안전하지만, 다음 권장 사항을 따라 태스크 러너를 더욱 강화할 수 있습니다. 외부 모드에서 사이드카로 태스크 러너 실행 # 코어 n8n 프로세스와 Code node의 코드 간 격리 수준을 높이려면, 태스크 러너를 외부 모드 로 실행하세요. 외부 태스크 러너는 별도의 컨테이너로 실행되어 Code node에 정의된 JavaScript를 완전히 격리된 환경에서 실행합니다. distroless 이미지 사용 # 공격 표면을 줄이려면 distroless Docker 이미지 변형을 사용하세요. Distroless 이미지는 애플리케이션과 런타임 의존성만 포함하며, 런타임에 불필요한 패키지 관리자, 셸, 기타 유틸리티는 제외됩니다. distroless 이미지를 사용하려면 Docker 태그에 -distroless 접미사를 추가하세요. 예: 2.4.6-distroless . nobody 사용자로 실행 # 보안 강화를 위해 사용자 및 그룹 ID 65532의 비권한 nobody 사용자로 태스크 러너를 실행하도록 설정하세요. 이렇게 하면 컨테이너 프로세스가 루트 권한으로 실행되는 것을 방지하고 보안 취약점으로 인한 잠재적 피해를 제한합니다. 읽기 전용 루트 파일시스템 설정 # 읽기 전용 루트 파일시스템 을 설정하여 런타임에 컨테이너 파일시스템이 수정되지 않도록 방지하세요. 이를 통해 시스템 파일을 수정하려는 악성 코드를 차단할 수 있습니다. 태스크 러너는 작동을 위해 일부 임시 저장소가 필요합니다. 이를 지원하기 위해 최소한의 emptyDir 볼륨을 /tmp 에 마운트하세요. 워크플로에 더 많은 임시 공간이 필요한 경우 볼륨 크기를 적절히 늘리세요. AppArmor 프로파일 설정 # 심층 방어 조치로, AppArmor {:target="_blank" .external-link} 프로파일을 적용하여 태스크 러너 컨테이너가 environ 및 mounts 와 같은 민감한 /proc 파일을 읽지 못하도록 방지하세요. 이러한 파일은 컨테이너 내부에서 실행 중인 코드에 시크릿 및 자격 증명을 포함한 환경 변수를 노출할 수 있습니다. 프로파일을 Pod에 적용하는 방법은 쿠버네티스 AppArmor 문서 {:target="_blank" .external-link}를 참고하세요. 다음 규칙을 AppArmor 프로파일에 추가하세요: audit deny @{PROC}/[0-9]*/{environ,mounts} rwl, 이 규칙은 프로세스별 environ 및 mounts 파일에 대한 읽기, 쓰기, 링크 시도를 거부하고 기록합니다.