콘텐츠로 이동

Python Security

Beacon Python 1.2.4에는 이미 beacon-otel 휠에 보안이 포함되어 있습니다. CPython 3.11~3.14에 대한 표준 GIL을 지원하며 독립형 보안 배포가 필요 없이 기존 beacon 명령을 계속 사용합니다.

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

보안 활성화

먼저 애플리케이션의 기존 가상 환경 내에서 1.2.4로 업그레이드합니다. 애플리케이션에서 사용하는 프레임워크 추가 기능을 유지하면서 선택적 beacon-profiling가 설치된 경우 이를 1.2.4로 업그레이드하세요.

pip install 'beacon-otel==1.2.4'
beacon --version
export BEACON_SECURITY_ENABLED=true
export BEACON_SECURITY_PYTHON_INCLUDE=orders
export OTEL_SERVICE_NAME=orders
export OTEL_RESOURCE_ATTRIBUTES=service.namespace=shop
export OTEL_LOGS_EXPORTER=otlp
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4317
beacon uvicorn orders.asgi:application --host 0.0.0.0 --port 8000

BEACON_SECURITY_PYTHON_INCLUDE에는 파일 시스템 경로가 아닌 Python 모듈 접두사를 입력합니다. 설정하지 않아도 활성화된 수명 주기에서 런타임 SBOM을 내보낼 수 있지만 애플리케이션 모듈 변환이나 모델링된 데이터 흐름 탐지 결과는 생성되지 않습니다.

보안 탐지 결과 및 분석

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

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

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

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

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

매개변수 참조

환경 변수 기본값 용도
BEACON_SECURITY_ENABLED false Security 수명 주기와 런타임 SBOM을 활성화합니다.
BEACON_SECURITY_PYTHON_INCLUDE 비어 있음 보안 탐지 수집에 참여할 애플리케이션 모듈 접두사를 선택합니다.
BEACON_SECURITY_PYTHON_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> 진단 디렉터리를 설정합니다.
BEACON_SECURITY_EVIDENCE_FILE 설정되지 않음 선택적 진단 JSONL 파일을 설정합니다.

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

쿠버네티스와 건니콘

애플리케이션 이미지에 beacon-otel==1.2.4를 설치하고 고정 버전 Deployment 예제를 참조하세요. 보안 사이드카나 초기화 컨테이너가 필요하지 않습니다.

Gunicorn은 작업자 포크가 발생할 때마다 원격 측정을 초기화해야 합니다. 이 버전에서 제공되는 beacon_security.gunicorn 구성을 사용하고, 이 명령 앞에 beacon를 추가하지 말고, preload_app를 활성화하지 마십시오.

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

문서 평가

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