Splunk 検出ルールを Microsoft Sentinel に移行する
Splunk 検出ルールは、セキュリティ情報イベント管理 (SIEM) コンポーネントであり、Microsoft Sentinel の分析ルールと比較されます。 この記事では、それらを特定、比較し、Microsoft Sentinel に移行するための概念について説明します。 まずは、SIEM 移行エクスペリエンスから開始することをお勧めします。これにより、自動変換先のすぐに使用できる (OOTB) 分析ルールが特定されます。
Splunk Observability のデプロイを移行する場合は、Splunk から Azure Monitor ログに移行する方法の詳細を確認してください。
監査ルール
Microsoft Sentinel では、機械学習分析を使用して、忠実で実用的なインシデントが作成されます。 既存の Splunk 検出の中には、Microsoft Sentinel では冗長になるものがあるため、すべてを無条件には移行しないでください。 既存の検出ルールを特定するときに、これらの考慮事項を確認します。
- ビジネスの優先度と効率を考慮して、ルールの移行を正当化するユース ケースを選択してください。
- Microsoft Sentinel ルールの種類を理解していることを確認します。
- ルールの用語を理解していることを確認します。
- 過去 6 ~ 12 か月の間にアラートが発生していない古くなったルールを確認し、それがまだ有効かどうかを判断します。
- 日常的に無視する低レベルの脅威やアラートを排除します。
- 接続されているデータ ソースと、データ接続方法を確認します。 Microsoft Sentinel Analytics では、ルールが有効になる前に、そのデータ型が Log Analytics ワークスペースに存在している必要があります。 データ収集の会話を見直して、検出を予定しているユース ケース全体のデータの深さと幅を確認します。 次に、SIEM 移行エクスペリエンスを使用して、データ ソースが適切にマップされていることを確認します。
ルールの移行
移行する Splunk 検出を特定したら、移行プロセスに関する次の考慮事項を確認します。
- Microsoft Sentinel の OOTB 分析ルールの既存の機能を、現在のユース ケースと比較します。 SIEM 移行エクスペリエンスを使用して、どの Splunk 検出が、OOTB テンプレートに自動的に変換されるかを確認します。
- OOTB 分析ルールに適合しない検出を変換します。 Splunk の検出を自動的に変換する最善の方法は、SIEM 移行エクスペリエンスを使用することです。
- SOC Prime Threat Detection Marketplace などのコミュニティ リソースを調べて、ユース ケースに対応するアルゴリズムをさらに見つけます。
- 組み込みのルールが使用できない場合、または自動的に変換されない場合は、手動で検出を変換します。 新しい KQL クエリを作成し、ルール マッピングを確認します。
詳細については、検出ルールを移行するためのベスト プラクティスを参照してください。
ルール移行の手順
移行するルールごとにテスト システムが配置されていることを確認します。
完全なテスト シナリオとスクリプトを含めて、移行したルールの検証プロセスを準備します。
移行したルールをテストするのに役立つリソースがチームにあることを確認します。
必要なデータ ソースが接続されていることを確認し、データ接続方法を確認します。
Microsoft Sentinel で OOTB テンプレートとして検出が利用可能かどうかを確認します。
SIEM 移行エクスペリエンスを使用して、OOTB テンプレートの翻訳とインストールを自動化します。
詳細については、SIEM 移行エクスペリエンスを使用する方法に関するページを参照してください。
ユース ケースが検出に反映されていない場合は、OOTB ルール テンプレートを使用して、自身のワークスペースのルールを作成します。
Microsoft Sentinel で、[コンテンツ ハブ] に移動します。
分析ルール テンプレートのコンテンツ タイプをフィルター処理します。
対応する各コンテンツ ハブ ソリューションまたはスタンドアロン分析ルール テンプレートを検索し、インストール/更新します。
詳細については、「難しい設定なしで脅威を検出する」を参照してください。
Microsoft Sentinel の OOTB ルールの対象になっていない検出がある場合は、最初に SIEM 移行エクスペリエンスで自動翻訳を試します。
OOTB ルールでも SIEM 移行でも検出が完全に変換されない場合は、ルールを手動で作成します。 このような場合は、次の手順を使用してルールを作成します。
ルールで使用するデータ ソースを特定します。 データ ソースとデータ テーブルの間にマッピング テーブルを作成して、クエリを実行する Microsoft Sentinel テーブルを特定します。
ルールで使用するデータの属性、フィールド、またはエンティティを特定します。
ルールの条件とロジックを特定します。 この段階で、KQL クエリを作成する方法のサンプルとして、ルール テンプレートを検索することを検討します。
フィルター、相関関係ルール、アクティブ リスト、参照セット、ウォッチリスト、検出の異常、集計などを検討してください。 レガシ SIEM から提供されている参照を使用して、クエリ構文を最適にマップする方法を理解することができます。
トリガーの条件とルール アクションを特定し、KQL クエリを構築して確認します。 クエリを確認するときは、KQL の最適化に関するガイダンス リソースを検討してください。
関連する各ユース ケースでルールをテストします。 期待される結果が得られない場合は、KQL を確認して編集し、もう一度テストします。
問題がなければ、移行されたルールを考慮します。 必要に応じて、ルール アクションのプレイブックを作成します。 詳細については、「Microsoft Sentinel のプレイブックを使用して脅威への対応を自動化する」を参照してください。
分析ルールの詳細について、以下を確認してください。
- 脅威を検出するためのカスタム分析規則を作成します。 アラートのグループ化を使用して、特定の期間内に発生したアラートをグループ化することで、アラートの疲労を減らすことができます。
- データ フィールドを Microsoft Sentinel のエンティティにマップして、SOC エンジニアが調査中に追跡する証拠の一部としてエンティティを定義できるようにします。 また、エンティティ マッピングを使用すると、SOC アナリストは、時間と労力を削減するのに役立つ、直感的な [調査グラフ] (investigate-cases.md#use-the-investigation-graph-to-deep-dive) を活用することができます。
- 証拠を使用して、インシデントのプレビュー ウィンドウで特定のインシデントに関連付けられているイベント、アラート、ブックマークを表示する方法の例として、UEBA データを使用してインシデントを調査します。
- Kusto クエリ言語 (KQL)。データを処理して結果を返すために、Log Analytics データベースに読み取り専用の要求を送信するために使用できます。 KQL は、Microsoft Defender for Endpoint や Application Insights など、他の Microsoft サービスでも使用されます。
ルールの用語を比較する
この表は、Microsoft Sentinel の Kusto クエリ言語 (KQL) に基づくルールの概念を、検索処理言語 (SPL) に基づく Splunk 検出と比較して明確にするのに役立ちます。
Splunk | Microsoft Sentinel | |
---|---|---|
規則の種類 | • スケジュール • リアルタイム |
• スケジュール済クエリ • フュージョン • Microsoft セキュリティ • 機械学習 (ML) による行動分析 |
条件 | SPL で定義する | KQL で定義する |
トリガーの条件 | • 結果の数 • ホストの数 • ソースの数 • カスタム |
しきい値: クエリ結果の数 |
操作 | • トリガーされたアラートに追加する • イベントのログ記録 • 結果を検索に出力する • その他 |
• アラートまたはインシデントを作成する • Logic Apps と統合する |
ルール サンプルのマップと比較
これらのサンプルを使用して、さまざまなシナリオで Splunk のルールを比較し、 Microsoft Sentinel にマップします。
一般的な検索コマンド
SPL コマンド | 説明 | KQL オペレーター | KQL 例 |
---|---|---|---|
chart/ timechart |
時系列グラフの表形式出力の結果を返します。 | render 演算子 | … | render timechart |
dedup |
指定した条件に一致する後続の結果を削除します。 | • distinct • summarize |
… | summarize by Computer, EventID |
eval |
式を計算します。 一般的な eval コマンドについて説明します。 |
extend | T | extend duration = endTime - startTime |
fields |
検索結果からフィールドを削除します。 | • プロジェクト • project-away |
T | project cost=price*quantity, price |
head/tail |
最初または最後の N 個の結果を返します。 | top | T | top 5 by Name desc nulls last |
lookup |
外部ソースからフィールド値を追加します。 | • 外部データ • 検索 |
KQL 例 |
rename |
フィールドの名前を変更します。 ワイルドカードを使用して複数のフィールドを指定します。 | project-rename | T | project-rename new_column_name = column_name |
rex |
正規表現を使用してグループ名を指定し、フィールドを抽出します。 | matches regex | … | where field matches regex "^addr.*" |
search |
検索式に一致する結果に結果をフィルター処理します。 | search | search "X" |
sort |
検索結果を、指定したフィールドで並べ替えます。 | sort | T | sort by strlen(country) asc, price desc |
stats |
必要に応じてフィールド別にグループ化された統計を提供します。 一般的な統計コマンドの詳細を確認します。 | summarize | KQL 例 |
mstats |
統計と同様に、イベントの代わりにメトリックで使用されます。 | summarize | KQL 例 |
table |
結果セットに保持するフィールドを指定し、表形式でデータを保持します。 | project | T | project columnA, columnB |
top/rare |
フィールドの最も一般的な値または最も一般的でない値を表示します。 | top | T | top 5 by Name desc nulls last |
transaction |
検索結果をトランザクションにグループ化します。 SPL の例 |
例: row_window_session | SPL の例 |
eventstats |
イベント内のフィールドからサマリー統計を生成し、それらの統計情報を新しいフィールドに保存します。 SPL の例 |
次に例を示します。 • 結合 • make_list • mv-expand |
KQL 例 |
streamstats |
フィールドの累積合計を求めます。 SPL の例: ... | streamstats sum(bytes) as bytes _ total \| timechart |
row_cumsum | ...\| serialize cs=row_cumsum(bytes) |
anomalydetection |
指定したフィールドで異常を見つけます。 SPL の例 |
series_decompose_anomalies() | SPL の例 |
where |
eval 式を使用して検索結果をフィルター処理します。 2 つの異なるフィールドを比較するために使用されます。 |
where | T | where fruit=="apple" |
lookup
コマンド: KQL 例
Users
| where UserID in ((externaldata (UserID:string) [
@"https://storageaccount.blob.core.windows.net/storagecontainer/users.txt"
h@"?...SAS..." // Secret token to access the blob
])) | ...
stats
コマンド: KQL 例
Sales
| summarize NumTransactions=count(),
Total=sum(UnitPrice * NumUnits) by Fruit,
StartOfMonth=startofmonth(SellDateTime)
mstats
コマンド: KQL 例
T | summarize count() by price_range=bin(price, 10.0)
transaction
コマンド: SPL 例
sourcetype=MyLogTable type=Event
| transaction ActivityId startswith="Start" endswith="Stop"
| Rename timestamp as StartTime
| Table City, ActivityId, StartTime, Duration
transaction
コマンド: KQL 例
let Events = MyLogTable | where type=="Event";
Events
| where Name == "Start"
| project Name, City, ActivityId, StartTime=timestamp
| join (Events
| where Name == "Stop"
| project StopTime=timestamp, ActivityId)
on ActivityId
| project City, ActivityId, StartTime,
Duration = StopTime – StartTime
row_window_session()
を使用して、シリアル化された行セット内の列のセッション開始値を計算します。
...| extend SessionStarted = row_window_session(
Timestamp, 1h, 5m, ID != prev(ID))
eventstats
コマンド: SPL 例
… | bin span=1m _time
|stats count AS count_i by _time, category
| eventstats sum(count_i) as count_total by _time
eventstats
コマンド: KQL 例
join
ステートメントを使用した例を次に示します。
let binSize = 1h;
let detail = SecurityEvent
| summarize detail_count = count() by EventID,
tbin = bin(TimeGenerated, binSize);
let summary = SecurityEvent
| summarize sum_count = count() by
tbin = bin(TimeGenerated, binSize);
detail
| join kind=leftouter (summary) on tbin
| project-away tbin1
make_list
ステートメントを使用した例を次に示します。
let binSize = 1m;
SecurityEvent
| where TimeGenerated >= ago(24h)
| summarize TotalEvents = count() by EventID,
groupBin =bin(TimeGenerated, binSize)
|summarize make_list(EventID), make_list(TotalEvents),
sum(TotalEvents) by groupBin
| mvexpand list_EventID, list_TotalEvents
anomalydetection
コマンド: SPL 例
sourcetype=nasdaq earliest=-10y
| anomalydetection Close _ Price
anomalydetection
コマンド: KQL 例
let LookBackPeriod= 7d;
let disableAccountLogon=SignIn
| where ResultType == "50057"
| where ResultDescription has "account is disabled";
disableAccountLogon
| make-series Trend=count() default=0 on TimeGenerated
in range(startofday(ago(LookBackPeriod)), now(), 1d)
| extend (RSquare,Slope,Variance,RVariance,Interception,
LineFit)=series_fit_line(Trend)
| extend (anomalies,score) =
series_decompose_anomalies(Trend)
一般的な eval
コマンド
SPL コマンド | 説明 | SPL の例 | KQL コマンド | KQL 例 |
---|---|---|---|---|
abs(X) |
X の絶対値を返します。 | abs(number) |
abs() |
abs(X) |
case(X,"Y",…) |
X 引数とY 引数のペアを受け取ります。ここでX 引数は boolean 式です。 TRUE と評価された場合、引数は対応するY 引数を返します。 |
SPL の例 | case |
KQL 例 |
ceil(X) |
数値 X の上限。 | ceil(1.9) |
ceiling() |
ceiling(1.9) |
cidrmatch("X",Y) |
特定のサブネットに属する IP アドレスを識別します。 | cidrmatch ("123.132.32.0/25",ip) |
• ipv4_is_match() • ipv6_is_match() |
ipv4_is_match('192.168.1.1', '192.168.1.255') == false |
coalesce(X,…) |
null ではない最初の値を返します。 | coalesce(null(), "Returned val", null()) |
coalesce() |
coalesce(tolong("not a number"), tolong("42"), 33) == 42 |
cos(X) |
X の余弦を計算します。 | n=cos(0) |
cos() | cos(X) |
exact(X) |
倍精度浮動小数点演算を使用して式 X を評価します。 | exact(3.14*num) |
todecimal() |
todecimal(3.14*2) |
exp(X) |
eX を返します。 | exp(3) |
exp() | exp(3) |
if(X,Y,Z) |
X とTRUE が評価された場合、結果は 2 番目の引数 Y になります。 X とFALSE が評価された場合、結果は 3 番目の引数 Z になります。 |
if(error==200, "OK", "Error") |
iif() |
KQL 例 |
isbool(X) |
X が boolean の場合、TRUE を返します。 |
isbool(field) |
• iif() • gettype |
iif(gettype(X) =="bool","TRUE","FALSE") |
isint(X) |
X が整数の場合TRUE を返します。 |
isint(field) |
• iif() • gettype |
KQL 例 |
isnull(X) |
X が null である場合、TRUE を返します。 |
isnull(field) |
isnull() |
isnull(field) |
isstr(X) |
X が文字列である場合、TRUE を返します。 |
isstr(field) |
• iif() • gettype |
KQL 例 |
len(X) |
この関数は、文字列X の文字長を返します。 |
len(field) |
strlen() |
strlen(field) |
like(X,"y") |
X がY の SQLite パターンのような場合にのみ、TRUE を返します。 |
like(field, "addr%") |
• has • contains • startswith • matches regex |
KQL 例 |
log(X,Y) |
2 番目の引数 Y をベースとして使用して、最初の引数 X のログを返します。 Y の既定値は 10 です。 |
log(number,2) |
• log • log2 • log10 |
log(X) log2(X) log10(X) |
lower(X) |
X の小文字の値を返します。 |
lower(username) |
tolower | tolower(username) |
ltrim(X,Y) |
パラメーターY 内の文字を左側からトリミングしてX を返します。 Y の既定の出力はスペースとタブです。 |
ltrim(" ZZZabcZZ ", " Z") |
trim_start() |
trim_start(“ ZZZabcZZ”,” ZZZ”) |
match(X,Y) |
X が正規表現パターン Y と一致する場合に返します。 | match(field, "^\d{1,3}.\d$") |
matches regex |
… | where field matches regex @"^\d{1,3}.\d$") |
max(X,…) |
列内の最大値を返します。 | max(delay, mydelay) |
• max() • arg_max() |
… | summarize max(field) |
md5(X) |
文字列値 X の MD5 ハッシュを返します。 |
md5(field) |
hash_md5 |
hash_md5("X") |
min(X,…) |
列内の最小値を返します。 | min(delay, mydelay) |
• min_of() • min_of() • arg_min |
KQL 例 |
mvcount(X) |
X 値の数 (合計) を返します。 |
mvcount(multifield) |
dcount |
…| summarize dcount(X) by Y |
mvfilter(X) |
boolean X 式に基づいて複数値フィールドをフィルター処理します。 |
mvfilter(match(email, "net$")) |
mv-apply |
KQL 例 |
mvindex(X,Y,Z) |
開始位置 (0 から始まる) Y から Z (省略可能) までの複数値X 引数のサブセットを返します。 |
mvindex( multifield, 2) |
array_slice |
array_slice(arr, 1, 2) |
mvjoin(X,Y) |
複数値のフィールドX と文字列区切り記号Y を指定し、Y を使用してX の個々の値を結合します。 |
mvjoin(address, ";") |
strcat_array |
KQL 例 |
now() |
Unix time で表される現在の時刻を返します。 | now() |
now() |
now() now(-2d) |
null() |
引数を受け付けず、NULL 値をかえします。 |
null() |
null | null |
nullif(X,Y) |
2 つの引数X とY を含み、引数が異なる場合はX を返します。 それ以外の場合、NULL を返します。 |
nullif(fieldA, fieldB) |
iif |
iif(fieldA==fieldB, null, fieldA) |
random() |
0 から2147483647 の間の擬似乱数を返します。 |
random() |
rand() |
rand() |
relative_ time(X,Y) |
エポック時間X と相対時間指定子Y を指定すると、Y をX に適用したエポック時間の値を返します。 |
relative_time(now(),"-1d@d") |
unix time | KQL 例 |
replace(X,Y,Z) |
文字列X 内で正規表現文字列Y が出現するたびに文字列Z を置き換えて形成された文字列を返します。 |
月と日の数値が切り替わる日付を返します。 たとえば、入力が 4/30/2015 の場合、出力は30/4/2009 となります 。replace(date, "^(\d{1,2})/ (\d{1,2})/", "\2/\1/") |
replace() |
KQL 例 |
round(X,Y) |
X をY で指定された小数点以下の桁数に丸められた値を返します。 既定値では整数に丸められます。 |
round(3.5) |
round |
round(3.5) |
rtrim(X,Y) |
X にY の文字を右側からトリミングして返します。 Y を指定しない場合、スペースとタブはトリミングされます。 |
rtrim(" ZZZZabcZZ ", " Z") |
trim_end() |
trim_end(@"[ Z]+",A) |
searchmatch(X) |
イベントが検索文字列 X と一致する場合、TRUE を返します。 |
searchmatch("foo AND bar") |
iif() | iif(field has "X","Yes","No") |
split(X,"Y") |
X を区切り記号Y で分割された複数値フィールドとして返します。 |
split(address, ";") |
split() |
split(address, ";") |
sqrt(X) |
X の平方根を返します。 |
sqrt(9) |
sqrt() |
sqrt(9) |
strftime(X,Y) |
Y で指定された形式を使用してレンダリングされたエポック時間値X を返します。 |
strftime(_time, "%H:%M") |
format_datetime() |
format_datetime(time,'HH:mm') |
strptime(X,Y) |
文字列 X で表される時刻を指定すると、形式Y から解析された値が返されます。 |
strptime(timeStr, "%H:%M") |
format_datetime() | KQL 例 |
substr(X,Y,Z) |
開始位置 (1 から始まる) Y からZ 文字 (省略可能) substring フィールドX を返します。 |
substr("string", 1, 3) |
substring() |
substring("string", 0, 3) |
time() |
マイクロ秒の解像度で実時間を返します。 | time() |
format_datetime() |
KQL 例 |
tonumber(X,Y) |
入力文字列X を数値に変換します。ここでY (省略可能、既定値は10 ) は、変換先の数値のベースを定義します。 |
tonumber("0A4",16) |
toint() |
toint("123") |
tostring(X,Y) |
説明 | SPL の例 | tostring() |
tostring(123) |
typeof(X) |
フィールド型の文字列表記を返します。 | typeof(12) |
gettype() |
gettype(12) |
urldecode(X) |
URL X をデコードしたものを返します。 |
SPL の例 | url_decode |
KQL 例 |
case(X,"Y",…)
SPL の例
case(error == 404, "Not found",
error == 500,"Internal Server Error",
error == 200, "OK")
case(X,"Y",…)
KQL の例
T
| extend Message = case(error == 404, "Not found",
error == 500,"Internal Server Error", "OK")
if(X,Y,Z)
KQL の例
iif(floor(Timestamp, 1d)==floor(now(), 1d),
"today", "anotherday")
isint(X)
KQL の例
iif(gettype(X) =="long","TRUE","FALSE")
isstr(X)
KQL の例
iif(gettype(X) =="string","TRUE","FALSE")
like(X,"y")
の例
… | where field has "addr"
… | where field contains "addr"
… | where field startswith "addr"
… | where field matches regex "^addr.*"
min(X,…)
KQL の例
min_of (expr_1, expr_2 ...)
…|summarize min(expr)
…| summarize arg_min(Price,*) by Product
mvfilter(X)
KQL の例
T | mv-apply Metric to typeof(real) on
(
top 2 by Metric desc
)
mvjoin(X,Y)
KQL の例
strcat_array(dynamic([1, 2, 3]), "->")
relative time(X,Y)
KQL の例
let toUnixTime = (dt:datetime)
{
(dt - datetime(1970-01-01))/1s
};
replace(X,Y,Z)
KQL の例
replace( @'^(\d{1,2})/(\d{1,2})/', @'\2/\1/',date)
strptime(X,Y)
KQL の例
format_datetime(datetime('2017-08-16 11:25:10'),
'HH:mm')
time()
KQL の例
format_datetime(datetime(2015-12-14 02:03:04),
'h:m:s')
tostring(X,Y)
文字列としてフィールド値X
を返します。
X
のが数値の場合は、X
は文字列の値に再フォーマットされます。X
がブール値の場合は、X
はTRUE
またはFALSE
に再フォーマットされます。X
が数値の場合、2 番目の引数Y
は省略可能で、hex
(X
を16 進数に変換)、commas
(X
をコンマと小数点以下 2 桁の書式)、またはduration
(X
を秒単位の時刻形式から読み取り可能な時刻形式HH:MM:SS
に変換) のいずれかを指定することができます。
tostring(X,Y)
SPL の例
この例では、以下が返されます。
foo=615 and foo2=00:10:15:
… | eval foo=615 | eval foo2 = tostring(
foo, "duration")
urldecode(X)
SPL の例
urldecode("http%3A%2F%2Fwww.splunk.com%2Fdownload%3Fr%3Dheader")
一般的な stats
コマンド KQL 例
SPL コマンド | 説明 | KQL コマンド | KQL 例 |
---|---|---|---|
avg(X) |
フィールドX の値の平均を返します。 |
avg() | avg(X) |
count(X) |
フィールドX の出現回数を返します。 一致する特定のフィールド値を示すには、X をeval(field="value") のように書式設定します。 |
count() | summarize count() |
dc(X) |
フィールドX の個別の値の数を返します。 |
dcount() | …\| summarize countries=dcount(country) by continent |
earliest(X) |
X の時系列で最も早い値を返します。 |
arg_min() | … \| summarize arg_min(TimeGenerated, *) by X |
latest(X) |
X の時系列で最新の値を返します。 |
arg_max() | … \| summarize arg_max(TimeGenerated, *) by X |
max(X) |
フィールドX の最大値を返します。 X の値が数値以外の場合、最大値はアルファベット順で見つかります。 |
max() | …\| summarize max(X) |
median(X) |
フィールドX の一番真ん中の値を返します。 |
percentile() | …\| summarize percentile(X, 50) |
min(X) |
フィールドX の最小値を返します。 X の値が数値以外の場合、最小値はアルファベット順で見つかります。 |
min() | …\| summarize min(X) |
mode(X) |
フィールドX の出現回数が最も多い値を返します。 |
top-hitters() | …\| top-hitters 1 of Y by X |
perc(Y) |
フィールドY のパーセンタイル値X を返します。 たとえば、 perc5(total) は フィールドtotal の 5 番目のパーセンタイル値を返します。 |
percentile() | …\| summarize percentile(Y, 5) |
range(X) |
フィールドX の最大値と最小値の差を返します。 |
range() | range(1, 3) |
stdev(X) |
フィールドX の標本標準偏差を返します。 |
stdev | stdev() |
stdevp(X) |
フィールドX の母標準偏差を返します。 |
stdevp() | stdevp() |
sum(X) |
フィールドX の値の合計を返します。 |
sum() | sum(X) |
sumsq(X) |
フィールドX の値の二乗の和を返します。 |
||
values(X) |
フィールドX のすべての個別の値のリストを複数値エントリとして返します。 値の順序はアルファベット順です。 |
make_set() | …\| summarize r = make_set(X) |
var(X) |
フィールド X のサンプル分散を返します。 |
variance | variance(X) |
次のステップ
この記事では、Splunk から Microsoft Sentinel に移行ルールをマップする方法について説明しました。