콘텐츠로 이동

Node.js Security

Beacon Node.js 2.0.1에는 이미 @beacon-observability/nodejs에 보안이 포함되어 있습니다. 응용 프로그램은 일반적으로 이 전체 패키지만 설치하면 됩니다. 보안은 범위가 지정된 소스 변환을 위해 동기화 모듈 후크를 사용하므로 Node.js 22.22.3+ 또는 24.11.1+가 필요합니다.

먼저 Security 수신기 설정에 따라 DataKit 로그 파이프라인을 준비합니다. 수신측 검증은 실제 수신된 기록을 기반으로 해야 합니다.

보안 활성화

ESM --import 사전 로드를 반드시 사용해야 합니다. CommonJS --require 사전 로드로 일반 텔레메트리와 Profile을 시작할 수 있지만 Security 소스 변환은 활성화할 수 없습니다.

npm install @beacon-observability/nodejs@2.0.1

export NODE_OPTIONS="--import @beacon-observability/nodejs/register"
export BEACON_SECURITY_ENABLED=true
export BEACON_SECURITY_NODE_INCLUDE=/srv/app
export OTEL_SERVICE_NAME=orders
export OTEL_RESOURCE_ATTRIBUTES=service.namespace=shop
export OTEL_LOGS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
export OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:9529/otel
node /srv/app/server.mjs

BEACON_SECURITY_NODE_INCLUDE는 애플리케이션 소스 루트를 선택합니다. 의존 패키지, Node.js 내장 모듈 및 명시적으로 제외한 루트는 변환되지 않습니다.

보안 탐지 결과 및 분석

요청별 로깅 및 요청 수준 공격 증거는 1.3.0부터 사용할 수 있으며 스키마 v2는 2.0.0부터 사용할 수 있습니다. 이 페이지는 2.0.1을 사용하며 occurrence_id로 요청 레코드를 식별합니다. 자세한 증거 샘플링은 요청 레코드 내보내기 및 추적 샘플링과 별개입니다. 빈 증거 배열은 생략할 수 있으며 샘플링 자체는 잘림을 나타내지 않습니다. 온라인 로드에는 누적 발생 횟수가 없습니다. 소비자는 중복 제거 후 수신된 항목을 집계해야 합니다. unknown, no_evidence, suspected, 증거 업그레이드 및 전달 제한 사항에 대해 알아보려면 보안 탐지 결과와 증거를 참조하세요. 어떤 상태도 성공적인 악용을 보장하지 않습니다.

SQL 구문 분석의 기본값은 unknown입니다. 호환 가능한 SQL에 대해서만 BEACON_SECURITY_ANALYSIS_SQL_DIALECT=ansi를 설정하여 따옴표 붙은 문자열 및 식별자, 큰따옴표 이스케이프, 숫자, 단순 연산자 및 주석의 제한된 어휘 하위 집합을 활성화합니다. 이것은 완전한 파서가 아닙니다. 기타 방언, 백슬래시 또는 달러 인용, 지원되지 않는 구문, 부정확한 오염, 8,192개 이상의 UTF-16 코드 단위 또는 64개 이상의 오염 마커가 포함된 입력은 unknown로 남아 있습니다. 준비된 문을 별도로 처리해야 하기 전에 템플릿 바인딩 값을 수정하고 신뢰할 수 없는 템플릿을 연결하는 문제를 해결했습니다.

쉘 구문 분석은 간단한 POSIX sh, bash, dash, ksh, zsh 명령, 따옴표, 이스케이프 및 제어 구분 기호를 지원합니다. 확장, 리디렉션, 복합 구문 및 기타 쉘은 unknown를 유지합니다. 일반 argv는 고정 대상의 경로/쿼리 입력과 독립적인 관찰입니다. 네트워크 허용 목록 또는 파일 시스템 루트 디렉터리 정책이 구현되지 않았으며 관련 경계 판단은 여전히 unknown입니다. 정규화는 보안을 의미하지 않습니다. 바이트 문자열은 알려진 텍스트 방언에 대해 구문 분석되지 않습니다. 자세한 내용은 고정 버전 분석 참조를 참조하세요.

공격 증거 발견 없이 내보내기

2.0.1은 기본적으로 no_evidence 결과를 OpenTelemetry 로그 및 증거 JSONL로 내보내지 않습니다. 내보내기를 재개하려면 BEACON_SECURITY_EXPORT_NO_EVIDENCE_ENABLED=true를 설정하세요. unknown, suspected는 계속 내보낼 수 있으며 SBOM은 영향을 받지 않습니다. 필터링은 대기열에 합류하기 전에 발생하며 내보내기 손실로 계산되지 않습니다. 내부 감지, 동일한 요청 중복 제거 및 증거 업그레이드는 계속 수행됩니다. 로컬 검색 스냅샷 및 범위 요약은 내보내지 않은 관찰을 보존합니다. no_evidence는 안전성을 나타내지 않으며, 내보낸 이벤트가 없다고 해서 위험이 감지되지 않았다는 의미는 아닙니다.

매개변수 참조

환경 변수 기본값 용도
BEACON_SECURITY_ENABLED false Security 수명 주기와 런타임 SBOM을 활성화합니다.
BEACON_SECURITY_NODE_INCLUDE 비어 있음 보안 탐지 수집에 참여할 애플리케이션 소스 루트를 선택합니다.
BEACON_SECURITY_NODE_EXCLUDE 비어 있음 제외할 소스 루트. include보다 우선합니다.
BEACON_SECURITY_FINDINGS_SAMPLE_SECONDS 300 각 검색에 대한 완전한 증거 샘플링 간격(초)입니다.
BEACON_SECURITY_ANALYSIS_SQL_DIALECT unknown ansi는 지원되는 SQL 어휘의 하위 집합을 활성화합니다.
BEACON_SECURITY_EXPORT_NO_EVIDENCE_ENABLED false 또한 no_evidence 이벤트를 내보냅니다.
BEACON_SECURITY_SBOM_ENABLED true Security가 활성화되면 런타임 SBOM을 수집합니다.
BEACON_SECURITY_LOCAL_OUTPUT_ENABLED false 프로세스 로컬 진단 파일을 활성화합니다.
BEACON_SECURITY_OUTPUT ./beacon-security-output/<instance-id> 진단 디렉터리를 설정합니다.

보안 탐지 결과와 SBOM 레코드는 OpenTelemetry Logs 파이프라인을 사용합니다. 로컬 출력은 진단 증거이며 기본적으로 비활성화 상태를 유지합니다.

Kubernetes

애플리케이션 이미지에 전체 패키지를 설치하고 고정 버전 Deployment 예제를 참조하세요. 일반 애플리케이션 컨테이너는 ESM 사전 로딩 및 환경 변수만 설정하면 되며 보안 사이드카 또는 초기화 컨테이너가 필요하지 않습니다.

일반 제로 코드 원격 측정을 유지하면서 보안을 끄려면 BEACON_SECURITY_ENABLED를 제거하거나 false로 설정하십시오.

문서 평가

이 페이지가 도움이 되었나요?