Skip to content

Commit 5fd677a

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 f2ab3e8 commit 5fd677a

File tree

4 files changed

+452
-219
lines changed

4 files changed

+452
-219
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
@@ -72,9 +72,11 @@ public void createMappingAction(String indexName, String ruleTopic, String alias
7272
// since you can't update documents in non-write indices
7373
String index = indexName;
7474
boolean shouldUpsertIndexTemplate = IndexUtils.isConcreteIndex(indexName, this.clusterService.state()) == false;
75-
if (IndexUtils.isDataStream(indexName, this.clusterService.state())) {
75+
if (IndexUtils.isDataStream(indexName, this.clusterService.state()) || IndexUtils.isAlias(indexName, this.clusterService.state())) {
76+
log.debug("{} is an alias or datastream. Fetching write index for create mapping action.", indexName);
7677
String writeIndex = IndexUtils.getWriteIndex(indexName, this.clusterService.state());
7778
if (writeIndex != null) {
79+
log.debug("Write index for {} is {}", indexName, writeIndex);
7880
index = writeIndex;
7981
}
8082
}
@@ -86,6 +88,7 @@ public void onResponse(GetMappingsResponse getMappingsResponse) {
8688
applyAliasMappings(getMappingsResponse.getMappings(), ruleTopic, aliasMappings, partial, new ActionListener<>() {
8789
@Override
8890
public void onResponse(Collection<CreateMappingResult> createMappingResponse) {
91+
log.debug("Completed create mappings for {}", indexName);
8992
// We will return ack==false if one of the requests returned that
9093
// else return ack==true
9194
Optional<AcknowledgedResponse> notAckd = createMappingResponse.stream()
@@ -104,6 +107,7 @@ public void onResponse(Collection<CreateMappingResult> createMappingResponse) {
104107

105108
@Override
106109
public void onFailure(Exception e) {
110+
log.debug("Failed to create mappings for {}", indexName );
107111
actionListener.onFailure(e);
108112
}
109113
});

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

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

66
package org.opensearch.securityanalytics.mapper;
77

8-
import java.util.HashMap;
9-
import java.util.Locale;
10-
import java.util.Map;
118
import org.apache.commons.lang3.tuple.Pair;
129
import org.opensearch.cluster.metadata.MappingMetadata;
13-
import org.opensearch.common.collect.ImmutableOpenMap;
10+
import org.opensearch.securityanalytics.util.SecurityAnalyticsException;
1411

1512
import java.io.IOException;
1613
import java.util.ArrayList;
14+
import java.util.HashMap;
1715
import java.util.List;
16+
import java.util.Locale;
17+
import java.util.Map;
1818
import java.util.Set;
19-
import java.util.stream.Collectors;
20-
import org.opensearch.securityanalytics.util.SecurityAnalyticsException;
2119

2220
public class MapperUtils {
2321

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)