Skip to content

Commit 8cdfeca

Browse files
committed
Pass rule field names in doc level queries during monitor/creation. Remove blocking actionGet() calls (opensearch-project#873)
* pass query field names in doc level queries during monitor creation/updation Signed-off-by: Surya Sashank Nistala <[email protected]> * remove actionGet() and change get index mapping call to event driven flow Signed-off-by: Surya Sashank Nistala <[email protected]> * fix chained findings monitor Signed-off-by: Surya Sashank Nistala <[email protected]> * add finding mappings Signed-off-by: Surya Sashank Nistala <[email protected]> * remove test messages from logs Signed-off-by: Surya Sashank Nistala <[email protected]> * revert build.gradle change Signed-off-by: Surya Sashank Nistala <[email protected]> --------- Signed-off-by: Surya Sashank Nistala <[email protected]>
1 parent 85b76d3 commit 8cdfeca

File tree

4 files changed

+392
-230
lines changed

4 files changed

+392
-230
lines changed

src/main/java/org/opensearch/securityanalytics/mapper/MapperService.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,11 @@ public void createMappingAction(String indexName, String logType, String aliasMa
7777
// since you can't update documents in non-write indices
7878
String index = indexName;
7979
boolean shouldUpsertIndexTemplate = IndexUtils.isConcreteIndex(indexName, this.clusterService.state()) == false;
80-
if (IndexUtils.isDataStream(indexName, this.clusterService.state())) {
80+
if (IndexUtils.isDataStream(indexName, this.clusterService.state()) || IndexUtils.isAlias(indexName, this.clusterService.state())) {
81+
log.debug("{} is an alias or datastream. Fetching write index for create mapping action.", indexName);
8182
String writeIndex = IndexUtils.getWriteIndex(indexName, this.clusterService.state());
8283
if (writeIndex != null) {
84+
log.debug("Write index for {} is {}", indexName, writeIndex);
8385
index = writeIndex;
8486
}
8587
}
@@ -91,6 +93,7 @@ public void onResponse(GetMappingsResponse getMappingsResponse) {
9193
applyAliasMappings(getMappingsResponse.getMappings(), logType, aliasMappings, partial, new ActionListener<>() {
9294
@Override
9395
public void onResponse(Collection<CreateMappingResult> createMappingResponse) {
96+
log.debug("Completed create mappings for {}", indexName);
9497
// We will return ack==false if one of the requests returned that
9598
// else return ack==true
9699
Optional<AcknowledgedResponse> notAckd = createMappingResponse.stream()
@@ -109,6 +112,7 @@ public void onResponse(Collection<CreateMappingResult> createMappingResponse) {
109112

110113
@Override
111114
public void onFailure(Exception e) {
115+
log.debug("Failed to create mappings for {}", indexName );
112116
actionListener.onFailure(e);
113117
}
114118
});

src/main/java/org/opensearch/securityanalytics/mapper/MapperUtils.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,17 @@
55

66
package org.opensearch.securityanalytics.mapper;
77

8+
import org.apache.commons.lang3.tuple.Pair;
9+
import org.opensearch.cluster.metadata.MappingMetadata;
10+
import org.opensearch.securityanalytics.util.SecurityAnalyticsException;
11+
812
import java.io.IOException;
913
import java.util.ArrayList;
1014
import java.util.HashMap;
1115
import java.util.List;
1216
import java.util.Locale;
1317
import java.util.Map;
1418
import java.util.Set;
15-
import org.apache.commons.lang3.tuple.Pair;
16-
import org.opensearch.cluster.metadata.MappingMetadata;
17-
import org.opensearch.securityanalytics.util.SecurityAnalyticsException;
1819

1920
public class MapperUtils {
2021

@@ -246,7 +247,6 @@ public void onError(String error) {
246247
}
247248
});
248249
mappingsTraverser.traverse();
249-
250250
return presentPathsMappings;
251251
}
252252
}

src/main/java/org/opensearch/securityanalytics/rules/backend/OSQueryBackend.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,9 +331,12 @@ public Object convertConditionFieldEqValQueryExpr(ConditionFieldEqualsValueExpre
331331

332332
@Override
333333
public Object convertConditionValStr(ConditionValueExpression condition) throws SigmaValueError {
334+
String field = getFinalValueField();
335+
ruleQueryFields.put(field, Map.of("type", "text", "analyzer", "rule_analyzer"));
334336
SigmaString value = (SigmaString) condition.getValue();
335337
boolean containsWildcard = value.containsWildcard();
336-
return String.format(Locale.getDefault(), (containsWildcard? this.unboundWildcardExpression: this.unboundValueStrExpression), this.convertValueStr((SigmaString) condition.getValue()));
338+
return String.format(Locale.getDefault(), (containsWildcard? this.unboundWildcardExpression: this.unboundValueStrExpression),
339+
this.convertValueStr((SigmaString) condition.getValue()));
337340
}
338341

339342
@Override

0 commit comments

Comments
 (0)