콘텐츠로 이동

Ruby Security

Beacon Ruby v1.1.0는 소스 패키지 외부에 beacon-security-0.1.0.gem를 배포합니다. 보안은 기본적으로 꺼져 있으며 Rack 미들웨어 및 SDK의 명시적인 구성이 필요합니다. 먼저 Ruby 다운로드 가이드를 눌러 4개의 릴리스 자산을 확인하세요. 보석은 RubyGems로 푸시되지 않으며 런타임이 의존하는 OTel 보석은 여전히 RubyGems에서 제공됩니다.

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

애플리케이션 구성

다운로드한 gem을 설치한 후 애플리케이션 Gemfile에 다음을 추가하세요.

gem 'beacon-security', '= 0.1.0'
gem 'opentelemetry-sdk'
gem 'opentelemetry-logs-sdk'
gem 'opentelemetry-exporter-otlp-logs'

보안을 시작하기 전에 랙 및 선택적 클라이언트를 로드합니다. Rack 애플리케이션의 config.ru에서 애플리케이션의 OpenTelemetry 공급자를 구성하고 액세스합니다.

require 'rack'
require 'net/http'
# require 'pg'
# require 'mysql2'
require 'opentelemetry/sdk'
require 'opentelemetry/sdk/logs'
require 'opentelemetry-exporter-otlp-logs'
require 'beacon/security'

OpenTelemetry::SDK.configure
security = Beacon::Security.start
use Beacon::Security::Middleware, runtime: security
run MyApplication

링크 컨텍스트를 연결하려면 OTel Rack 서버 측 Span 미들웨어 내부에 보안 미들웨어를 배치하세요. 애플리케이션의 기존 OpenTelemetry 설정을 사용하여 서비스/리소스 ID 및 로그 싱크를 구성합니다.

BEACON_SECURITY_ENABLED=true OTEL_LOGS_EXPORTER=otlp OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:9529/otel bundle exec rackup

각 작업자는 포크 후 한 번 시작됩니다. 종료할 때 먼저 security.force_flush 및 security.shutdown를 실행한 다음 애플리케이션 OTel 공급자를 새로 고치고 닫습니다. 지연 로드 클라이언트는 명시적으로 Beacon::Security::Hooks.install를 호출해야 합니다.

구성 및 범위

변하기 쉬운 기본값 의미
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-output 진단 카탈로그.
BEACON_SECURITY_EVIDENCE_FILE 설정되지 않음 선택적 결과 JSONL은 로컬 출력이 활성화된 경우에만 유효합니다.

랙 플랫 쿼리 매개변수와 요청 헤더 값을 일부 PG/mysql2 SQL 템플릿, 커널 시스템/생성, 파일 및 Net::HTTP 호출과 연관시킵니다. SQL 바인드 매개변수 값은 템플릿 매칭에 참여하지 않으며 인증 및 쿠키 헤더는 제외됩니다. 원시 요청 값, SQL 또는 셸 텍스트는 내보내지지 않습니다. 애플리케이션에서 제공하는 라우팅 메타데이터는 정적 템플릿이어야 하며 원래 요청 경로를 사용할 수 없습니다.

이는 예산이 제한된 하위 문자열 연결입니다. 관련되지 않은 동일한 문자열이 일치할 수 있으며 변환된 값이 관련되지 않을 수 있습니다. 스키마 v2, 지문 v1, precision=approximate, collection_complete=false 및 unknown 공격 증거를 사용하여 보안 탐지 결과. 이는 관찰이 호출되었음을 나타내며 취약점을 확인하지는 않습니다. 요청 본문, 비동기 전파, 스트리밍 응답 본문, 새니타이저/공격 분석, Rails 관련 적응 및 기타 클라이언트 API는 모델 범위를 벗어납니다.

각 요청은 각각 4,096바이트(총 65,536바이트)의 최대 64개 입력 소스와 128개의 지문 및 1024개의 민감한 호출 관찰을 유지합니다. 65,536바이트를 초과하는 쿼리 또는 호출 입력은 분석에 포함되지 않습니다. 전달은 대기열 1024개, 각각 65,536바이트로 제한되며 대기열이 가득 차면 재생 없이 삭제됩니다. 런타임 목록은 최대 10,000개의 활성화된 보석을 관찰하고 변경되지 않은 목록을 주기적으로 다시 보냅니다. 큰 목록이 조각화되면 소비자는 목록을 교체하기 전에 모든 조각을 수집해야 합니다. Linux procfs 및 부팅 시계는 프로세스 시간을 제공합니다. 지원되지 않는 시간 소스는 매니페스트를 보내지 않습니다. Collector 전달은 최선의 노력을 기반으로 하며 백엔드 검증을 의미하지 않습니다.

확인 및 종료

소스 코드가 압축 해제된 security 디렉터리에 잠긴 개발 종속성을 설치한 다음 Docker와 캐시된 Collector 0.135.0 이미지를 사용하여 python3 test/collector_smoke.py를 실행합니다. 개발 종속성에는 기본 데이터베이스 클라이언트가 포함되며 MySQL에는 클라이언트 개발 헤더 파일과 라이브러리가 필요합니다. 이 검사는 실제 결과/인벤토리 로그, 범위, 리소스 ID, 이벤트 이름 및 추적 연결을 확인합니다.

Linux CRuby 3.3/3.4/4.0을 통한 보안 CI, CRuby 3.3.12를 사용한 로컬 수집기 수용. JRuby, 기타 운영 체제, DataKit 및 백엔드 웨어하우징은 검증되지 않았습니다. 자세한 내용은 고정 버전 참조 및 검증 기록를 참조하세요.

수신된 기록이 없는 경우 활성화 구성, 미들웨어 위치, 클라이언트 로딩 순서를 확인하고 실제 로그 내보내기 및 수신 파이프라인을 적용합니다. 결과가 모델의 입력과 일치해야 하며 이벤트가 없다는 것은 안전을 의미하지 않습니다. BEACON_SECURITY_ENABLED=false를 설정하고 다시 시작하여 종료합니다. 롤백 시 이전 소스 코드/gem 및 애플리케이션 잠금 파일을 복원합니다. v1.0.0에는 보안이 포함되어 있지 않습니다.

문서 평가

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