콘텐츠로 이동

.NET Security

Beacon .NET 1.1.1에는 기존 제로 코드 패키지에 실험적인 Security가 포함되어 있습니다. 일반 beacon-dotnet run 실행기를 사용하면 기본적으로 꺼져 있습니다.

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

활성화 및 확인

수신 측에서는 OTLP 로그 파이프라인을 구성한 다음 애플리케이션을 시작해야 합니다.

export OTEL_SERVICE_NAME=my-dotnet-service
export OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4317
export OTEL_EXPORTER_OTLP_PROTOCOL=grpc
export OTEL_LOGS_EXPORTER=otlp
export BEACON_SECURITY_ENABLED=true
beacon-dotnet run dotnet MyApp.dll

수신 측에서는 스키마 2와 지문 버전 1을 사용하여 계측 범위 io.beacon.security로 beacon.security.sbom.inventory 및 beacon.security.finding 레코드를 확인합니다. 초기 인벤토리는 백그라운드에서 비동기식으로 수집됩니다. 후속 컬렉션에서는 구성된 새로 고침 지연을 사용합니다. 보안 탐지 결과에는 모델링된 원본과 민감한 호출을 통과하는 실제 요청이 필요합니다. 성공적인 시작, 설치 상태 및 로컬 파일은 수신 측에서 데이터를 수신했는지 확인할 수 없습니다.

Security는 표준 OpenTelemetry 전송 및 리소스 설정를 재사용합니다. 자동 SDK 초기화는 켜져 있어야 합니다. 자동 로그를 끄면 Security의 OTLP 내보내기가 중지되지만 개별적으로 활성화된 로컬 출력은 계속해서 레코드를 수신할 수 있습니다. 자동 SDK 초기화를 끄면 Security 백그라운드 작업 및 로컬 작성기가 시작되지 않습니다.

구성

환경 변수 기본값 용도
BEACON_SECURITY_ENABLED false 보안 수명주기를 시작합니다.
BEACON_SECURITY_SBOM_ENABLED true 보안이 켜져 있을 때 로드된 어셈블리 목록을 수집합니다.
BEACON_SECURITY_SBOM_REFRESH_SECONDS 300 각 획득 라운드 후 지연되는 양의 정수(초)입니다. 잘못된 값이거나 0은 300을 사용합니다.
BEACON_SECURITY_LOCAL_OUTPUT_ENABLED false 로컬 진단 출력을 개별적으로 켜십시오.
BEACON_SECURITY_OUTPUT 시스템 임시 디렉토리 + /beacon-security 스냅샷 상위 디렉토리; 각 프로세스는 하위 디렉터리에 해당 인스턴스 UUID를 사용합니다.
BEACON_SECURITY_EVIDENCE_FILE 설정되지 않음 선택적 보안 탐지 결과 JSONL 경로. 보안 및 로컬 출력을 모두 켜야 합니다.

이러한 매개변수는 환경 변수를 통해 바인딩됩니다. 출력 경로만 설정하면 로컬 파일이 활성화되지 않습니다. Security를 비활성화할 때 활성화 변수를 삭제하거나 false로 설정한 후 애플리케이션을 다시 시작하세요.

적용 범위 및 호환성

Security 데이터 흐름 및 내보내기 테스트는 Linux glibc x64, Windows x64, macOS ARM64의 CoreCLR .NET 8, 9 및 10을 다룹니다. .NET Framework 런타임 동작, AppDomain 간 ID, 기타 Security 아키텍처 및 프로덕션 성능은 여전히 유효성 검사 범위를 벗어납니다. 다른 플랫폼에 대한 다운로드 가능한 아카이브 제공은 해당 플랫폼에 대한 Security 수락을 구성하지 않습니다.

이 모델은 문자열 개체 식별자로 ASP.NET Core 쿼리 매개 변수 값을 추적하고 2문자열, 3문자열 및 4문자열 String.Concat 오버로드를 통한 전파를 지원합니다. 지원되는 중요한 호출에는 File.ReadAllText(string) 파일 읽기, ADO.NET 텍스트 명령 템플릿, 비동기 HTTP 대상 및 Process.Start 호출이 포함됩니다. 바인딩된 SQL 매개변수 값은 상수 명령 템플릿을 오염시키지 않습니다.

이는 확인된 취약점이나 차단 결정이 아닌 제한된 후보 위험 관찰입니다. 요청 헤더, 쿠키, 요청 본문, 양식 및 접합 모델 외부의 변환은 다루지 않습니다. 모델은 파일 경로가 범위를 벗어났는지 여부를 확인하지 않으며 SQL 언어 공격 구문을 구문 분석하지도 않습니다. 보안 탐지 결과 필드는 원시 쿼리 매개변수 값, SQL, 명령줄 또는 스크립트를 내보내지 않습니다.

런타임 매니페스트는 전체 NuGet 종속성 그래프, 패키지 버전 매핑, 아티팩트 해시 매니페스트 또는 연결 가능성 분석이 아닌 관찰된 로드된 CLR 어셈블리 이름 및 어셈블리 버전을 설명합니다. 라운드당 최대 4,096개의 고유한 비동적 어셈블리 ID를 캡처합니다. 실패했거나 불완전한 스캔은 허용된 스냅샷을 대체하지 않습니다. 단일 전송 레코드의 상한은 65,536 UTF-8 바이트이며 매니페스트는 조각으로 전송될 수 있습니다. 배송은 여전히 최선을 다하는 방식입니다.

선택적 로컬 진단

로컬 스냅샷이 필요한 경우 BEACON_SECURITY_LOCAL_OUTPUT_ENABLED=true를 별도로 설정하세요. 프로세스 디렉터리의 inventory.jsonl는 전체 목록의 최신 라운드를 저장하고, finding.json는 최신 보안 탐지 결과를 저장합니다. 선택 사항인 BEACON_SECURITY_EVIDENCE_FILE는 보안 탐지 결과 JSONL을 저장하고, 현재 파일 제한은 8MiB이며, .1 순환 파일을 유지합니다. 각 프로세스는 별도의 경로를 사용해야 합니다.

로컬 쓰기는 비동기식으로 수행되며 용량 제한이 있습니다. 과부하 또는 파일 시스템 오류로 인해 진단 데이터가 손실될 수 있지만 OTLP 내보내기는 독립적으로 계속됩니다. 이러한 파일은 지속적인 기록이나 다중 프로세스 집계를 제공하지 않으며 오래된 프로세스 디렉터리는 자동으로 삭제되지 않습니다. 진단이 완료되면 로컬 출력을 false로 복원하고 보관된 파일을 별도로 관리합니다.

모델링된 호출, 요청 예산 및 계약 소스는 버전별 Security 참조를 참조하고, 출시 승인 및 제한 사항은 릴리스 노트를 참조하세요.

문서 평가

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