.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
受信側で、instrumentation scope が io.beacon.security の beacon.security.sbom.inventory と beacon.security.finding レコードを確認します。schema 2、fingerprint version 1 を使用します。最初の一覧はバックグラウンドで非同期に収集し、以後は設定した更新間隔で収集します。検出結果を得るには、実際のリクエストがモデル化された入力元とセキュリティ上重要な呼び出しを経由する必要があります。起動成功、インストール状態、ローカルファイルだけでは、受信側への配信を確認できません。
Security は標準の OpenTelemetry の転送とリソース設定 を再利用します。 SDK の自動初期化はオンにしておく必要があります。自動ログをオフにすると、Security の OTLP エクスポートが停止しますが、個別に有効化されたローカル出力は引き続きレコードを受信できます。 SDK の自動初期化をオフにすると、Security バックグラウンド タスクとローカル ライターが開始されなくなります。
構成¶
| 環境変数 | 既定値 | 用途 |
|---|---|---|
BEACON_SECURITY_ENABLED |
false |
セキュリティのライフサイクルを開始します。 |
BEACON_SECURITY_SBOM_ENABLED |
true |
セキュリティがオンになっている場合、ロードされたアセンブリのリストを収集します。 |
BEACON_SECURITY_SBOM_REFRESH_SECONDS |
300 |
各取得ラウンド後に遅延する正の整数の秒数。無効な値またはゼロの場合は 300 が使用されます。 |
BEACON_SECURITY_LOCAL_OUTPUT_ENABLED |
false |
ローカル診断出力を個別にオンにします。 |
BEACON_SECURITY_OUTPUT |
システム一時ディレクトリ + /beacon-security |
スナップショットの親ディレクトリ。各プロセスは、サブディレクトリのインスタンス UUID を使用します。 |
BEACON_SECURITY_EVIDENCE_FILE |
未設定 | オプションのセキュリティ検出 JSONL パス。セキュリティとローカル出力の両方をオンにする必要があります。 |
これらのパラメータは環境変数を通じてバインドされます。出力パスを設定するだけでは、ローカル ファイルは有効になりません。 Security を非アクティブ化する場合は、enable 変数を削除するか、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 パラメーター値は、定数コマンド テンプレートを汚染しません。
これらは範囲を限定したリスク候補の観測であり、確認済みの脆弱性やブロック判断ではありません。リクエストヘッダー、Cookie、リクエスト本文、フォーム、文字列連結モデル以外の変換は対象外です。ファイルパスが許可範囲を逸脱するかどうかの判断や、SQL 方言の攻撃構文解析は行いません。検出結果のフィールドには、生のクエリパラメーター値、SQL、コマンドライン、スクリプトを出力しません。
ランタイム マニフェストには、完全な NuGet 依存関係グラフ、パッケージ バージョン マッピング、アーティファクト ハッシュ マニフェスト、到達可能性分析ではなく、確認された読み込まれた CLR アセンブリ名とアセンブリ バージョンが記述されます。ラウンドごとに最大 4,096 個の一意の非動的アセンブリ ID が収集されます。失敗したスキャンまたは不完全なスキャンは、受け入れられたスナップショットを置き換えません。 1 つの送信レコードの上限は 65,536 UTF-8 バイトであり、マニフェストは分割して送信できます。配信は依然としてベストエフォート方式です。
オプションのローカル診断¶
ローカルスナップショットが必要な場合は別途BEACON_SECURITY_LOCAL_OUTPUT_ENABLED=trueを設定してください。プロセス ディレクトリ内の inventory.jsonl は完全なリストの最新ラウンドを保存し、finding.json は最新のセキュリティ検出結果を保存します。オプションの BEACON_SECURITY_EVIDENCE_FILE はセキュリティ検出 JSONL を保存し、現在のファイル制限は 8 MiB で、.1 ローテーション ファイルを保持します。各プロセスは個別のパスを使用する必要があります。
ローカル書き込みは非同期で実行され、容量制限があります。診断データは過負荷またはファイル システム エラーにより失われる可能性がありますが、OTLP エクスポートは独立して続行されます。これらのファイルは永続的な履歴や複数プロセスの集約を提供せず、古いプロセス ディレクトリは自動的に削除されません。診断が完了したら、ローカル出力を false に復元し、保持されたファイルを個別に管理します。
モデル化されたコール、リクエストの予算、契約ソースについては バージョン別 Security リファレンス を参照し、リリースの受け入れと制限については リリースノート を参照してください。