InfoGrab DocsInfoGrab Docs

태스크 러너 보안 강화

요약

태스크 러너는 Code node의 코드 실행을 담당합니다. 코어 n8n 프로세스와 Code node의 코드 간 격리 수준을 높이려면, 태스크 러너를 외부 모드로 실행하세요. 공격 표면을 줄이려면 distroless Docker 이미지 변형을 사용하세요.

태스크 러너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} 프로파일을 적용하여 태스크 러너 컨테이너가 environmounts와 같은 민감한 /proc 파일을 읽지 못하도록 방지하세요. 이러한 파일은 컨테이너 내부에서 실행 중인 코드에 시크릿 및 자격 증명을 포함한 환경 변수를 노출할 수 있습니다. 프로파일을 Pod에 적용하는 방법은 쿠버네티스 AppArmor 문서{:target="_blank" .external-link}를 참고하세요.

다음 규칙을 AppArmor 프로파일에 추가하세요:

audit deny @{PROC}/[0-9]*/{environ,mounts} rwl,

이 규칙은 프로세스별 environmounts 파일에 대한 읽기, 쓰기, 링크 시도를 거부하고 기록합니다.

태스크 러너 보안 강화

n8n v2.25
원문 보기
요약

태스크 러너는 Code node의 코드 실행을 담당합니다. 코어 n8n 프로세스와 Code node의 코드 간 격리 수준을 높이려면, 태스크 러너를 외부 모드로 실행하세요. 공격 표면을 줄이려면 distroless Docker 이미지 변형을 사용하세요.

태스크 러너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} 프로파일을 적용하여 태스크 러너 컨테이너가 environmounts와 같은 민감한 /proc 파일을 읽지 못하도록 방지하세요. 이러한 파일은 컨테이너 내부에서 실행 중인 코드에 시크릿 및 자격 증명을 포함한 환경 변수를 노출할 수 있습니다. 프로파일을 Pod에 적용하는 방법은 쿠버네티스 AppArmor 문서{:target="_blank" .external-link}를 참고하세요.

다음 규칙을 AppArmor 프로파일에 추가하세요:

audit deny @{PROC}/[0-9]*/{environ,mounts} rwl,

이 규칙은 프로세스별 environmounts 파일에 대한 읽기, 쓰기, 링크 시도를 거부하고 기록합니다.