Skip to content

Commit 652f311

Browse files
xcrzxCAWilson94
authored andcommitted
[Security Solution] Skip isCustomized calculation when the feature flag is off (elastic#201825)
**Resolves: elastic#201632 ## Summary When the rule customization feature flag is disabled, we should always return `isCustomized: false`, regardless of any changes introduced to a rule. This ensures that we do not accidentally mark prebuilt rules as customized in 8.16 with the feature flag off. For more details, refer to the related issue: elastic#201632 ### Main Changes - The primary change in this PR is encapsulated in the `calculateIsCustomized` function - Other changes involve passing the feature flag to this function - Added integration tests to cover all API CRUD operations that can be performed with rules
1 parent c978573 commit 652f311

File tree

40 files changed

+425
-36
lines changed

40 files changed

+425
-36
lines changed

.buildkite/ftr_security_serverless_configs.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ enabled:
7676
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/large_prebuilt_rules_package/trial_license_complete_tier/configs/serverless.config.ts
7777
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/configs/serverless.config.ts
7878
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/update_prebuilt_rules_package/trial_license_complete_tier/configs/serverless.config.ts
79-
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/prebuilt_rule_customization/trial_license_complete_tier/configs/serverless.config.ts
79+
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/prebuilt_rule_customization/customization_enabled/configs/serverless.config.ts
80+
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/prebuilt_rule_customization/customization_disabled/configs/serverless.config.ts
8081
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_bulk_actions/trial_license_complete_tier/configs/serverless.config.ts
8182
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_delete/trial_license_complete_tier/configs/serverless.config.ts
8283
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_delete/basic_license_essentials_tier/configs/serverless.config.ts

.buildkite/ftr_security_stateful_configs.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ enabled:
5858
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/large_prebuilt_rules_package/trial_license_complete_tier/configs/ess.config.ts
5959
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/management/trial_license_complete_tier/configs/ess.config.ts
6060
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/update_prebuilt_rules_package/trial_license_complete_tier/configs/ess.config.ts
61-
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/prebuilt_rule_customization/trial_license_complete_tier/configs/ess.config.ts
61+
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/prebuilt_rule_customization/customization_enabled/configs/ess.config.ts
62+
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/prebuilt_rules/prebuilt_rule_customization/customization_disabled/configs/ess.config.ts
6263
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_bulk_actions/trial_license_complete_tier/configs/ess.config.ts
6364
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_delete/trial_license_complete_tier/configs/ess.config.ts
6465
- x-pack/test/security_solution_api_integration/test_suites/detections_response/rules_management/rule_delete/basic_license_essentials_tier/configs/ess.config.ts

x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/bulk_edit_rules.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,20 @@ export const bulkEditRules = async ({
9292
params: modifiedParams,
9393
};
9494
const ruleResponse = convertAlertingRuleToRuleResponse(updatedRule);
95+
let isCustomized = false;
96+
if (ruleResponse.immutable === true) {
97+
isCustomized = calculateIsCustomized({
98+
baseRule: baseVersionsMap.get(ruleResponse.rule_id),
99+
nextRule: ruleResponse,
100+
isRuleCustomizationEnabled: experimentalFeatures.prebuiltRulesCustomizationEnabled,
101+
});
102+
}
103+
95104
const ruleSource =
96105
ruleResponse.immutable === true
97106
? {
98107
type: 'external' as const,
99-
isCustomized: calculateIsCustomized(
100-
baseVersionsMap.get(ruleResponse.rule_id),
101-
ruleResponse
102-
),
108+
isCustomized,
103109
}
104110
: {
105111
type: 'internal' as const,

x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.create_custom_rule.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ describe('DetectionRulesClient.createCustomRule', () => {
5151
rulesClient,
5252
mlAuthz,
5353
savedObjectsClient,
54+
isRuleCustomizationEnabled: true,
5455
});
5556
});
5657

x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.create_prebuilt_rule.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ describe('DetectionRulesClient.createPrebuiltRule', () => {
4444
rulesClient,
4545
mlAuthz,
4646
savedObjectsClient,
47+
isRuleCustomizationEnabled: true,
4748
});
4849
});
4950

x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.delete_rule.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ describe('DetectionRulesClient.deleteRule', () => {
3030
rulesClient,
3131
mlAuthz,
3232
savedObjectsClient,
33+
isRuleCustomizationEnabled: true,
3334
});
3435
});
3536

x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.import_rule.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ describe('DetectionRulesClient.importRule', () => {
5151
rulesClient,
5252
mlAuthz,
5353
savedObjectsClient,
54+
isRuleCustomizationEnabled: true,
5455
});
5556
});
5657

x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.import_rules.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ describe('detectionRulesClient.importRules', () => {
3232
rulesClient: rulesClientMock.create(),
3333
mlAuthz: buildMlAuthz(),
3434
savedObjectsClient: savedObjectsClientMock.create(),
35+
isRuleCustomizationEnabled: true,
3536
});
3637

3738
(checkRuleExceptionReferences as jest.Mock).mockReturnValue([[], []]);

x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.patch_rule.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ describe('DetectionRulesClient.patchRule', () => {
5050
rulesClient,
5151
mlAuthz,
5252
savedObjectsClient,
53+
isRuleCustomizationEnabled: true,
5354
});
5455
});
5556

x-pack/plugins/security_solution/server/lib/detection_engine/rule_management/logic/detection_rules_client/detection_rules_client.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,15 @@ interface DetectionRulesClientParams {
3838
rulesClient: RulesClient;
3939
savedObjectsClient: SavedObjectsClientContract;
4040
mlAuthz: MlAuthz;
41+
isRuleCustomizationEnabled: boolean;
4142
}
4243

4344
export const createDetectionRulesClient = ({
4445
actionsClient,
4546
rulesClient,
4647
mlAuthz,
4748
savedObjectsClient,
49+
isRuleCustomizationEnabled,
4850
}: DetectionRulesClientParams): IDetectionRulesClient => {
4951
const prebuiltRuleAssetClient = createPrebuiltRuleAssetsClient(savedObjectsClient);
5052

@@ -89,6 +91,7 @@ export const createDetectionRulesClient = ({
8991
prebuiltRuleAssetClient,
9092
mlAuthz,
9193
ruleUpdate,
94+
isRuleCustomizationEnabled,
9295
});
9396
});
9497
},
@@ -101,6 +104,7 @@ export const createDetectionRulesClient = ({
101104
prebuiltRuleAssetClient,
102105
mlAuthz,
103106
rulePatch,
107+
isRuleCustomizationEnabled,
104108
});
105109
});
106110
},
@@ -119,6 +123,7 @@ export const createDetectionRulesClient = ({
119123
ruleAsset,
120124
mlAuthz,
121125
prebuiltRuleAssetClient,
126+
isRuleCustomizationEnabled,
122127
});
123128
});
124129
},
@@ -131,6 +136,7 @@ export const createDetectionRulesClient = ({
131136
importRulePayload: args,
132137
mlAuthz,
133138
prebuiltRuleAssetClient,
139+
isRuleCustomizationEnabled,
134140
});
135141
});
136142
},

0 commit comments

Comments
 (0)