Skip to content

Commit 8877390

Browse files
authored
Pass rule field names in doc level queries during monitor/creation. Remove blocking actionGet() calls (#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 ec0657d commit 8877390

File tree

5 files changed

+346
-165
lines changed

5 files changed

+346
-165
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
@@ -78,9 +78,11 @@ public void createMappingAction(String indexName, String logType, String aliasMa
7878
// since you can't update documents in non-write indices
7979
String index = indexName;
8080
boolean shouldUpsertIndexTemplate = IndexUtils.isConcreteIndex(indexName, this.clusterService.state()) == false;
81-
if (IndexUtils.isDataStream(indexName, this.clusterService.state())) {
81+
if (IndexUtils.isDataStream(indexName, this.clusterService.state()) || IndexUtils.isAlias(indexName, this.clusterService.state())) {
82+
log.debug("{} is an alias or datastream. Fetching write index for create mapping action.", indexName);
8283
String writeIndex = IndexUtils.getWriteIndex(indexName, this.clusterService.state());
8384
if (writeIndex != null) {
85+
log.debug("Write index for {} is {}", indexName, writeIndex);
8486
index = writeIndex;
8587
}
8688
}
@@ -92,6 +94,7 @@ public void onResponse(GetMappingsResponse getMappingsResponse) {
9294
applyAliasMappings(getMappingsResponse.getMappings(), logType, aliasMappings, partial, new ActionListener<>() {
9395
@Override
9496
public void onResponse(Collection<CreateMappingResult> createMappingResponse) {
97+
log.debug("Completed create mappings for {}", indexName);
9598
// We will return ack==false if one of the requests returned that
9699
// else return ack==true
97100
Optional<AcknowledgedResponse> notAckd = createMappingResponse.stream()
@@ -110,6 +113,7 @@ public void onResponse(Collection<CreateMappingResult> createMappingResponse) {
110113

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

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)