サポートされている CEL マクロ🔗
注意
Taegis XDRでは、アラート および インベスティゲーション という用語が、最近 検出 および ケース に変更されました。SophosとTaegisテクノロジーのプラットフォーム統合作業が進行中のため、引き続き旧用語が参照されている場合があります。詳細については、Taegis用語の更新をご覧ください。
Secureworks® Taegis™ XDR の自動化プラットフォームでは、Google の Common Expression Language (CEL) を使用して、コネクター、プレイブック入力、プレイブックトリガー、テンプレート内にロジックとデータ操作を埋め込むことができます。
XDR は、データの操作と評価を可能にする Google の Common Expression Language (CEL) マクロを多数サポートしています。多くのマクロは組み込みですが、一般的な問題に対処するためにカスタム構築されたものもあります。
これらの例では、次のデータ構造を使用します。
{
"plant": {
"type": "tree",
"name": "white oak",
"uses": [
"lumber",
"firewood",
"furniture"
],
"traits": {
"produces_fruit": yes,
"genus": "Quercus",
"height": 100,
"extinct": false,
"related_to": [
{
"name": "chestnut",
"genus": "Castanea"
},
{
"name": "beech",
"genus": "Fagus"
}
]
},
"locations": [
"usa",
"europe",
"new york",
"New York",
"new york ",
"usa",
"worldwide",
"eu"
]
}
}
使用可能なマクロ🔗
? (オプション演算子)🔗
? は、CEL 式における安全なナビゲーション、安全なインデックス指定、および条件付き包含のためのオプション演算子です。
? 演算子は、次の機能を提供します。
- 安全なフィールドナビゲーション (
obj.?field): エラーなしでフィールドにアクセスします。 - 安全なマップインデックス指定 (
map[?key]): マップ値に安全にアクセスします。 - 安全なリストインデックス指定 (
list[?index]): リスト要素に安全にアクセスします。 - オプションのマップフィールド (
{?key: value}): 条件付きでマップフィールドを含めます。 - オプションのリスト要素 (
[?element]): 条件付きでリスト要素を含めます。
最初の ? 演算子の後は、後続のアクセスは自動的に安全になります (viral chaining): obj.?field.subfield == obj.?field.?subfield。
注意🔗
?演算子は、.orValue()または.hasValue()を必要とするオプション値を返します。- 安全なナビゲーションでは、フィールド、キー、またはインデックスが存在しなくてもエラーは発生しません。
- オプションのフィールド/要素構文には、オプション型の値が必要です。
optional.of()、optional.none()、またはoptional.ofNonZeroValue()とともに使用します。
例🔗
{'name': 'John'}.?name.orValue('Unknown')
出力: 'John'
安全なフィールドナビゲーション。
{}.?name.orValue('Unknown')
出力: 'Unknown'
フィールドが存在しない場合は optional.none() を返します。
abs🔗
指定された引数の絶対値を返します。
入力と出力🔗
例🔗
alertAttackTechniqueIds🔗
アラートレコードを解析し、攻撃手法 ID の値を返します。
入力と出力🔗
例🔗
alertConfidence🔗
アラートレコードを解析し、信頼度の値を返します。
入力と出力🔗
例🔗
alertCreatedAtNanos🔗
アラートレコードを解析し、アラートが作成された時刻のナノ秒値を返します。
入力と出力🔗
例🔗
alertCreatedAtSeconds🔗
アラートレコードを解析し、created_at の値をエポックからの秒数として返します。
入力と出力🔗
例🔗
alertDescription🔗
アラートレコードを解析し、説明の値を返します。
入力と出力🔗
例🔗
alertDestinationIPs🔗
アラートレコードを解析し、エンティティが destinationIPAddress とラベル付けされているアラートエンティティフィールドから、一意の IP アドレス値のリストを返します (大文字と小文字を区別しません)。
入力と出力🔗
例🔗
alertDetectorId🔗
アラートレコードを解析し、検知機 ID の値を返します。
入力と出力🔗
例🔗
alertDetectorName🔗
アラートレコードを解析し、検知機名の値を返します。
入力と出力🔗
例🔗
alertDomains🔗
アラートレコードを解析し、エンティティが ipdomain、topprivateipdomain、domainname、authdomainname、sourceauthdomainname、または targetauthdomainname とラベル付けされているアラートエンティティフィールドから、一意のドメイン名値のリストを返します (大文字と小文字を区別しません)。
入力と出力🔗
例🔗
alertEnrichment🔗
アラートレコードとエンリッチメントデータを解析し、指定されたパスに一致する最初の値を返します。
入力と出力🔗
例🔗
alertEnrichment(inputs, 'rare_program_rare_ip.programs')
出力: ["foo.exe", "bar.exe"]
alertEntities🔗
アラートレコードを解析し、エンティティ値を返します。
入力と出力🔗
例🔗
alertEntities(inputs)
出力: ["hostname:abc", "sensorId:12345", "fileName:c:\\windows\\syswow64\\cmd.exe"]
alertEntity🔗
アラートレコードを解析し、指定されたエンティティ名に一致するエンティティ値を返します (大文字と小文字を区別しません)。
入力と出力🔗
例🔗
alertEntity(inputs, 'username')
出力: ["sample_user","another_sample_user"]
alertEventIds🔗
アラートレコードを解析し、イベント ID 値のリストを返します。
入力と出力🔗
例🔗
alertEventIds(inputs)
出力: ["29ab783f-d3b5-4d4e-8025-9d36f4e1d2ae", "aef81a33-fe5c-43fe-b589-c5ff8c3cce1c"]
alertGroupKey🔗
アラートレコードを解析し、group_key の値を返します。
入力と出力🔗
例🔗
alertGroupKey(inputs)
出力: "12345:app:event-filter:80c0809b-153f-4b81-bb7c-52fcb83c7127"
alertHostnames🔗
アラートレコードを解析し、エンティティが hostname、sourcehostname、desthostname、workstationname、または computername とラベル付けされているアラートエンティティフィールドから、一意の値のリストを返します (大文字と小文字を区別しません)。
入力と出力🔗
例🔗
alertIPs🔗
アラートレコードを解析し、エンティティが ipAddress とラベル付けされているアラートエンティティフィールドから、一意の IP アドレス値のリストを返します (大文字と小文字を区別しません)。
入力と出力🔗
例🔗
alertId🔗
アラートレコードを解析し、ID または UUID を返します。
入力と出力🔗
例🔗
alertId(inputs)
出力: "alert://priv:endpoint-redcloak:12345:1678899090095:29ab783f-d3b5-4d4e-8025-9d36f4e1d2ae"
alertInvestigationIds🔗
アラートレコードを解析し、アラートに関連付けられた調査 ID のリストを返します。
入力と出力🔗
例🔗
alertInvestigationIds(inputs)
出力: ["29ab783f-d3b5-4d4e-8025-9d36f4e1d2ae", "aef81a33-fe5c-43fe-b589-c5ff8c3cce1c"]
alertMitreAttackInfo🔗
アラートレコードを解析し、mitre_attack_info 値のリストを返します。
入力と出力🔗
例🔗
alertMitreAttackInfo(inputs)
出力: [{"description":"Adversaries may attempt...","technique":"Process Discovery","technique_id":"T1057"}]
alertObservationIds🔗
アラートレコードを解析し、観測 ID 値のリストを返します。
入力と出力🔗
例🔗
alertObservationIds(inputs)
出力: ["29ab783f-d3b5-4d4e-8025-9d36f4e1d2ae", "aef81a33-fe5c-43fe-b589-c5ff8c3cce1c"]
alertReferences🔗
アラートレコードを解析し、アラートに関連付けられた参照のリストを返します。
入力と出力🔗
例🔗
alertReferences(inputs)
出力: [{"description": "External Alert Ref","url": "https://example.com/alert/29ab783f-d3b5-4d4e-8025-9d36f4e1d2ae"}]
alertResolution🔗
アラートレコードを解析し、解決値を返します。
入力と出力🔗
例🔗
alertResolutionReason🔗
アラートレコードを解析し、解決理由の値を返します。
入力と出力🔗
例🔗
alertRuleId🔗
アラートレコードを解析し、ルール ID を返します。
入力と出力🔗
例🔗
alertSensorIds🔗
アラートレコードを解析し、センサー ID 値のリストを返します。
入力と出力🔗
例🔗
alertSensorTypes🔗
アラートレコードを解析し、一意のセンサータイプ値のリストを返します (大文字)。
入力と出力🔗
例🔗
alertSeverity🔗
アラートレコードを解析し、重大度の値を返します。
入力と出力🔗
例🔗
alertSeverityNice🔗
アラートレコードを解析し、人が読みやすい重大度の値を単語で返します (Informational、Low、Medium、High、Critical)。
入力と出力🔗
例🔗
alertSourceIPs🔗
アラートレコードを解析し、エンティティが sourceIPAddress とラベル付けされているアラートエンティティフィールドから、一意の IP アドレス値のリストを返します (大文字と小文字を区別しません)。
入力と出力🔗
例🔗
alertStatus🔗
アラートレコードを解析し、ステータス値を返します。
入力と出力🔗
例🔗
alertTags🔗
アラートレコードを解析し、タグのリストを返します。
入力と出力🔗
例🔗
alertTags(inputs)
出力: ["alertRule:29ab783f-d3b5-4d4e-8025-9d36f4e1d2ae", "compactor:handler"]
alertTenantId🔗
アラートレコードを解析し、テナント ID を返します。
入力と出力🔗
例🔗
alertThirdPartyDetail🔗
アラートレコードとサードパーティ詳細データを解析し、指定されたパスに一致する最初の値を返します。
入力と出力🔗
例🔗
alertThirdPartyDetail(inputs, 'userStates.0.aadUserId')
出力: ["F86DBD0D-6571-44A0-BAE1-43B83CF430AD"]
alertTitle🔗
アラートレコードを解析し、タイトル値を返します。
入力と出力🔗
例🔗
alertUpdatedAtNanos🔗
アラートレコードを解析し、アラートが変更された時刻のナノ秒値を返します。
入力と出力🔗
例🔗
alertUpdatedAtSeconds🔗
アラートレコードを解析し、updated_at の値をエポックからの秒数として返します。
入力と出力🔗
例🔗
alertUsernames🔗
アラートレコードを解析し、エンティティが username とラベル付けされているアラートエンティティフィールドから、小文字の一意なユーザー名値のリストを返します (大文字と小文字を区別しません)。
入力と出力🔗
例🔗
all🔗
リストまたはマップを反復処理し、条件がリスト内のすべての要素に対して真であることを検証します。
入力と出力🔗
例🔗
append🔗
既存のリストに要素を追加します。
入力と出力🔗
例🔗
assetTags🔗
資産から資産タグのキー/値ペアのリストを返します。デフォルトでは、キーと値の両方を返します。必要に応じて、キーのみまたは値のみを返すこともできます。
入力と出力🔗
例🔗
base64.decode🔗
base64 でエンコードされた文字列をバイト列にデコードします。
入力と出力🔗
base64 でエンコードされた文字列を元のバイト列にデコードします。
入力が空の場合は空のバイト列を返します。
入力は有効な base64 エンコード文字列である必要があります。
ユースケース🔗
エンコードされた認証情報をデコードする。
出力: b'username:password'
Basic Authentication の認証情報をデコードします。
API レスポンスをデコードする。
base64 でエンコードされた API レスポンスデータをデコードします。
JSON を扱う。
出力: '{"key":"value"}'
base64 でエンコードされた JSON をデコードします。
エラー処理🔗
- 無効な base64 文字列はエラーの原因になります。
- パディング文字 (
=) は自動的に処理されます。 - 入力内の空白はデコードエラーの原因になる場合があります。
注意🔗
- 入力は有効な base64 エンコード文字列である必要があります。
- 出力は常に bytes 型です。
- bytes から文字列を取得するには
string()変換を使用します。 - 標準の base64 デコード (RFC 4648) を使用します。
- これはカスタム
decodeBase64()関数と共存します。
一般的なパターン🔗
デコードして文字列として使用する:
最も一般的なパターン: デコードして文字列に変換します。
デコードして処理する:
デコードし、サイズを確認してから変換するか、デフォルト値を返します。
往復検証:
エンコードとデコードが正しく機能することを検証します。
例🔗
base64.encode🔗
バイト列を base64 エンコード文字列にエンコードします。
入力と出力🔗
標準の base64 エンコードを使用して、バイト列を base64 エンコード文字列にエンコードします。
入力が空の場合は空文字列を返します。
出力は URL セーフな base64 文字列です。
ユースケース🔗
送信用にテキストをエンコードする。
出力: "dXNlcm5hbWU6cGFzc3dvcmQ="
Basic Authentication 用に認証情報をエンコードします。
注意🔗
- 入力は bytes 型である必要があります。
b'...'構文またはbytes()変換を使用します。 - 出力は常に文字列です。
- 標準の base64 エンコード (RFC 4648) を使用します。
- パディング文字 (
=) は必要に応じて含まれます。 - これはカスタム
encodeBase64()関数と共存します。
例🔗
caseArchivedAt🔗
ケースレコードを解析し、アーカイブされた日時を返します。
入力と出力🔗
例🔗
caseAssetEvidence🔗
ケースレコードを解析し、資産証拠オブジェクトのリストを返します。
入力と出力🔗
例🔗
caseAssigneeId🔗
ケースレコードを解析し、担当者の ID を返します。
入力と出力🔗
例🔗
caseChangeAfter🔗
delta.changes からフィールドの after 値を含むオプションを返します。デフォルト値を指定するには .orValue() を、存在確認には .hasValue() を使用します。
入力と出力🔗
例🔗
caseChangeAfter(inputs, 'severity').hasValue()
出力: true
caseChangeAfter(inputs, 'nonexistent').orValue(0)
出力: 0
caseChangeAfter(inputs, 'nonexistent').hasValue()
出力: false
caseChangeBefore🔗
delta.changes からフィールドの before 値を含むオプションを返します。デフォルト値を指定するには .orValue() を、存在確認には .hasValue() を使用します。
入力と出力🔗
例🔗
caseChangeBefore(inputs, 'severity').orValue(0)
出力: 4
caseChangeBefore(inputs, 'severity').hasValue()
出力: true
caseChangeBefore(inputs, 'nonexistent').orValue(0)
出力: 0
caseChangeBefore(inputs, 'nonexistent').hasValue()
出力: false
caseChanges🔗
ケースレコードから delta.changes マップを返します。各キーはフィールド名で、各値は before と after エントリーを持つマップです。
入力と出力🔗
例🔗
caseChanges(inputs)
出力: {"severity": {"before": 4, "after": 6}, "title": {"before": "Original Case Title", "after": "Updated Case Title"}}
caseCloseReason🔗
ケースレコードを解析し、クローズされた理由を返します。
入力と出力🔗
例🔗
caseClosedAt🔗
ケースレコードを解析し、クローズされた日時 (RFC3339) を返します。未設定の場合は空文字列を返します。
入力と出力🔗
例🔗
caseComment🔗
ケースレコードを解析し、それに関連付けられたコメントを返します。
入力と出力🔗
例🔗
caseCommentAuthorId🔗
ケースレコードを解析し、コメント作成者の ID を返します。
入力と出力🔗
例🔗
caseCommentCreatedAt🔗
ケースレコードを解析し、コメントが作成された日時を返します。
入力と出力🔗
例🔗
caseCommentMentions🔗
ケースレコードを解析し、コメント内のメンションのリストを返します。
入力と出力🔗
例🔗
caseCommentMentions(inputs)
出力: ["@secureworks", "@dac1ed31-111-4809-9cc9-9f99b6e"]
caseCommentOperation🔗
ケースレコードを解析し、コメントの操作タイプを返します。
入力と出力🔗
例🔗
caseContributorIds🔗
ケースレコードを解析し、コントリビューター ID のリストを返します。
入力と出力🔗
例🔗
caseContributorIds(inputs)
出力: ["dac1ed31-111-4809-9cc9-9f99b6e", "ff0197b0@clients"]
caseCreatedAt🔗
ケースレコードを解析し、作成日時を返します。
入力と出力🔗
例🔗
caseCreatedById🔗
ケースレコードを解析し、作成したユーザーの ID を返します。
入力と出力🔗
例🔗
caseCreatedByPartner🔗
ケースレコードを解析し、テナントの親によって作成された場合は true を返します。
入力と出力🔗
例🔗
caseDetectionEvidence🔗
ケースレコードを解析し、検出証拠オブジェクトのリストを返します。
入力と出力🔗
例🔗
caseEventEvidence🔗
ケースレコードを解析し、イベント証拠オブジェクトのリストを返します。
入力と出力🔗
例🔗
caseFieldChanged🔗
ケースレコードを解析し、指定されたフィールドが変更された場合は true を返します。
入力と出力🔗
例🔗
caseFieldChanged(inputs, 'nonexistent_field')
出力: false
caseFileId🔗
ケースレコードを解析し、delta.file からファイル ID を返します (ファイル追加イベント)。
入力と出力🔗
例🔗
caseFileName🔗
ケースレコードを解析し、delta.file からファイル名を返します (ファイル追加イベント)。
入力と出力🔗
例🔗
caseFileSize🔗
ケースレコードを解析し、delta.file からファイルサイズを返します (ファイル追加イベント)。
入力と出力🔗
例🔗
caseFileStatus🔗
ケースレコードを解析し、delta.file からファイルライフサイクルステータスを返します (ファイル追加/削除イベント)。
入力と出力🔗
例🔗
caseFileUploadedById🔗
ケースレコードを解析し、delta.file からファイルをアップロードしたユーザー ID を返します (ファイル追加/削除イベント)。
入力と出力🔗
例🔗
caseId🔗
ケースレコードを解析し、ID を返します。
入力と出力🔗
例🔗
caseIncidentAdvisorId🔗
ケースレコードを解析し、インシデントアドバイザー ID を返します。
入力と出力🔗
例🔗
caseKeyFindings🔗
ケースレコードを解析し、主な発見事項の内容を返します。
オプションの第 2 引数を指定すると、keyFindings オブジェクトから特定のフィールド (documentType や documentVersion など) を返します。
入力と出力🔗
例🔗
caseKeyFindings(inputs, 'documentType')
出力: "DOCUMENT_TYPE_MARKDOWN"
caseLinkCreatedAt🔗
ケース変更イベント (delta.link) または単独のリンクレコードから、リンク作成タイムスタンプを返します。
入力と出力🔗
例🔗
caseLinks(inputs).filter(l, caseLinkType(l) == 'External').map(l, caseLinkCreatedAt(l))
出力: ["2026-04-30T18:53:00.483028Z"]
caseLinkIsInternal🔗
ケース変更イベント (delta.link) または単独のリンクレコードから、リンクが内部リンクかどうかを返します。
入力と出力🔗
例🔗
caseLinks(inputs).filter(l, caseLinkType(l) == 'External').map(l, caseLinkIsInternal(l))
出力: [false]
caseLinkReference🔗
ケース変更イベント (delta.link) または単独のリンクレコードから、リンク参照を返します。
入力と出力🔗
例🔗
caseLinks(inputs).filter(l, caseLinkType(l) == 'External').map(l, caseLinkReference(l))
出力: ["EXT-12345"]
caseLinkTitle🔗
ケース変更イベント (delta.link) または単独のリンクレコードから、リンクタイトルを返します。
入力と出力🔗
例🔗
caseLinks(inputs).filter(l, caseLinkType(l) == 'External').map(l, caseLinkTitle(l))
出力: ["External Ticket"]
caseLinkType🔗
ケース変更イベント (delta.link) または単独のリンクレコードから、リンクタイプを返します。
入力と出力🔗
例🔗
caseLinks(inputs).filter(l, caseLinkType(l) == 'External')
出力: []
caseLinkUrl🔗
ケース変更イベント (delta.link) または単独のリンクレコードから、リンク URL を返します。
入力と出力🔗
例🔗
caseLinks(inputs).filter(l, caseLinkType(l) == 'External').map(l, caseLinkUrl(l))
出力: ["https://example.com/tickets/EXT-12345"]
caseLinks🔗
ケースレコードを解析し、リンクオブジェクトの完全なリストを返します。
入力と出力🔗
例🔗
caseLinksReference🔗
ケースレコードを解析し、すべてのリンクから参照文字列のリストを返します。
入力と出力🔗
例🔗
caseLinksTitle🔗
ケースレコードを解析し、すべてのリンクからタイトル文字列のリストを返します。
入力と出力🔗
例🔗
caseLinksType🔗
ケースレコードを解析し、すべてのリンクからタイプ文字列のリストを返します (例: External または Jira)。
入力と出力🔗
例🔗
caseLinksUrl🔗
ケースレコードを解析し、すべてのリンクから URL 文字列のリストを返します。
入力と出力🔗
例🔗
caseLinksUrl(inputs)
出力: ["https://example.com/tickets/EXT-12345", "https://jira.example.com/..."]
caseManagedBy🔗
ケースレコードを解析し、managed-by の値 (PROVIDER、CUSTOMER、UNKNOWN) を返します。
入力と出力🔗
例🔗
casePrimaryStatusId🔗
ケースレコードを解析し、プライマリステータス ID を返します。
入力と出力🔗
例🔗
casePrimaryStatusName🔗
ケースレコードを解析し、プライマリステータス名を返します。
入力と出力🔗
例🔗
casePrimaryStatusTitle🔗
ケースレコードを解析し、プライマリステータスタイトルを返します。
入力と出力🔗
例🔗
casePrimaryVerdictId🔗
ケースレコードを解析し、プライマリ判定 ID を返します。
入力と出力🔗
例🔗
casePrimaryVerdictName🔗
ケースレコードを解析し、プライマリ判定名を返します。
入力と出力🔗
例🔗
casePrimaryVerdictTitle🔗
ケースレコードを解析し、プライマリ判定タイトルを返します。
入力と出力🔗
例🔗
casePriority🔗
ケースレコードを解析し、ケースの優先度を単語 (Low、Medium、High、Critical) で返します。
オプションの第 2 引数に true を指定すると、優先度を整数 (1-4) で返します。
入力と出力🔗
例🔗
caseProcessingStatus🔗
ケースレコードを解析し、処理ステータスマップを返します。
入力と出力🔗
例🔗
caseProcessingStatus(inputs)
出力: {"alerts": "SUCCESS", "assets": "SUCCESS", "events": "SUCCESS"}
caseRiskScore🔗
ケースレコードを解析し、リスクスコアを返します。
入力と出力🔗
例🔗
caseRuleId🔗
ケースレコードを解析し、それを作成した自動ケースルール ID を返します。
入力と出力🔗
例🔗
caseSearchEvidence🔗
ケースレコードを解析し、検索証拠オブジェクトのリストを返します。
入力と出力🔗
例🔗
caseSecondaryStatusId🔗
ケースレコードを解析し、セカンダリステータス ID を返します。
入力と出力🔗
例🔗
caseSecondaryStatusName🔗
ケースレコードを解析し、セカンダリステータス名を返します。
入力と出力🔗
例🔗
caseSecondaryStatusReason🔗
ケースレコードを解析し、セカンダリステータス理由のリストを返します。
入力と出力🔗
例🔗
caseSecondaryStatusTitle🔗
ケースレコードを解析し、セカンダリステータスタイトルを返します。
入力と出力🔗
例🔗
caseSecondaryVerdictId🔗
ケースレコードを解析し、セカンダリ判定 ID を返します。
入力と出力🔗
例🔗
caseSecondaryVerdictName🔗
ケースレコードを解析し、セカンダリ判定名を返します。
入力と出力🔗
例🔗
caseSecondaryVerdictTitle🔗
ケースレコードを解析し、セカンダリ判定タイトルを返します。
入力と出力🔗
例🔗
caseSeverity🔗
ケースレコードを解析し、重大度を単語 (Informational、Low、Medium、High、Critical) で返します。
inputs.case では重大度値 2、4、6、8、10 を使用します。V1/V2 レコードでは優先度値 1-4 を使用します。
オプションの第 2 引数に false を指定すると、生の数値を返します。
入力と出力🔗
例🔗
caseShortId🔗
ケースレコードを解析し、短縮 ID を返します。
入力と出力🔗
例🔗
caseSourceId🔗
ケースレコードを解析し、ソース ID を返します。
入力と出力🔗
例🔗
caseSourceName🔗
ケースレコードを解析し、ソース名を返します。
入力と出力🔗
例🔗
caseSourceTitle🔗
ケースレコードを解析し、ソース表示タイトルを返します。
入力と出力🔗
例🔗
caseStatus🔗
ケースレコードを解析し、ステータスを返します。
入力と出力🔗
例🔗
caseTags🔗
ケースレコードを解析し、タグのリストを返します。
入力と出力🔗
例🔗
caseTenantId🔗
ケースレコードを解析し、テナントの ID を返します。
入力と出力🔗
例🔗
caseThirdPartyId🔗
ケースレコードを解析し、それに関連付けられたサードパーティレコードの ID を返します。
入力と出力🔗
例🔗
caseThirdPartyType🔗
ケースレコードを解析し、それに関連付けられたサードパーティレコードのタイプを返します。
入力と出力🔗
例🔗
caseTitle🔗
ケースレコードを解析し、タイトルを返します。
入力と出力🔗
例🔗
caseType🔗
ケースレコードを解析し、タイプを返します。
オプションの第 2 引数に 'v1' または 'v2' を指定すると、タイプを変換します。デフォルトは 'v2' です。
入力と出力🔗
例🔗
caseTypeId🔗
ケースレコードを解析し、構造化されたタイプオブジェクトから生のタイプ ID を返します。
タイプが存在しない場合、またはオブジェクトでない場合は空文字列を返します。
入力と出力🔗
例🔗
caseTypeTitle🔗
ケースレコードを解析し、構造化されたタイプオブジェクトからタイプ表示タイトルを返します。
タイプが存在しない場合、またはオブジェクトでない場合は空文字列を返します。
入力と出力🔗
例🔗
caseUpdatedAt🔗
ケースレコードを解析し、最終更新日時を返します。
入力と出力🔗
例🔗
caseUpdatedById🔗
ケースレコードを解析し、最後に更新したユーザーの ID を返します。
入力と出力🔗
例🔗
cel.bind🔗
式内にローカル変数バインディングを作成し、高コストな処理の再計算を回避します。
入力と出力🔗
式内で参照できるローカル変数を作成します。
変数は第 3 引数 (expression) のスコープ内でのみ使用できます。
これは次の場合に役立ちます。
- 高コストな処理の繰り返し計算を回避する。
- 複雑な式を読みやすくする。
- より明確なロジックのために中間値を作成する。
変数名は識別子として指定します (文字列ではありません)。
値には任意の CEL 式を指定できます。
式は、その変数がスコープ内にある状態で評価されます。
ユースケース🔗
繰り返し計算を回避する。
高コストな処理の繰り返しを避け、可読性を向上させます。
複雑な条件を簡略化する。
中間値を計算して再利用します。
複数のバインディングを連結する。
出力: 26
ネストした変数バインディングを作成します。
リストを扱う。
出力: [6, 8, 10]
すべての値を 2 倍にしてから、結果をフィルタリングします。
複雑なオブジェクトアクセス。
オブジェクトに 1 回アクセスし、それを複数回再利用します。
例🔗
charAt🔗
文字列内の指定されたインデックス位置の文字を返します。
入力と出力🔗
0 ベースの指定インデックス位置にある文字を返します (1 文字の文字列として)。
インデックスが範囲外の場合は空文字列を返します。
例🔗
collect🔗
指定されたパス引数に一致するマップ値のリストを返します。
入力と出力🔗
例🔗
[{\"a\": \"value1\"}, {\"b\": \"value2\"}, {\"a\": \"value3\"}].collect('a')
出力: ["value1", "value3"]
contains🔗
文字列またはリスト内のいずれかの要素が、指定された文字列またはリストに一致する場合に true を返します (大文字と小文字を区別します)。
オプションの第 2 引数に true を指定すると、大文字と小文字を無視して一致を判定します。
入力と出力🔗
contains(string, string) -> bool
contains(string, string, bool) -> bool
contains(string, list) -> bool
contains(string, list, bool) -> bool
contains(list, string) -> bool
contains(list, string, bool) -> bool
contains(list, list) -> bool
contains(list, list, bool) -> bool
例🔗
count🔗
指定された文字列引数に一致するリスト要素の数、またはそれに一致するマップ内のキーの数を返します。
入力と出力🔗
例🔗
count([{"a": "value1"}, {"b": "value2"}, {"a": "value3"}], "a")
出力: 2
createShareLink🔗
アラート、調査、または資産の Taegis Sharelink を返します。
入力と出力🔗
例🔗
createShareLink(inputs)
出力: "https://ctpx.secureworks.com/share/14f-ca9d-ad47-34db-2243b945ce2112f"
decodeBase64🔗
デコードされた base64 入力文字列を返します。
入力と出力🔗
例🔗
decodeJSON🔗
入力文字列をデコードした JSON オブジェクトを返します。
入力と出力🔗
例🔗
decodeYAML🔗
YAML 入力を任意のデータ型にデコードします。
入力と出力🔗
例🔗
detectionAttackTechniqueIds🔗
検出レコードを解析し、攻撃手法 ID の値を返します。
入力と出力🔗
例🔗
detectionConfidence🔗
検出レコードを解析し、信頼度の値を返します。
入力と出力🔗
例🔗
detectionCreatedAtNanos🔗
検出レコードを解析し、検出が作成された時刻のナノ秒値を返します。
入力と出力🔗
例🔗
detectionCreatedAtSeconds🔗
検出レコードを解析し、created_at の値をエポックからの秒数として返します。
入力と出力🔗
例🔗
detectionDescription🔗
検出レコードを解析し、説明の値を返します。
入力と出力🔗
例🔗
detectionDescription(inputs)
出力: "This is a sample Taegis Watchlist Detection"
detectionDestinationIPs🔗
検出レコードを解析し、エンティティが destinationIPAddress とラベル付けされている検出エンティティフィールドから、一意の IP アドレス値のリストを返します (大文字と小文字を区別しません)。
入力と出力🔗
例🔗
detectionDetectorId🔗
検出レコードを解析し、検知機 ID の値を返します。
入力と出力🔗
例🔗
detectionDetectorName🔗
検出レコードを解析し、検知機名の値を返します。
入力と出力🔗
例🔗
detectionDomains🔗
検出レコードを解析し、エンティティが ipdomain、topprivateipdomain、domainname、authdomainname、sourceauthdomainname、または targetauthdomainname とラベル付けされている検出エンティティフィールドから、一意のドメイン名値のリストを返します (大文字と小文字を区別しません)。
入力と出力🔗
例🔗
detectionEnrichment🔗
検出レコードとエンリッチメントデータを解析し、指定されたパスに一致する最初の値を返します。
入力と出力🔗
例🔗
detectionEnrichment(inputs, 'rare_program_rare_ip.programs')
出力: ["foo.exe", "bar.exe"]
detectionEntities🔗
検出レコードを解析し、エンティティ値を返します。
入力と出力🔗
例🔗
detectionEntities(inputs)
出力: ["hostname:abc", "sensorId:12345", "fileName:c:\\windows\\syswow64\\cmd.exe"]
detectionEntity🔗
検出レコードを解析し、指定されたエンティティ名に一致するエンティティ値を返します (大文字と小文字を区別しません)。
入力と出力🔗
例🔗
detectionEntity(inputs, 'username')
出力: ["sample_user", "another_sample_user"]
detectionEventIds🔗
検出レコードを解析し、イベント ID 値のリストを返します。
入力と出力🔗
例🔗
detectionEventIds(inputs)
出力: ["29ab783f-d3b5-4d4e-8025-9d36f4e1d2ae", "aef81a33-fe5c-43fe-b589-c5ff8c3cce1c"]
detectionGroupKey🔗
検出レコードを解析し、group_key の値を返します。
入力と出力🔗
例🔗
detectionGroupKey(inputs)
出力: "12345:app:event-filter:80c0809b-153f-4b81-bb7c-52fcb83c7127"
detectionHostnames🔗
検出レコードを解析し、エンティティが hostname、sourcehostname、desthostname、workstationname、または computername とラベル付けされている検出エンティティフィールドから、一意の値のリストを返します (大文字と小文字を区別しません)。
入力と出力🔗
例🔗
detectionHostnames(inputs)
出力: ["sample_hostname", "another_sample_hostname"]
detectionIPs🔗
検出レコードを解析し、エンティティが ipAddress とラベル付けされている検出エンティティフィールドから、一意の IP アドレス値のリストを返します (大文字と小文字を区別しません)。
入力と出力🔗
例🔗
detectionId🔗
検出レコードを解析し、ID または UUID を返します。
入力と出力🔗
例🔗
detectionId(inputs)
出力: "detection://priv:endpoint-redcloak:12345:1678899090095:29ab783f-d3b5-4d4e-8025-9d36f4e1d2ae"
detectionInvestigationIds🔗
検出レコードを解析し、検出に関連付けられた調査 ID のリストを返します。
入力と出力🔗
例🔗
detectionInvestigationIds(inputs)
出力: ["29ab783f-d3b5-4d4e-8025-9d36f4e1d2ae", "aef81a33-fe5c-43fe-b589-c5ff8c3cce1c"]
detectionMitreAttackInfo🔗
検出レコードを解析し、mitre_attack_info 値のリストを返します。
入力と出力🔗
例🔗
detectionMitreAttackInfo(inputs)
出力: [{"description":"Adversaries may attempt...","technique":"Process Discovery","technique_id":"T1057"}]
detectionObservationIds🔗
検出レコードを解析し、観測 ID 値のリストを返します。
入力と出力🔗
例🔗
detectionObservationIds(inputs)
出力: ["29ab783f-d3b5-4d4e-8025-9d36f4e1d2ae", "aef81a33-fe5c-43fe-b589-c5ff8c3cce1c"]
detectionReferences🔗
検出レコードを解析し、検出に関連付けられた参照のリストを返します。
入力と出力🔗
例🔗
detectionReferences(inputs)
出力: [{"description": "External Detection Ref", "url": "https://example.com/detection/29ab783f-d3b5-4d4e-8025-9d36f4e1d2ae"}]
detectionResolution🔗
検出レコードを解析し、解決値を返します。
入力と出力🔗
例🔗
detectionResolutionReason🔗
検出レコードを解析し、解決理由の値を返します。
入力と出力🔗
例🔗
detectionResolutionReason(inputs)
出力: "Valid activity for this user."
detectionRuleId🔗
検出レコードを解析し、ルール ID を返します。
入力と出力🔗
例🔗
detectionSensorIds🔗
検出レコードを解析し、センサー ID 値のリストを返します。
入力と出力🔗
例🔗
detectionSensorTypes🔗
検出レコードを解析し、一意のセンサータイプ値のリストを返します (大文字)。
入力と出力🔗
例🔗
detectionSensorTypes(inputs)
出力: ["ENDPOINT_REDCLOAK", "ENDPOINT_TAEGIS"]
detectionSeverity🔗
検出レコードを解析し、重大度の値を返します。
入力と出力🔗
例🔗
detectionSeverityNice🔗
検出レコードを解析し、人が読みやすい重大度の値を単語 (Informational、Low、Medium、High、Critical) で返します。
入力と出力🔗
例🔗
detectionSourceEntities🔗
検出の source_entities フィールドからソースエンティティのリストを返します。
入力と出力🔗
例🔗
detectionSourceEntities(inputs)
出力: [{"id": "...", "display_name": "...", "perspective": "SOURCE", ...}]
detectionSourceEntityProperties🔗
source_entities を property_type でフィルタリングし、指定されたプロパティキーの値を返します。
入力と出力🔗
例🔗
detectionSourceEntityProperties(inputs, "EntityUser", ["user_name", "original_user_name"])
出力: ["jdoe", "jdoe"]
detectionSourceIPs🔗
検出レコードを解析し、エンティティが sourceIPAddress とラベル付けされている検出エンティティフィールドから、一意の IP アドレス値のリストを返します (大文字と小文字を区別しません)。
入力と出力🔗
例🔗
detectionStatus🔗
検出レコードを解析し、ステータス値を返します。
入力と出力🔗
例🔗
detectionTags🔗
検出レコードを解析し、タグのリストを返します。
入力と出力🔗
例🔗
detectionTags(inputs)
出力: ["detectionRule:29ab783f-d3b5-4d4e-8025-9d36f4e1d2ae", "compactor:handler"]
detectionTargetEntities🔗
検出の target_entities フィールドからターゲットエンティティのリストを返します。
入力と出力🔗
例🔗
detectionTargetEntities(inputs)
出力: [{"id": "...", "display_name": "...", "perspective": "TARGET", ...}]
detectionTargetEntityProperties🔗
target_entities を property_type でフィルタリングし、指定されたプロパティキーの値を返します。
入力と出力🔗
例🔗
detectionTargetEntityProperties(inputs, "EntityFileHash", ["hash_value"])
出力: ["abc123def456"]
detectionTenantId🔗
検出レコードを解析し、テナント ID を返します。
入力と出力🔗
例🔗
detectionThirdPartyDetail🔗
検出レコードとサードパーティ詳細データを解析し、指定されたパスに一致する最初の値を返します。
入力と出力🔗
例🔗
detectionThirdPartyDetail(inputs, 'userStates.0.aadUserId')
出力: ["F86DBD0D-6571-44A0-BAE1-43B83CF430AD"]
detectionTitle🔗
検出レコードを解析し、タイトル値を返します。
入力と出力🔗
例🔗
detectionUpdatedAtNanos🔗
検出レコードを解析し、検出が変更された時刻のナノ秒値を返します。
入力と出力🔗
例🔗
detectionUpdatedAtSeconds🔗
検出レコードを解析し、updated_at の値をエポックからの秒数として返します。
入力と出力🔗
例🔗
detectionUsernames🔗
検出レコードを解析し、エンティティが username とラベル付けされている検出エンティティフィールドから、小文字の一意なユーザー名値のリストを返します (大文字と小文字を区別しません)。
入力と出力🔗
例🔗
distinct🔗
リストから重複要素を削除し、各要素の最初の出現を保持します。
入力と出力🔗
元のリストから一意の要素のみを含む新しいリストを返します。
各要素の最初の出現は、出現した順序で保持されます。
重複は削除されます。
ユースケース🔗
注意🔗
- 最初の出現順序を保持します。
- 比較可能な任意の型で動作します。
- 空のリストは空のままです。
- 出力はソートされません。
例🔗
['b', 'b', 'c', 'a', 'c'].distinct()
出力: ['b', 'c', 'a']
重複した文字列を削除し、その順序を保持します。
domains🔗
指定されたユーザー名引数が、指定された 1 つ以上のドメイン内にある場合に true を返します。
入力と出力🔗
例🔗
encodeBase64🔗
文字列入力を base64 文字列としてエンコードして返します。
入力と出力🔗
例🔗
encodeJSON🔗
文字列入力を JSON 文字列としてエンコードして返します。
入力と出力🔗
例🔗
encodeYAML🔗
任意の値を YAML 文字列としてエンコードします。
入力と出力🔗
例🔗
entityValue🔗
エンティティレコードを解析し、指定されたエンティティプロパティの値のリストを返します。
入力と出力🔗
例🔗
entityValues🔗
エンティティレコードを解析し、エンティティに関連付けられた値のリストを返します。
入力と出力🔗
例🔗
exists🔗
リストまたはマップを反復処理し、条件が少なくとも 1 つの要素に対して真であることを検証します。
入力と出力🔗
例🔗
{"x": "foo", "y": "bar"}.exists(key, key.startsWith("z"))
出力: false
exists_one🔗
リストまたはマップを反復処理し、条件がちょうど 1 つの要素に対して真であることを検証します。
入力と出力🔗
例🔗
{"a": "hello", "aa": "hellohello"}.exists_one(k, k.startsWith("a"))
出力: false
filehashes🔗
アラートまたはエンティティから、見つかったファイルハッシュのリストを返します。
入力と出力🔗
例🔗
filehashes(inputs)
出力: ["445362b51bf855f62f9af7bb8362c8b27c7bc1ceb1dc88fd41a72de19b779969", "2e5a8590cf6848968fc23de3fa1e25f1", "9785001b0dcf755eddb8af294a373c0b87b2498660f724e76c4d53f9c217c7a3"]
filter🔗
リストを反復処理し、指定された条件に一致する要素を返します。
入力と出力🔗
例🔗
["a", "ab", "c"].filter(x, x.contains("a"))
出力: ["a", "ab"]
findingCheck🔗
ID の発見事項レコードを解析し、チェックマップを返します。第 2 引数を指定すると、特定のエントリーを返します。
入力と出力🔗
例🔗
findingCheck(inputs)
出力: {'autoResolutionDisabled':false,'category':'CONFIGURATION', ... }
findingCheck(inputs, "title")
出力: "Application shall not have unclaimed DNS names that are susceptible to takeover"
findingCheck(inputs, "description")
出力: "Threat actors can exploit vulnerabilities in Microsoft Entra ID applications by registering unclaimed subdomains, also known as dangling Fully Qualified Domain Names (FQDNs)."
findingClosedAt🔗
ID の発見事項レコードを解析し、クローズ日時のタイムスタンプを返します。
入力と出力🔗
例🔗
findingConfidenceScore🔗
ID の発見事項レコードを解析し、信頼度スコアを返します。
入力と出力🔗
例🔗
findingFieldChanged🔗
発見事項レコードを解析し、指定されたフィールドが変更された場合は true を返します。
入力と出力🔗
例🔗
findingFieldChanged(inputs, 'nonexistent_field')
出力: false
findingFirstSeen🔗
ID の発見事項レコードを解析し、初回確認タイムスタンプを返します。
入力と出力🔗
例🔗
findingId🔗
ID の発見事項レコードを解析し、ID を返します。
入力と出力🔗
例🔗
findingIdentityCity🔗
ID の発見事項レコードを解析し、ID データから市区町村を返します。
入力と出力🔗
例🔗
findingIdentityCompanyName🔗
ID の発見事項レコードを解析し、ID データから会社名を返します。
入力と出力🔗
例🔗
findingIdentityCountry🔗
ID の発見事項レコードを解析し、ID データから国を返します。
入力と出力🔗
例🔗
findingIdentityCreatedAt🔗
ID の発見事項レコードを解析し、ID データから作成タイムスタンプを返します。
入力と出力🔗
例🔗
findingIdentityDepartment🔗
ID の発見事項レコードを解析し、ID データから部門を返します。
入力と出力🔗
例🔗
findingIdentityDisplayName🔗
ID の発見事項レコードを解析し、ID データから表示名を返します。
入力と出力🔗
例🔗
findingIdentityEmails🔗
ID の発見事項レコードを解析し、ID データからメールアドレスを返します。
入力と出力🔗
例🔗
findingIdentityEmails(inputs)
出力: ["john.doe@example.com", "j.doe@example.com"]
findingIdentityEmployeeId🔗
ID の発見事項レコードを解析し、ID データから従業員 ID を返します。
入力と出力🔗
例🔗
findingIdentityEmployeeType🔗
ID の発見事項レコードを解析し、ID データから雇用形態を返します。
入力と出力🔗
例🔗
findingIdentityExternalCreatedAt🔗
ID の発見事項レコードを解析し、ID データから外部作成タイムスタンプを返します。
入力と出力🔗
例🔗
findingIdentityExternalCreatedAt(inputs)
出力: "2024-01-15T10:30:00Z"
findingIdentityExternalId🔗
ID の発見事項レコードを解析し、ID データから外部 ID を返します。
入力と出力🔗
例🔗
findingIdentityExternalUpdatedAt🔗
ID の発見事項レコードを解析し、ID データから外部更新タイムスタンプを返します。
入力と出力🔗
例🔗
findingIdentityExternalUpdatedAt(inputs)
出力: "2024-01-20T15:45:00Z"
findingIdentityField🔗
発見事項を解析し、指定された ID フィールドの値を返します。
入力と出力🔗
例🔗
findingIdentityField(inputs, 'nonexistent_field')
出力:
findingIdentityGivenName🔗
ID の発見事項レコードを解析し、ID データから名を返します。
入力と出力🔗
例🔗
findingIdentityHasMfa🔗
ID の発見事項レコードを解析し、ID データから MFA が有効かどうかを返します。
入力と出力🔗
例🔗
findingIdentityHasPasswordlessMfa🔗
ID の発見事項レコードを解析し、ID データからパスワードレス MFA が有効かどうかを返します。
入力と出力🔗
例🔗
findingIdentityHireDate🔗
ID の発見事項レコードを解析し、ID データから入社日を返します。
入力と出力🔗
例🔗
findingIdentityIsAdmin🔗
ID の発見事項レコードを解析し、その ID が管理者権限を持つかどうかを返します。
入力と出力🔗
例🔗
findingIdentityIsGuest🔗
ID の発見事項レコードを解析し、その ID がゲストユーザーかどうかを返します。
入力と出力🔗
例🔗
findingIdentityLastActiveAt🔗
ID の発見事項レコードを解析し、ID データから最終アクティブタイムスタンプを返します。
入力と出力🔗
例🔗
findingIdentityLastPasswordChangeAt🔗
ID の発見事項レコードを解析し、ID データから最終パスワード変更タイムスタンプを返します。
入力と出力🔗
例🔗
findingIdentityLastPasswordChangeAt(inputs)
出力: "2024-08-15T09:00:00Z"
findingIdentityLeaveDate🔗
ID の発見事項レコードを解析し、ID データから退職日を返します。
入力と出力🔗
例🔗
findingIdentityLocation🔗
ID の発見事項レコードを解析し、ID データから所在地を返します。
入力と出力🔗
例🔗
findingIdentityManager🔗
ID の発見事項レコードを解析し、ID データからマネージャーを返します。
入力と出力🔗
例🔗
findingIdentityMfaMethods🔗
ID の発見事項レコードを解析し、ID データから MFA 方法を返します。
入力と出力🔗
例🔗
findingIdentityMfaMethods(inputs)
出力: ["SMS", "Authenticator App"]
findingIdentityOfficeLocation🔗
ID の発見事項レコードを解析し、ID データからオフィス所在地を返します。
入力と出力🔗
例🔗
findingIdentityOfficeLocation(inputs)
出力: "Building A, Floor 5"
findingIdentityOfficeZipCode🔗
ID の発見事項レコードを解析し、ID データからオフィス郵便番号を返します。
入力と出力🔗
例🔗
findingIdentityPhoneNumbers🔗
ID の発見事項レコードを解析し、ID データから電話番号を返します。
入力と出力🔗
例🔗
findingIdentityPhoneNumbers(inputs)
出力: ["+1-555-0123", "+1-555-0124"]
findingIdentityPrimaryDomain🔗
ID の発見事項レコードを解析し、ID データからプライマリドメインを返します。
入力と出力🔗
例🔗
findingIdentityPrimaryEntityId🔗
ID の発見事項レコードを解析し、ID データからプライマリエンティティ ID を返します。
入力と出力🔗
例🔗
findingIdentityPrimaryEntityId(inputs)
出力: "entity-12345-abcd"
findingIdentityPrimaryMfaMethod🔗
ID の発見事項レコードを解析し、ID データからプライマリ MFA 方法を返します。
入力と出力🔗
例🔗
findingIdentityPrimaryMfaMethod(inputs)
出力: "Authenticator App"
findingIdentityPrimaryUsername🔗
ID の発見事項レコードを解析し、ID データからプライマリユーザー名を返します。
入力と出力🔗
例🔗
findingIdentityProperties🔗
ID の発見事項レコードを解析し、ID データからプロパティマップを返します。
入力と出力🔗
例🔗
findingIdentityProperties(inputs)
出力: {"customAttribute1": "value1", "customAttribute2": "value2"}
findingIdentityProviderId🔗
ID の発見事項レコードを解析し、ID データからプロバイダー ID を返します。
入力と出力🔗
例🔗
findingIdentityRaw🔗
ID の発見事項レコードを解析し、生の ID データを返します。
入力と出力🔗
例🔗
findingIdentityRaw(inputs)
出力: {"id": "user-123", "displayName": "John Doe", "mail": "john.doe@example.com"}
findingIdentityRegion🔗
ID の発見事項レコードを解析し、ID データからリージョンを返します。
入力と出力🔗
例🔗
findingIdentityStatus🔗
ID の発見事項レコードを解析し、ID データからステータスを返します。
入力と出力🔗
例🔗
findingIdentitySurname🔗
ID の発見事項レコードを解析し、ID データから姓を返します。
入力と出力🔗
例🔗
findingIdentityTenant🔗
ID の発見事項レコードを解析し、ID データからテナントを返します。
入力と出力🔗
例🔗
findingIdentityTitle🔗
ID の発見事項レコードを解析し、ID データから役職を返します。
入力と出力🔗
例🔗
findingIdentityUpdatedAt🔗
ID の発見事項レコードを解析し、ID データから更新タイムスタンプを返します。
入力と出力🔗
例🔗
findingIdentityUsageLocation🔗
ID の発見事項レコードを解析し、ID データから利用場所を返します。
入力と出力🔗
例🔗
findingIdentityUsernames🔗
ID の発見事項レコードを解析し、ID データからユーザー名を返します。
入力と出力🔗
例🔗
findingIdentityUsernames(inputs)
出力: ["john.doe", "jdoe", "john.doe@example.com"]
findingIdentityZipCode🔗
ID の発見事項レコードを解析し、ID データから郵便番号を返します。
入力と出力🔗
例🔗
findingLastModified🔗
ID の発見事項レコードを解析し、最終変更タイムスタンプを返します。
入力と出力🔗
例🔗
findingLastSeen🔗
ID の発見事項レコードを解析し、最終確認タイムスタンプを返します。
入力と出力🔗
例🔗
findingOtherReferences🔗
ID の発見事項レコードを解析し、その他の参照リストを返します。オプションの第 2 引数を指定すると、特定のエントリーのリストを返します。
入力と出力🔗
例🔗
findingOtherReferences(inputs)
出力: [{"type":"microsoft.graph.servicePrincipal","id":"e98c0bf1-f226-4465-940f-696a79e7bdc6","logicalType":"IDENTITY_SERVICE_PRINCIPAL","derivedType":"APP","displayName":"soanceawebapp","externalLink":"https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/Overview/appId/7fcde2b0-9fda-472a-8be3-3666f92f7aa1"}]
findingOtherReferences(inputs, 'type')
出力: ["microsoft.graph.application"]
findingOtherReferences(inputs, 'id')
出力: ["7fcde2b0-9fda-472a-8be3-3666f92f7aa1"]
findingOtherReferences(inputs, 'logicalType')
出力: ["UNKNOWN"]
findingOtherReferences(inputs, 'derivedType')
出力: ["APP"]
findingOtherReferences(inputs, 'displayName')
出力: ["soanceawebapp"]
findingOtherReferences(inputs, 'externalLink')
出力: ["https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/Overview/appId/7fcde2b0-9fda-472a-8be3-3666f92f7aa1"]
findingPrimaryReference🔗
ID の発見事項レコードを解析し、プライマリ参照マップを返します。オプションの第 2 引数を指定すると、特定のエントリーを返します。
入力と出力🔗
例🔗
findingPrimaryReference(inputs)
出力: {"type":"microsoft.graph.servicePrincipal","id":"e98c0bf1-f226-4465-940f-696a79e7bdc6","logicalType":"IDENTITY_SERVICE_PRINCIPAL","derivedType":"APP","displayName":"soanceawebapp","externalLink":"https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/Overview/appId/7fcde2b0-9fda-472a-8be3-3666f92f7aa1"}
findingPrimaryReference(inputs, 'type')
出力: "microsoft.graph.servicePrincipal"
findingPrimaryReference(inputs, 'id')
出力: "e98c0bf1-f226-4465-940f-696a79e7bdc6"
findingPrimaryReference(inputs, 'logicalType')
出力: "IDENTITY_SERVICE_PRINCIPAL"
findingPrimaryReference(inputs, 'derivedType')
出力: "APP"
findingPrimaryReference(inputs, 'displayName')
出力: "soanceawebapp"
findingPrimaryReference(inputs, 'externalLink')
出力: "https://portal.azure.com/#view/Microsoft_AAD_IAM/ManagedAppMenuBlade/~/Overview/objectId/e98c0bf1-f226-4465-940f-696a79e7bdc6/appId/7fcde2b0-9fda-472a-8be3-3666f92f7aa1"
findingResult🔗
ID の発見事項レコードを解析し、結果を返します。
入力と出力🔗
例🔗
findingResult(inputs)
出力: "{\"replyUrls\":[\"https://soanceawebapp.azurewebsites.net/.auth/login/aad/callback\"]}"
findingSeverity🔗
ID の発見事項レコードを解析し、重大度ラベル (INFO、LOW、MEDIUM、HIGH、CRITICAL) を返します。
オプションの第 2 引数に true を指定すると、重大度を double (0.0-1.0) として返します。
入力と出力🔗
例🔗
findingSource🔗
ID の発見事項レコードを解析し、ソースマップを返します。オプションの第 2 引数を指定すると、特定のエントリーを返します。
入力と出力🔗
例🔗
findingSource(inputs)
出力: {'id':'63258f26-1d39-4d69-9e85-e409244d9c97','resolved':{...},'type':'IDENTITY_PROVIDER'}
findingSource(inputs, 'resolved')
出力: {'createdAt':'2025-02-03T08:32:21.80852Z','disabledAt':null,'expiration':'2026-06-06T05:00:03Z',...}
findingStatus🔗
ID の発見事項レコードを解析し、ステータスを返します。
入力と出力🔗
例🔗
findingStatusComments🔗
ID の発見事項レコードを解析し、ステータスコメントを返します。
入力と出力🔗
例🔗
findingTenantId🔗
ID の発見事項レコードを解析し、テナント ID を返します。
入力と出力🔗
例🔗
findingsStatusCommentsUserId🔗
ID の発見事項レコードを解析し、ステータスコメントを追加したユーザー ID を返します。
入力と出力🔗
例🔗
findingsStatusCommentsUserId(inputs)
出力: "3f59db3b-6b9c-4fb8-a26d-4c53fb334b4e"
first (オプション要素)🔗
リストの最初の要素を含むオプションを返します。リストが空の場合は optional.none() を返します。
入力と出力🔗
リストの最初の要素を含むオプションを返します。リストが空の場合は optional.none() を返します。
ユースケース🔗
注意🔗
Tが要素型であるoptional(T)を返します。- 空のリストに対して安全に
optional.none()を返します。 list[?0]よりも表現力があります。- デフォルト値を指定するには
.orValue()を使用します。 - 元のリストは変更しません。
例🔗
first (リスト要素)🔗
リストの先頭 N 個の要素を返します。
入力と出力🔗
例🔗
flatten🔗
すべてのネストされたリストを 1 つのトップレベルリストに結合したリストを返します。
入力と出力🔗
例🔗
flatten([["row1col1", "row1col2"], ["row2col1", "row2col2"]])
出力: ["row1col1", "row1col2", "row2col1", "row2col2"]
format (文字列)🔗
指定された引数を使用して、printf スタイルの書式で文字列をフォーマットします。
入力と出力🔗
リストの値を使用して、printf スタイルの書式指定子で文字列をフォーマットします。
一般的な書式指定子:
%s: 文字列。%d: 整数。%f: 浮動小数点数。%%: リテラルのパーセント記号。
例🔗
'Value: %d, Name: %s'.format([42, 'test'])
出力: "Value: 42, Name: test"
format (タイムスタンプ)🔗
指定された形式を使用してタイムスタンプの文字列表現を返します。サポートされている形式の一覧については、Constants を参照してください。
入力と出力🔗
例🔗
"1/1/2012".toTimestamp().format("layout")
出力: 2012-01-01T00:00:00Z
"1/1/2012".toTimestamp().format("dateonly")
出力: 2012-01-01
generateString🔗
第 1 引数で指定された長さと、第 2 引数で指定された文字またはアルファベットを使用して、ランダムに生成された文字列を返します。
入力と出力🔗
例🔗
generateString(5, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890")
出力: aPsd2
groupBy🔗
1 つ以上のパスでグループ化されたマップ要素のリストと、各グループの対応する件数を返します。
第 1 引数はグループ化するリストです。第 2 引数はグループ化に使用するパスのリストです。オプションの第 3 引数は、リストを昇順 (asc) または降順 (desc) に並べ替えます。デフォルトは昇順です。
入力と出力🔗
例🔗
groupBy([{"amap": {"host": "test", "title": "test"}}, {"amap": {"host": "test", "title": "test"}}, {"amap": {"host": "test1", "title": "test"}}], ["amap.host", "amap.title"], "asc")
groupBy([{"amap": {"host": "test", "title": "test"}}, {"amap": {"host": "test", "title": "test"}}, {"amap": {"host": "test1", "title": "test"}}], ["amap.host", "amap.title"], "asc")
出力: [{"amap.host": "test1", "amap.title": "test", "count": 1}, {"amap.host": "test", "amap.title": "test", "count": 2}]
has🔗
キーが存在し、定義されており、null 以外の値を持つことを検証します。
このマクロは、1 つ以上のパスについてマップを確認することもサポートしています。オプションの第 3 引数は、パスで使用する区切り文字を指定します。
入力と出力🔗
例🔗
hasValue🔗
optional に値が含まれている場合は true を返します。そうでない場合は false を返します。
入力と出力🔗
optional に値が含まれているかどうかを確認します。
ユースケース🔗
注意事項🔗
- ブール値 (
trueまたはfalse) を返します。 - 任意の optional に対して安全に呼び出せます。
- エラーを回避するため、
.value()を呼び出す前に使用してください。 - 条件式とともによく使用されます。
- エラーを確認する代替手段を提供します。
例🔗
hostnames🔗
アラート、エンティティ、または資産を解析し、見つかったホスト名を返します。
入力と出力🔗
例🔗
indexOf🔗
部分文字列が最初に出現するインデックスを返します。
入力と出力🔗
部分文字列が最初に出現する位置の 0 ベースのインデックスを返します。
部分文字列が見つからない場合は -1 を返します。
省略可能な 2 番目の引数は、検索の開始位置を指定します。
例🔗
investigationArchivedAt🔗
調査レコードを解析し、アーカイブされた日時を返します。
入力と出力🔗
例🔗
investigationAssigneeId🔗
調査レコードを解析し、担当者の ID を返します。
入力と出力🔗
例🔗
investigationAssigneeId(inputs)
出力: "dac1ed31-111-4809-9cc9-9f99b6e"
investigationCloseReason🔗
調査レコードを解析し、クローズされた理由を返します。
入力と出力🔗
例🔗
investigationComment🔗
調査レコードを解析し、それに関連付けられたコメントを返します。
入力と出力🔗
例🔗
investigationComment(inputs)
出力: "This is a sample comment for the investigation."
investigationCommentAuthorId🔗
調査レコードを解析し、コメントの作成者の ID を返します。
入力と出力🔗
例🔗
investigationCommentAuthorId(inputs)
出力: "dac1ed31-111-4809-9cc9-9f99b6e"
investigationCommentCreatedAt🔗
調査レコードを解析し、コメントが作成された日時を返します。
入力と出力🔗
例🔗
investigationCommentCreatedAt(inputs)
出力: "2024-06-20T17:57:46.700164Z"
investigationCommentMentions🔗
調査レコードを解析し、コメント内のメンションのリストを返します。
入力と出力🔗
例🔗
investigationCommentMentions(inputs)
出力: ["@secureworks", "@dac1ed31-111-4809-9cc9-9f99b6e"]
investigationCommentOperation🔗
調査レコードを解析し、コメントの操作タイプを返します。
入力と出力🔗
例🔗
investigationContributorIds🔗
調査レコードを解析し、投稿者 ID のリストを返します。
入力と出力🔗
例🔗
investigationContributorIds(inputs)
出力: ["dac1ed31-111-4809-9cc9-9f99b6e", "ff0197b0@clients"]
investigationCreatedAt🔗
調査レコードを解析し、作成日時を返します。
入力と出力🔗
例🔗
investigationCreatedById🔗
調査レコードを解析し、それを作成したユーザーの ID を返します。
入力と出力🔗
例🔗
investigationCreatedById(inputs)
出力: "dac1ed31-111-4809-9cc9-9f99b6e"
investigationCreatedByPartner🔗
調査レコードを解析し、テナントの親によって作成された場合は true を返します。
入力と出力🔗
例🔗
investigationFieldChanged🔗
調査レコードを解析し、指定されたフィールドが変更された場合は true を返します。
入力と出力🔗
例🔗
investigationFieldChanged(inputs, 'priority')
出力: true
investigationFieldChanged(inputs, 'nonexistent_field')
出力: false
investigationId🔗
調査レコードを解析し、ID を返します。
入力と出力🔗
例🔗
investigationKeyFindings🔗
調査レコードを解析し、主な発見事項を返します。
入力と出力🔗
例🔗
investigationKeyFindings(inputs)
出力: "Sample Investigation Key Findings"
investigationPriority🔗
調査レコードを解析し、優先度を単語 (Low、Medium、High、または Critical) として返します。
省略可能な 2 番目の引数に true を指定すると、優先度を整数 (1-4) として返します。
入力と出力🔗
例🔗
investigationProcessingStatus🔗
調査レコードを解析し、処理ステータスマップを返します。
入力と出力🔗
例🔗
investigationProcessingStatus(inputs)
出力: {"alerts": "SUCCESS", "assets": "SUCCESS", "events": "SUCCESS"}
investigationRuleId🔗
調査レコードを解析し、それを作成した自動調査ルール ID を返します。
入力と出力🔗
例🔗
investigationStatus🔗
調査レコードを解析し、ステータスを返します。
入力と出力🔗
例🔗
investigationTenantId🔗
調査レコードを解析し、テナントの ID を返します。
入力と出力🔗
例🔗
investigationThirdPartyId🔗
調査レコードを解析し、それに関連付けられたサードパーティレコードの ID を返します。
入力と出力🔗
例🔗
investigationThirdPartyId(inputs)
出力: "bdf9f35a8383121055c9e330ceaad3b8"
investigationThirdPartyType🔗
調査レコードを解析し、それに関連付けられたサードパーティレコードのタイプを返します。
入力と出力🔗
例🔗
investigationTitle🔗
調査レコードを解析し、タイトルを返します。
入力と出力🔗
例🔗
investigationType🔗
調査レコードを解析し、タイプを返します。
省略可能な 2 番目の引数 'v1' または 'v2' はタイプを変換します。デフォルトは 'v2' です。
入力と出力🔗
例🔗
investigationUpdatedAt🔗
調査レコードを解析し、最後に更新された日時を返します。
入力と出力🔗
例🔗
investigationUpdatedById🔗
調査レコードを解析し、最後に更新したユーザーの ID を返します。
入力と出力🔗
例🔗
investigationUpdatedById(inputs)
出力: "dac1ed31-111-4809-9cc9-9f99b6e"
ipInNetwork🔗
最初の引数の IP アドレスが、2 番目の引数の 1 つ以上の IP ネットワーク範囲内にある場合は true を返します。
2 番目の引数は、CIDR 表記のネットワークのリストとして表されます。
入力と出力🔗
例🔗
ipsv4🔗
アラートまたはエンティティを解析し、見つかった場合は IPv4 アドレスのリストを返します。
入力と出力🔗
例🔗
isCaseClosed🔗
ケースレコードを解析し、ケースがクローズされているかどうかを返します。
入力と出力🔗
例🔗
isCaseVisibleToCustomers🔗
ケースレコードを解析し、ケースがお客様に表示されるかどうかを返します。
入力と出力🔗
例🔗
isDomain🔗
指定された文字列引数が有効なドメインを表す場合は true を返します。
入力と出力🔗
例🔗
isEmail🔗
指定された文字列引数が有効なメールアドレスを表す場合は true を返します。
入力と出力🔗
例🔗
isIP🔗
指定された文字列引数が有効な IPv4 アドレスを表す場合は true を返します。
入力と出力🔗
例🔗
isPrivateIP🔗
指定された文字列引数が、プライベート (RFC-1918)、リンクローカル、またはループバック IPv4 アドレスを表す場合は true を返します。
入力と出力🔗
例🔗
isURL🔗
指定された文字列引数が有効な Uniform Resource Locator (URL) を表す場合は true を返します。
入力と出力🔗
例🔗
isUUID🔗
指定された文字列引数が有効な Universally Unique Identifier (UUID) を表す場合は true を返します。
入力と出力🔗
例🔗
isUUID("ce53ce61-0745-4b9b-ad16-568a022b6002")
出力: true
join🔗
リストの要素を、指定された区切り文字を使用して文字列に結合します。
デフォルトの区切り文字はカンマ文字です。
入力と出力🔗
例🔗
keys🔗
マップからトップレベルキーのリストを返します。
入力と出力🔗
例🔗
last (list elements)🔗
リストの最後の N 個の要素を返します。
入力と出力🔗
例🔗
last (optional element)🔗
リストの最後の要素を含む optional を返します。リストが空の場合は optional.none() を返します。
入力と出力🔗
リストの最後の要素を含む optional を返します。
リストが空の場合は optional.none() を返します。
ユースケース🔗
注意事項🔗
Tが要素型であるoptional(T)を返します。- 空のリストに対しては安全に
optional.none()を返します。 list[?list.size()-1]よりも表現力があります。- デフォルトを指定するには
.orValue()を使用します。 - 元のリストは変更しません。
例🔗
lastIndexOf🔗
部分文字列が最後に出現するインデックスを返します。
入力と出力🔗
部分文字列が最後に出現する位置の 0 ベースのインデックスを返します。
部分文字列が見つからない場合は -1 を返します。
省略可能な 2 番目の引数は、検索の終了位置を指定します。
例🔗
list🔗
入力をリストに変換します。
入力と出力🔗
例🔗
list([{"a": 1, "b": 2}, {"a": 3, "b": 4}].map(x, x.a))
出力: [1, 3]
lists.range🔗
0 から n-1 までの連続した整数のリストを生成します。
入力と出力🔗
0 (含む) から n (含まない) までの整数のリストを生成します。
[0, 1, 2, ..., n-1] を返します。
0 以下の値に対しては空のリストを返します。
ユースケース🔗
配列を埋める。
出力: ['item-0', 'item-1', ..., 'item-9']
文字列のリストを作成します。
lowerAscii🔗
文字列内のすべての ASCII 文字を小文字に変換します。
入力と出力🔗
すべての ASCII 大文字 (A-Z) を小文字 (a-z) に変換します。
ASCII 以外の文字は変更されません。
例🔗
map🔗
入力をマップに変換します。
入力と出力🔗
例🔗
map([{"a": 1, "b": 2}, {"a": 3, "b": 4}].map(x, x.a))
出力: {"1": {"a": 1, "b": 2}, "3": {"a": 3, "b": 4}}
matchGroup🔗
指定された regex キャプチャグループから 1 つ以上の文字列のリストを返します。
入力と出力🔗
例🔗
"https://www.example.com".matchGroup("([^:]+:\\/\\/)?([\\w]+[\\.\\w+]+)")
出力: ["https://www.example.com", "https://", "www.example.com"]
math.abs🔗
数値の絶対値を返します。
入力と出力🔗
入力された数値の絶対値 (非負の値) を返します。
int、uint、および double 型で動作します。
例🔗
math.bitAnd🔗
2 つの整数に対してビット単位の AND 演算を実行します。
入力と出力🔗
2 つの整数のビット単位 AND を返します。
結果の各ビットは、オペランドの対応する両方のビットが 1 の場合にのみ 1 になります。
例🔗
math.bitNot🔗
整数に対してビット単位の NOT (補数) 演算を実行します。
入力と出力🔗
整数のビット補数を返します。
各ビットは反転されます。0 は 1 に、1 は 0 になります。
例🔗
math.bitOr🔗
2 つの整数に対してビット単位の OR 演算を実行します。
入力と出力🔗
2 つの整数のビット単位 OR を返します。
結果の各ビットは、オペランドの対応するいずれかのビットが 1 の場合に 1 になります。
例🔗
math.bitShiftLeft🔗
整数のビットを指定された位置数だけ左にシフトします。
入力と出力🔗
すべてのビットを指定された位置数だけ左にシフトします。
右側から 0 がシフトインされます。これは 2^n を掛けることと同等です。
例🔗
math.bitShiftRight🔗
整数のビットを指定された位置数だけ右にシフトします。
入力と出力🔗
すべてのビットを指定された位置数だけ右にシフトします。
符号なし整数では、左側から 0 がシフトインされます。
符号付き整数では、符号ビットが保持されます。これは 2^n で割ることと同等です。
例🔗
math.bitXor🔗
2 つの整数に対してビット単位の XOR (排他的 OR) 演算を実行します。
入力と出力🔗
2 つの整数のビット単位 XOR を返します。
結果の各ビットは、オペランドの対応するビットが異なる場合に 1 になります。
例🔗
math.ceil🔗
数値を最も近い整数に切り上げます (正の無限大方向)。
入力と出力🔗
入力以上の最小の整数値を返します。
負の数であっても常に切り上げます。
例🔗
math.floor🔗
数値を最も近い整数に切り下げます (負の無限大方向)。
入力と出力🔗
入力以下の最大の整数値を返します。
負の数であっても常に切り下げます。
例🔗
math.greatest🔗
指定された引数の中から最大値を返します。
入力と出力🔗
指定されたすべての引数の中で最大の値を返します。
可変個の引数 (int、uint、または double) を受け付けます。
すべての引数は比較可能な数値型である必要があります。
例🔗
math.isFinite🔗
値が有限数かどうかを確認します (NaN または無限大ではない)。
入力と出力🔗
値が有限数 (NaN または無限大ではない) の場合は true を返します。
NaN、正の無限大、または負の無限大に対しては false を返します。
例🔗
math.isInf🔗
値が正または負の無限大かどうかを確認します。
入力と出力🔗
値が無限大の場合は true を返します。
例🔗
math.isNaN🔗
値が NaN (Not a Number) かどうかを確認します。
入力と出力🔗
値が NaN の場合は true を返します。そうでない場合は false を返します。
浮動小数点値にのみ適用されます。
例🔗
math.least🔗
指定された引数の中から最小値を返します。
入力と出力🔗
指定されたすべての引数の中で最小の値を返します。
可変個の引数 (int、uint、または double) を受け付けます。
すべての引数は比較可能な数値型である必要があります。
例🔗
math.round🔗
数値を最も近い整数に丸めます (0 から離れる方向に 0.5 を丸める)。
入力と出力🔗
最も近い整数値を返し、0.5 の値は 0 から離れる方向に丸めます。
正の数では 0.5 は切り上げられます。負の数では -0.5 は切り下げられます。
例🔗
math.sign🔗
数値の符号を返します。負の場合は -1、ゼロの場合は 0、正の場合は 1 です。
入力と出力🔗
返される値:
- 数値が負の場合は
-1 - 数値がゼロの場合は
0 - 数値が正の場合は
1
例🔗
math.sqrt🔗
数値の平方根を返します。
入力と出力🔗
入力された数値の平方根を返します。
負の入力に対しては NaN を返します。
例🔗
math.trunc🔗
数値を整数部分に切り詰めます (0 方向)。
入力と出力🔗
小数部分を取り除いて数値の整数部分を返します。
正の数と負の数の両方で 0 方向に丸めます。
例🔗
md5sum🔗
指定された文字列に対して計算された MD5 ダイジェストを返します。
入力と出力🔗
例🔗
merge🔗
既存のマップに要素を追加します。
入力と出力🔗
例🔗
merge({"key1": "val1"}, {"key2": "val2"})
出力: {"key1": "val1", "key2": "val2"}
now🔗
現在のローカル時刻をタイムスタンプとして返します。
入力と出力🔗
例🔗
nowUnixMilli🔗
現在時刻を、エポックからのミリ秒数として返します。
入力と出力🔗
例🔗
optFlatMap🔗
optional の値を、optional を返す関数で変換し、結果をフラット化します。
入力と出力🔗
optional を返す変換を適用します。
optMap とは異なり、optional がネストされません。元の optional が空であるか、変換が optional.none() を返す場合、結果は optional.none() になります。
ユースケース🔗
条件付き変換。
条件が満たされた場合にのみ変換します。
複数の optional ソース。
optional オブジェクト内で optional のマップ参照を実行します。
注意事項🔗
- 変数バインディング構文:
optFlatMap(var, optional を返す式)。 optional(optional(T))のような optional のネストを防ぎます。- 変換自体が optional を返す場合に便利です。
- 空の optional は変更されずに
optional.none()としてそのまま渡されます。 - 変換は optional に値が含まれている場合にのみ実行されます。
例🔗
optional.of([1, 2, 3]).optFlatMap(l, l[?0]).orValue(0)
出力: 1
optional.of([]).optFlatMap(l, l[?0]).orValue(0)
出力: 0
optional.none().optFlatMap(l, l[?0]).orValue(0)
出力: 0
optMap🔗
optional に値が存在する場合にその値を変換し、変換後の値を含む新しい optional を返します。
入力と出力🔗
optional に値が存在する場合、その値に変換を適用します。
変換は新しい値を返し、その値は optional にラップされます。
optional が空の場合は optional.none() を返します。
ユースケース🔗
注意事項🔗
- 変数バインディング構文:
optMap(var, var を使用する式)。 Rが結果型であるoptional(R)を返します。- 空の optional は変更されずにそのまま渡されます。
- 最終結果を取り出すには
.orValue()を使用します。 - 変換が optional を返す場合は
.optFlatMap()と比較してください。
例🔗
optional.of('hello').optMap(s, s.upperAscii()).orValue('NONE')
出力: 'HELLO'
optional.of([1, 2, 3]).optMap(l, l.size()).orValue(0)
出力: 3
optional.none🔗
内容を持たない空の optional 値を作成します。
入力と出力🔗
値を含まない空の optional 値を作成します。
ユースケース🔗
注意事項🔗
- 値が存在しないことを表します (
nullに類似)。 optional.none()に対して.hasValue()はfalseを返します。optional.none()に対して.value()を呼び出すとエラーになります。- デフォルト値を指定するには
.orValue()を使用します。 - 他の optional と連鎖させるには
.or()を使用します。
例🔗
optional.of🔗
指定された値を含む optional 値を作成します。
入力と出力🔗
指定された値を含む optional 値を作成します。
ゼロ値を含め、任意の値が有効と見なされます。
ユースケース🔗
注意事項🔗
0、''、[]、または{}などのゼロ値を含む任意の値を受け付けます。Tが値の型であるoptional(T)を返します。- ゼロ値を拒否する
optional.ofNonZeroValue()と比較してください。 - 値が存在するかどうかを確認するには
.hasValue()を使用します。 - フォールバック付きで値を取り出すには
.orValue()を使用します。
例🔗
optional.ofNonZeroValue🔗
値がゼロでない場合にのみ、その値を含む optional を作成します。そうでない場合は optional.none() を返します。
入力と出力🔗
指定された値がゼロ値または空の値でない場合にのみ、その値を含む optional を作成します。
0、''、[]、{}、および null などのゼロ値は optional.none() になります。
ユースケース🔗
注意事項🔗
型ごとのゼロ値:
- 数値:
0,0.0 - 文字列:
'' - リスト:
[] - マップ:
{} - ブール値:
false - バイト列:
b'' - Null:
null
追加の注意事項:
- ゼロ値に対しては
optional.none()を返します。 - 空またはゼロの値を欠損として扱いたい場合に使用します。
- すべての値を受け付ける
optional.of()と比較してください。 - 検証やフィルタリングに便利です。
例🔗
optional.ofNonZeroValue('').hasValue()
出力: false
空文字列は拒否されます。
optional.ofNonZeroValue('hello').hasValue()
出力: true
空でない文字列は受け入れられます。
or🔗
最初の optional に値がある場合はそれを返します。そうでない場合は 2 番目の optional を返します。
入力と出力🔗
optional 値を連鎖させます。
左側の optional に値がある場合はそれが返されます。そうでない場合は右側の optional が返されます。
評価は短絡されます。
ユースケース🔗
注意事項🔗
Tではなくoptional(T)を返します。- 最後に
.orValue()を使用して最終値を取り出します。 - 最初の optional に値がある場合、評価は短絡されます。
- 複数の optional ソースを連鎖させるのに便利です。
- 具体的な値を返す
.orValue()と比較してください。
例🔗
optional.none().or(optional.none()).orValue(10)
出力: 10
orValue🔗
optional に値が存在する場合はその値を返します。そうでない場合は指定されたデフォルト値を返します。
入力と出力🔗
optional に値が存在する場合はその値を取り出し、そうでない場合は指定されたデフォルト値を返します。
ユースケース🔗
注意事項🔗
- デフォルト値は optional の型と一致している必要があります。
- 常に具体的な値を返します。
- 通常の値が期待される場所ならどこでも安全に使用できます。
- 条件式よりも簡潔です。
- 空の optional に対してエラーをスローする
.value()と比較してください。
例🔗
parseURL🔗
指定された URL 文字列を URL マップ構造として返します。
入力と出力🔗
例🔗
parseURL("https://www.example.com")
出力: {"Scheme": "https", "Host": "www.example.com", "Path": "", "RawQuery": "", "Fragment": ""}
queryJSON🔗
最初の引数から、2 番目の引数で指定された JMESPath クエリを使用してデータを返します。
入力と出力🔗
例🔗
queryJSON(inputs.alert2, "metadata.confidence")
出力: 0.5
random🔗
0 から .99 までのランダムな値 (両端を含む) を返します。
入力と出力🔗
例🔗
regex.extract🔗
文字列から正規表現パターンの最初の一致を抽出し、optional 値として返します。
入力と出力🔗
文字列に正規表現パターンを適用し、最初の一致を optional にラップして返します。
パターンにキャプチャグループが含まれている場合は、キャプチャされた値が返されます。
パターンにキャプチャグループが含まれていない場合は、一致全体が返されます。
一致が見つからない場合は optional.none() を返します。
注意事項🔗
パターン構文:
- RE2 正規表現構文を使用します。
- キャプチャグループには丸括弧
()を使用します。 - バックスラッシュは CEL 文字列内でエスケープする必要があります。
- 一般的なパターンには
\d、\w、\sがあります。
追加の注意事項:
- optional 値を返します。
.orValue()または.hasValue()を使用してください。 - パターン一致は左から右に進み、最初の一致のみを返します。
- すべての一致を取得するには
extractAll()を使用します。 - 空文字列および空パターンは適切に処理されます。
- 無効な regex パターンはコンパイルエラーを引き起こします。
regex.extractAll🔗
文字列から正規表現パターンのすべての一致をリストとして抽出します。
入力と出力🔗
文字列に正規表現パターンを適用し、すべての一致を文字列のリストとして返します。
一致が見つからない場合は空のリストを返します。
extract() とは異なり、この関数は最初の一致だけでなく、すべての一致を返します。
ユースケース🔗
すべての単語を抽出する。
出力: ["hello", "world", "test"]
テキストを単語に分割します。
複数の値を解析する。
出力: ["192", "168", "1", "1"]
IP アドレスからすべての数値を抽出します。
一致があるか確認する。
出力: true
パターンが何かに一致するかどうかを確認します。
結果をフィルタリングする。
出力: ["a1", "b2", "c3"]
トークンを抽出し、長さでフィルタリングします。
注意事項🔗
- optional 値ではなくリストを返します。
- 一致が見つからない場合は空のリストを返します。
- キャプチャグループは無視されます。完全一致のみが返されます。
- 文字列から複数の値を抽出するのに便利です。
extract()を複数回呼び出すより効率的です。- 左から右への一致順序を保持します。
例🔗
regex.extractAll('test123foo456bar', '\\d+')
出力: ["123", "456"]
regex.extractAll('hello world test', '\\w+')
出力: ["hello", "world", "test"]
regex.extractAll('192.168.1.1', '\\d+')
出力: ["192", "168", "1", "1"]
regex.replace🔗
文字列内の正規表現パターンの出現箇所を置換文字列で置き換えます。
入力と出力🔗
regex.replace(string, pattern, replacement) -> string
regex.replace(string, pattern, replacement, count) -> string
regex パターンに一致する重複しない部分文字列を置き換えます。
必要に応じて count 引数を使用して置換回数を制限できます。
count が省略された場合または負の場合は、すべての出現箇所が置換されます。
ユースケース🔗
単純なテキスト置換。
出力: "hi world hi"
hello のすべての出現箇所を置換します。
負の count ですべて置換する。
出力: "bxnxnx"
負の count はすべての出現箇所を置換することを意味します。
空白を正規化する。
出力: "hello world test"
複数のスペースを 1 つのスペースに置き換えます。
特殊文字を除去する。
出力: "helloworldtest"
英数字以外の文字を削除します。
電話番号を整形する。
キャプチャグループを使用して電話番号を整形します。
注意事項🔗
- パターンは有効な正規表現である必要があります。
- 置換文字列は、キャプチャグループ参照を除き、文字どおりに扱われます。
countが0の場合、元の文字列が変更されずに返されます。countが負の場合、すべての一致が置換されます。- 一致しないパターンでは元の文字列が変更されずに返されます。
- 空のパターンは文字間に一致します。
キャプチャグループ参照:
\1、\2、\3などを使用します。- 数値のキャプチャグループのみがサポートされます。
- 名前付きキャプチャグループは置換文字列ではサポートされません。
- 無効なキャプチャグループ参照は実行時エラーを引き起こします。
例🔗
regex.replace('hello world hello', 'hello', 'hi')
出力: "hi world hi"
regex.replace('test123test456', '\\d+', 'NUM')
出力: "testNUMtestNUM"
replace🔗
部分文字列のすべての出現箇所を別の文字列に置き換えます。
入力と出力🔗
最初の部分文字列の出現箇所を 2 番目の部分文字列に置き換えます。
省略可能な 3 番目の引数は置換回数を制限します。すべての出現箇所を置換するには -1 を使用します。
例🔗
'hello world'.replace('world', 'universe')
出力: "hello universe"
resolvePartnerName🔗
Taegis テナント ID を解決し、パートナー名を返します。
入力と出力🔗
例🔗
resolveSubjectName🔗
Taegis ユーザー ID またはクライアント ID を解決し、名前文字列を返します。
入力と出力🔗
例🔗
resolveTenantName🔗
Taegis テナント ID を解決し、テナント名を返します。
入力と出力🔗
例🔗
resolveUser🔗
ID、Auth0 ID、またはメールアドレスによって Taegis ユーザーを解決し、Taegis ユーザー ID を返します。
入力と出力🔗
例🔗
resolveUserName🔗
Taegis ユーザー ID を解決し、ユーザー名文字列を返します。
入力と出力🔗
例🔗
reverse🔗
リスト内の要素の順序を逆にします。
入力と出力🔗
要素が逆順になった新しいリストを返します。
最初の要素は最後になり、その逆も同様です。
元のリストは変更しません。
ユースケース🔗
注意事項🔗
- 新しいリストを返します。
- 任意のリスト型で動作します。
- 空のリストおよび単一要素のリストは変更されません。
- 2 回逆順にすると元の順序に戻ります。
例🔗
sets.contains🔗
最初のリストに、2 番目のリストのすべての要素が含まれているかどうかを確認します (部分集合チェック)。
入力と出力🔗
最初のリストに 2 番目のリストのすべての要素が含まれている場合は true を返します。
最初のリストは 2 番目のリストの上位集合と見なされます。
順序は関係ありません。
いずれのリスト内の重複も無視されます。
ユースケース🔗
機能の可用性。
サブスクリプションに必要な機能がすべて含まれているかどうかを確認します。
例🔗
sets.contains(['admin', 'user', 'guest'], ['admin'])
出力: true
sets.equivalent🔗
2 つのリストに同じ要素が含まれているかどうかを確認します。順序と重複は無視されます (集合の等価性)。
入力と出力🔗
両方のリストにまったく同じ要素が含まれている場合は true を返します。
順序は関係ありません。
重複は無視されます。
ユースケース🔗
例🔗
sets.intersects🔗
2 つのリストに共通要素があるかどうかを確認します (空でない積集合)。
入力と出力🔗
2 つのリストが少なくとも 1 つの共通要素を共有している場合は true を返します。
順序は関係ありません。
重複は無視されます。
ユースケース🔗
ロールベースのアクセス制御。
ユーザーが少なくとも 1 つの特権ロールを持っているかどうかを確認します。
権限の検証。
ユーザーが少なくとも 1 つの必要な権限を持っているかどうかを確認します。
例🔗
sets.intersects(['admin', 'user'], ['admin', 'owner'])
出力: true
sha1sum🔗
指定された文字列に対して計算された SHA-1 ダイジェストを返します。
入力と出力🔗
例🔗
sha256sum🔗
指定された文字列に対して計算された SHA-256 ダイジェストを返します。
入力と出力🔗
例🔗
sha256sum("Hello").toHex()
出力: "185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969"
sha512sum🔗
指定された文字列に対して計算された SHA-512 ダイジェストを返します。
入力と出力🔗
例🔗
sha512sum("Hello").toHex()
出力: "3615f80c9d293ed7402687f94b22d58e529b8cc7916f8fac7fddf7fbd5af4cf777d3d795a7a00a16bf7e7f3fb9561ee9baae480da9fe7a18769e71886b03f315"
slice🔗
2 つのインデックスの間にあるリストの一部を抽出します。
入力と出力🔗
開始インデックス (含む) から終了インデックス (含まない) までのサブリストを抽出します。
インデックスは 0 ベースです。
ユースケース🔗
sort🔗
指定されたリストを昇順に並べ替えたコピーを返します。
2 番目の引数に "desc" を指定すると、並べ替え順を降順に反転できます。
入力と出力🔗
例🔗
sortBy🔗
計算されたキー式によってリストを並べ替え、カスタムの並べ替え条件を指定できます。
入力と出力🔗
各要素に対してキー式で計算された値に基づいてリストを並べ替えます。
変数名はキー計算中に各要素にバインドされます。
要素は計算されたキーに基づいて昇順に並べ替えられます。
ユースケース🔗
距離で並べ替える。
マンハッタン距離で場所を並べ替えます。
注意事項🔗
- 新しく並べ替えられたリストを返します。
- 元のリストは変更されません。
- キー式は各要素に対して評価されます。
- 並べ替えは安定しており、キーが等しい要素は相対順序を保持します。
- キーは比較可能である必要があります。
- 数値を負にすると降順ソートを実行できます。
例🔗
[3, 1, 4, 1, 5, 9].sortBy(x, x)
出力: [1, 1, 3, 4, 5, 9]
値自体をキーとして使用して並べ替えます。
split🔗
指定された区切り文字を使用して文字列をリストに分割します。
入力と出力🔗
区切り文字を使用して文字列を部分文字列のリストに分割します。
省略可能な 2 番目の引数は分割回数を制限します。すべて分割するには -1 を使用します。
例🔗
substring🔗
2 つのインデックスの間にある文字列の一部を抽出します。
入力と出力🔗
最初のインデックスから始まる部分文字列を抽出します。
2 番目の引数が指定されている場合、そのインデックスの直前で抽出を停止します。
引数が 1 つだけ指定されている場合、抽出は文字列の末尾まで続きます。
例🔗
take🔗
リストの最初の x 個の要素、または開始位置と終了位置の間の要素を返します。
入力と出力🔗
例🔗
tenantAllowResponseActions🔗
テナントに対してレスポンスアクションが許可されているかどうかを確認します。
入力と出力🔗
例🔗
tenantCentralAccountOrigin🔗
centralTenant マップから accountOrigin の値を返します。
入力と出力🔗
例🔗
tenantCentralAccountType🔗
centralTenant マップから accountType の値を返します。
入力と出力🔗
例🔗
tenantCentralDataRegion🔗
centralTenant マップから dataRegion の値を返します。
入力と出力🔗
例🔗
tenantCentralId🔗
centralTenant マップから中央テナント ID を返します。
入力と出力🔗
例🔗
tenantCentralLastRefresh🔗
centralTenant マップから lastRefresh の値を返します。
入力と出力🔗
例🔗
tenantCentralLastRefresh(tenant)
出力: "2025-09-23T17:28:01.113261229Z"
tenantCentralRegion🔗
centralTenant マップから region の値を返します。
入力と出力🔗
例🔗
tenantCentralXdrOwnership🔗
centralTenant マップから xdrOwnership の値を返します。
入力と出力🔗
例🔗
tenantDataRetentionMonths🔗
テナントマップから、月単位のデータ保持期間を抽出します。
入力と出力🔗
例🔗
tenantDescription🔗
テナントマップからテナントの説明を抽出します。
入力と出力🔗
例🔗
tenantEnabled🔗
テナントが有効かどうかを確認します。
入力と出力🔗
例🔗
tenantEnvironments🔗
テナントの環境名のリストを返します。
入力と出力🔗
例🔗
tenantHasService🔗
テナントが名前で指定された特定のサービスを持っているかどうかを確認します (大文字小文字を区別しません)。
入力と出力🔗
例🔗
tenantId🔗
テナントマップからテナント ID を抽出します。
入力と出力🔗
例🔗
tenantIsOrganization🔗
テナントが組織かどうかを確認します。
入力と出力🔗
例🔗
tenantIsPartner🔗
テナントがパートナーかどうかを確認します。
入力と出力🔗
例🔗
tenantIsSophosMDR🔗
テナントの licenseLevel が正確に "MDR" の場合に true を返します。
このマクロは次と同等です:
入力と出力🔗
例🔗
tenantIsSophosXDR🔗
テナントが XDR のお客様である場合に true を返します。
次と同等です:
tenantCentralXdrOwnership(tenant) != 'taegis' &&
tenantCentralXdrOwnership(tenant) != '' &&
tenant.licenseLevel != 'MDR'
入力と出力🔗
例🔗
tenantLabelValue🔗
テナントの特定のラベルの値を返します。
入力と出力🔗
例🔗
tenantLabels🔗
テナントのラベル名から値へのマップを返します。
入力と出力🔗
例🔗
tenantName🔗
テナントマップからテナント名を抽出します。
入力と出力🔗
例🔗
tenantOrganization🔗
テナントマップから組織を抽出します。
入力と出力🔗
例🔗
tenantParent🔗
テナントマップから親テナント ID を抽出します。
入力と出力🔗
例🔗
tenantParentId🔗
テナントマップから親テナント ID を抽出します。
入力と出力🔗
例🔗
tenantPartner🔗
テナントマップからパートナーテナント ID を抽出します。
入力と出力🔗
例🔗
tenantPartnerId🔗
テナントマップからパートナーテナント ID を抽出します。
入力と出力🔗
例🔗
tenantServices🔗
テナントのサービス名のリストを返します。
入力と出力🔗
例🔗
tenantServices(tenant)
出力: ["Access Point", "Ask an Expert", "Data Retention: 60 mo"]
tenantSupportEnabled🔗
テナントでサポートが有効かどうかを確認します。
入力と出力🔗
例🔗
toHTML🔗
指定された文字列を HTML として返します。
入力と出力🔗
例🔗
toHex🔗
バイトリストの 16 進文字列表現を返します。
入力と出力🔗
例🔗
toLower🔗
すべての文字を小文字に変換した文字列のコピーを返します。
入力と出力🔗
例🔗
toPreferredTimestamp🔗
指定されたタイムスタンプ、タイムゾーン、および言語に基づいて、ユーザーが希望するタイムスタンプ形式を返します。
入力と出力🔗
例🔗
toPreferredTimestamp('2025-01-02T15:04:05Z', 'UTC', 'en')
出力: "Jan 2 2025 15:04 UTC"
toString🔗
任意のデータ型の指定された値を文字列として返します。
入力と出力🔗
例🔗
toTable🔗
指定されたデータの文字列表現を、テキストまたは Markdown テーブルとして返します。
入力と出力🔗
例🔗
toTable([["row1_column1", "row1_column2"], ["row2_column1", "row2_column2"]], ["header1", "header2"], [], false)
toTable([["row1_column1", "row1_column2"], ["row2_column1", "row2_column2"]], ["header1", "header2"], [], false)
出力: "+------+------+\\n HEADER1 HEADER2 \\n+------+------+\\n row1_column1 row1_column2 \\n row2_column1 row2_column2 \\n+------+------+"
toTimestamp🔗
日付と時刻の文字列からタイムスタンプを返します。
入力と出力🔗
例🔗
toTitle🔗
各単語の最初の文字を大文字に変換した文字列のコピーを返します。
入力と出力🔗
例🔗
toURLQuery🔗
URL の特殊文字をエスケープシーケンスに変換した文字列のコピーを返します。
入力と出力🔗
例🔗
toUpper🔗
すべての文字を大文字に変換した文字列のコピーを返します。
入力と出力🔗
例🔗
transformList🔗
インデックス/キーと値を使用してリストまたはマップを反復処理し、各要素を新しいリストに変換します。
入力と出力🔗
list.transformList(index, value, expression) -> list
list.transformList(index, value, condition, expression) -> list
map.transformList(key, value, expression) -> list
map.transformList(key, value, condition, expression) -> list
変換式ではインデックス/キーと値の両方にアクセスできます。
必要に応じてフィルター条件もサポートします。
例🔗
[1, 2, 3, 4].transformList(i, v, i % 2 == 0, i * v)
出力: [0, 6]
transformMap🔗
インデックス/キーと値を使用してリストまたはマップを反復処理し、キーを保持したまま値を変換します。
入力と出力🔗
list.transformMap(index, value, expression) -> map
list.transformMap(index, value, condition, expression) -> map
map.transformMap(key, value, expression) -> map
map.transformMap(key, value, condition, expression) -> map
変換式ではインデックス/キーと値の両方にアクセスできます。
必要に応じてフィルター条件もサポートします。
例🔗
[10, 20, 30].transformMap(i, v, v * 2)
出力: {"0": 20, "1": 40, "2": 60}
[1, 2, 3].transformMap(i, v, i * v)
出力: {"0": 0, "1": 2, "2": 6}
[1, 2, 3, 4].transformMap(i, v, i % 2 == 0, i * v)
出力: {"0": 0, "2": 6}
{'a': 1, 'b': 2}.transformMap(k, v, v * 10)
出力: {"a": 10, "b": 20}
transformMapEntry🔗
インデックス/キーと値を使用してリストまたはマップを反復処理し、新しいマップ内にカスタムのキーと値のペアを作成します。
入力と出力🔗
list.transformMapEntry(index, value, expression) -> map
list.transformMapEntry(index, value, condition, expression) -> map
map.transformMapEntry(key, value, expression) -> map
map.transformMapEntry(key, value, condition, expression) -> map
変換式は、単一のエントリを含むマップリテラルを生成する必要があります。
例🔗
[1, 2, 3].transformMapEntry(i, v, {string(v): i})
出力: {"1": 0, "2": 1, "3": 2}
['a', 'b', 'c'].transformMapEntry(i, v, {v: i})
出力: {"a": 0, "b": 1, "c": 2}
[1, 2, 3, 4].transformMapEntry(i, v, i % 2 == 0, {string(v): i})
出力: {"1": 0, "3": 2}
{'a': 1, 'b': 2}.transformMapEntry(k, v, {string(v): k})
出力: {"1": "a", "2": "b"}
trim (string or list)🔗
先頭と末尾の空白を削除します。
入力と出力🔗
例🔗
trim (string)🔗
文字列の先頭と末尾の空白を削除します。
入力と出力🔗
文字列の先頭と末尾からスペース、タブ、および改行文字を削除します。
文字列の途中にある空白は削除しません。
例🔗
unique🔗
重複要素を削除したリストのコピーを返します。
完全に同一の要素のみが削除されます (大文字小文字を区別します)。
入力と出力🔗
例🔗
unwrapOpt🔗
値を持つ optional 要素の値のみを含むリストを返し、optional.none() を除外します。
入力と出力🔗
optional 値のリストを受け取り、値を含む optional の値のみを含む新しいリストを返します。
すべての optional.none() エントリを除外します。
ユースケース🔗
存在する値をフィルタリングする。
出力: [1, 3]
空の optional を削除します。
注意事項🔗
- 入力:
list(optional(T)) - 出力:
list(T) .hasValue()がtrueを返す optional のみを含みます。- 空でない値の順序を保持します。
- すべての optional が空の場合は空のリストを返します。
optional.unwrap(list)としても利用できます。
例🔗
[optional.of(1), optional.of(2), optional.of(3)].unwrapOpt()
出力: [1, 2, 3]
すべての値が存在します。
[optional.of(1), optional.none(), optional.of(3)].unwrapOpt()
出力: [1, 3]
空の optional を除外します。
[optional.none(), optional.none()].unwrapOpt()
出力: []
すべての値が空です。
[optional.of(1), optional.none(), optional.of(3)].unwrapOpt()[0]
出力: 1
最初に存在する値にアクセスします。
upperAscii🔗
文字列内のすべての ASCII 文字を大文字に変換します。
入力と出力🔗
すべての ASCII 小文字 (a-z) を大文字 (A-Z) に変換します。
ASCII 以外の文字は変更されません。
例🔗
userIds🔗
アラートまたはエンティティを解析し、ユーザー ID のリストを返します。
入力と出力🔗
例🔗
userInDomain🔗
指定されたユーザー名が、指定された 1 つ以上のドメインに属している場合は true を返します。
入力と出力🔗
例🔗
userInDomain("asdf@example.com", ["example.com"])
出力: true
userNames🔗
アラートまたはエンティティを解析し、ユーザー名のリストを返します。
入力と出力🔗
例🔗
users🔗
アラートまたはエンティティを解析し、ユーザー名とユーザー ID のリストを返します。
入力と出力🔗
例🔗
users(inputs)
出力: ["sample_user", "another_sample_user", "1234", "dac1ed31-111-4809-9cc9-9f99b6e", "5678"]
value🔗
optional から値を返します。optional が空の場合はエラーを発生させます。
入力と出力🔗
optional から値を取り出します。
optional が空 (optional.none()) の場合、実行時エラーが発生します。
ユースケース🔗
注意事項🔗
optional.none()に対して.value()を呼び出すとエラーになります。- 必ず最初に
.hasValue()で確認するか、代わりに.orValue()を使用してください。 - optional に値が含まれていることが確実な場合にのみ使用してください。
- 値が存在しないことをエラーとして扱うべき場合に便利です。
- optional の連鎖には
.orValue()を使用してください。 - 即時失敗のシナリオでよく使用されます。