Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
7a09d1d
add a new alerting action to manage rule settings
denar50 Feb 11, 2026
e5266dd
Changes from node scripts/eslint_all_files --no-cache --fix
kibanamachine Feb 11, 2026
b130811
update test snapshot
denar50 Feb 11, 2026
699c3aa
add missing permissions for managing rule settings operations
denar50 Feb 11, 2026
dee891b
add missing read permissions for gap fill scheduling
denar50 Feb 12, 2026
57003a3
Merge branch 'main' into expose-permission-on-rules-to-modify-gap-aut…
denar50 Feb 12, 2026
8b313f2
Merge branch 'main' into expose-permission-on-rules-to-modify-gap-aut…
denar50 Feb 13, 2026
d3f86ad
Changes from node scripts/regenerate_moon_projects.js --update
kibanamachine Feb 13, 2026
8b26ff3
fix unit test
denar50 Feb 16, 2026
098a06b
Merge branch 'main' into expose-permission-on-rules-to-modify-gap-aut…
denar50 Feb 16, 2026
faffdf8
Merge branch 'main' into expose-permission-on-rules-to-modify-gap-aut…
denar50 Feb 17, 2026
4d13281
add a alerting.rule.write feature
denar50 Feb 19, 2026
2549770
include newly added features in the validation
denar50 Feb 19, 2026
aa5f1c6
improve feature schema validation
denar50 Feb 19, 2026
6105bf4
Merge branch 'main' into expose-permission-on-rules-to-modify-gap-aut…
denar50 Feb 19, 2026
6459b36
Changes from node scripts/eslint_all_files --no-cache --fix
kibanamachine Feb 19, 2026
e430d9d
fix unit tests
denar50 Feb 19, 2026
45cefb4
Merge branch 'main' into expose-permission-on-rules-to-modify-gap-aut…
denar50 Feb 20, 2026
978b773
Merge branch 'main' into expose-permission-on-rules-to-modify-gap-aut…
denar50 Feb 23, 2026
21465fa
remove previously added write feature
denar50 Feb 24, 2026
58b42c3
Changes from node scripts/eslint_all_files --no-cache --fix
kibanamachine Feb 24, 2026
2108514
fix tests
denar50 Feb 24, 2026
351d6b0
remove redundant permission
denar50 Feb 24, 2026
460dec6
remove unused scenario for recently deleted write feature
denar50 Feb 24, 2026
bc58d97
add new alerting rule features to all kibana features with alerting.r…
denar50 Feb 25, 2026
a17fc0f
Merge branch 'main' into expose-permission-on-rules-to-modify-gap-aut…
denar50 Feb 25, 2026
f052713
fix authorization ftr test
denar50 Feb 25, 2026
35dca2f
Merge branch 'main' into expose-permission-on-rules-to-modify-gap-aut…
denar50 Feb 25, 2026
0d9143f
fix authorization ftr
denar50 Feb 25, 2026
a6295bd
Merge branch 'main' into expose-permission-on-rules-to-modify-gap-aut…
denar50 Feb 26, 2026
e87354e
Merge branch 'main' into expose-permission-on-rules-to-modify-gap-aut…
denar50 Mar 2, 2026
8b1a71c
add @elastic/response-ops as code owners of alerting config files
denar50 Mar 3, 2026
7fa56e8
Merge branch 'main' into expose-permission-on-rules-to-modify-gap-aut…
denar50 Mar 3, 2026
67a849d
Changes from node scripts/generate codeowners
kibanamachine Mar 3, 2026
8752121
fix feature definitions: add features excluded from alerting.rule.all
denar50 Mar 3, 2026
9f76ab0
create new test scenarios
denar50 Mar 4, 2026
7be4e2f
Merge branch 'main' into expose-permission-on-rules-to-modify-gap-aut…
denar50 Mar 4, 2026
de759a4
Merge branch 'main' into expose-permission-on-rules-to-modify-gap-aut…
denar50 Mar 5, 2026
bd26d06
Merge branch 'main' into expose-permission-on-rules-to-modify-gap-aut…
denar50 Mar 5, 2026
cb4ef9c
Merge branch 'main' into expose-permission-on-rules-to-modify-gap-aut…
denar50 Mar 6, 2026
e477661
Merge branch 'main' into expose-permission-on-rules-to-modify-gap-aut…
denar50 Mar 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 23 additions & 70 deletions x-pack/examples/alerting_example/server/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,21 @@ export interface AlertingExampleDeps {
features: FeaturesPluginSetup;
}

const alertingFeatures = [
{
ruleTypeId: alwaysFiringRule.id,
consumers: [ALERTING_EXAMPLE_APP_ID, ALERTING_FEATURE_ID],
},
{
ruleTypeId: peopleInSpaceRule.id,
consumers: [ALERTING_EXAMPLE_APP_ID, ALERTING_FEATURE_ID],
},
{
ruleTypeId: INDEX_THRESHOLD_ID,
consumers: [ALERTING_EXAMPLE_APP_ID, ALERTING_FEATURE_ID],
},
];

export class AlertingExamplePlugin implements Plugin<void, void, AlertingExampleDeps> {
public setup(core: CoreSetup, { alerting, features }: AlertingExampleDeps) {
alerting.registerType(alwaysFiringRule);
Expand All @@ -42,54 +57,18 @@ export class AlertingExamplePlugin implements Plugin<void, void, AlertingExample
insightsAndAlerting: ['triggersActions'],
},
category: DEFAULT_APP_CATEGORIES.management,
alerting: [
{
ruleTypeId: alwaysFiringRule.id,
consumers: [ALERTING_EXAMPLE_APP_ID, ALERTING_FEATURE_ID],
},
{
ruleTypeId: peopleInSpaceRule.id,
consumers: [ALERTING_EXAMPLE_APP_ID, ALERTING_FEATURE_ID],
},
{
ruleTypeId: INDEX_THRESHOLD_ID,
consumers: [ALERTING_EXAMPLE_APP_ID, ALERTING_FEATURE_ID],
},
],
alerting: alertingFeatures,
privileges: {
all: {
alerting: {
rule: {
all: [
{
ruleTypeId: alwaysFiringRule.id,
consumers: [ALERTING_EXAMPLE_APP_ID, ALERTING_FEATURE_ID],
},
{
ruleTypeId: peopleInSpaceRule.id,
consumers: [ALERTING_EXAMPLE_APP_ID, ALERTING_FEATURE_ID],
},
{
ruleTypeId: INDEX_THRESHOLD_ID,
consumers: [ALERTING_EXAMPLE_APP_ID, ALERTING_FEATURE_ID],
},
],
all: alertingFeatures,
enable: alertingFeatures,
manual_run: alertingFeatures,
manage_rule_settings: alertingFeatures,
},
alert: {
all: [
{
ruleTypeId: alwaysFiringRule.id,
consumers: [ALERTING_EXAMPLE_APP_ID, ALERTING_FEATURE_ID],
},
{
ruleTypeId: peopleInSpaceRule.id,
consumers: [ALERTING_EXAMPLE_APP_ID, ALERTING_FEATURE_ID],
},
{
ruleTypeId: INDEX_THRESHOLD_ID,
consumers: [ALERTING_EXAMPLE_APP_ID, ALERTING_FEATURE_ID],
},
],
all: alertingFeatures,
},
},
savedObject: {
Expand All @@ -104,36 +83,10 @@ export class AlertingExamplePlugin implements Plugin<void, void, AlertingExample
read: {
alerting: {
rule: {
read: [
{
ruleTypeId: alwaysFiringRule.id,
consumers: [ALERTING_EXAMPLE_APP_ID, ALERTING_FEATURE_ID],
},
{
ruleTypeId: peopleInSpaceRule.id,
consumers: [ALERTING_EXAMPLE_APP_ID, ALERTING_FEATURE_ID],
},
{
ruleTypeId: INDEX_THRESHOLD_ID,
consumers: [ALERTING_EXAMPLE_APP_ID, ALERTING_FEATURE_ID],
},
],
read: alertingFeatures,
},
alert: {
read: [
{
ruleTypeId: alwaysFiringRule.id,
consumers: [ALERTING_EXAMPLE_APP_ID, ALERTING_FEATURE_ID],
},
{
ruleTypeId: peopleInSpaceRule.id,
consumers: [ALERTING_EXAMPLE_APP_ID, ALERTING_FEATURE_ID],
},
{
ruleTypeId: INDEX_THRESHOLD_ID,
consumers: [ALERTING_EXAMPLE_APP_ID, ALERTING_FEATURE_ID],
},
],
read: alertingFeatures,
},
},
savedObject: {
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,20 @@ const enableOperations: Record<AlertingEntity, string[]> = {
alert: [],
};

const manageRuleSettingsOperations: Record<AlertingEntity, string[]> = {
Comment thread
darnautov marked this conversation as resolved.
rule: [
'getGapAutoFillScheduler',
'findGapAutoFillSchedulerLogs',
'createGapAutoFillScheduler',
'updateGapAutoFillScheduler',
'deleteGapAutoFillScheduler',
'find',
'findBackfill',
'scheduleBackfill',
],
alert: [],
};

const writeOperations: Record<AlertingEntity, string[]> = {
rule: [
'create',
Expand All @@ -62,19 +76,11 @@ const writeOperations: Record<AlertingEntity, string[]> = {
'bulkDelete',
'unsnooze',
'runSoon',
'createGapAutoFillScheduler',
'updateGapAutoFillScheduler',
'deleteGapAutoFillScheduler',
],
alert: ['update'],
};
const allOperations: Record<AlertingEntity, string[]> = {
rule: [
...readOperations.rule,
...writeOperations.rule,
...enableOperations.rule,
...manualRunOperations.rule,
],
rule: [...readOperations.rule, ...writeOperations.rule],
alert: [...readOperations.alert, ...writeOperations.alert],
};

Expand All @@ -100,13 +106,16 @@ export class FeaturePrivilegeAlertingBuilder extends BaseFeaturePrivilegeBuilder
const all = get(privilegeDefinition.alerting, `${entity}.all`) ?? [];
const enable = get(privilegeDefinition.alerting, `${entity}.enable`) ?? [];
const manualRun = get(privilegeDefinition.alerting, `${entity}.manual_run`) ?? [];
const manageRuleSettings =
get(privilegeDefinition.alerting, `${entity}.manage_rule_settings`) ?? [];
const read = get(privilegeDefinition.alerting, `${entity}.read`) ?? [];

return uniq([
...getAlertingPrivilege(allOperations[entity], all, entity),
...getAlertingPrivilege(readOperations[entity], read, entity),
...getAlertingPrivilege(enableOperations[entity], enable, entity),
...getAlertingPrivilege(manualRunOperations[entity], manualRun, entity),
...getAlertingPrivilege(manageRuleSettingsOperations[entity], manageRuleSettings, entity),
]);
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -593,12 +593,7 @@ describe('features', () => {
'bulkDelete',
'unsnooze',
'runSoon',
'createGapAutoFillScheduler',
'updateGapAutoFillScheduler',
'deleteGapAutoFillScheduler',
],
...['enable', 'disable', 'bulkEnable', 'bulkDisable'],
...['deleteBackfill', 'fillGaps', 'scheduleBackfill'],
];

const expectedAllPrivileges = [
Expand Down Expand Up @@ -771,12 +766,7 @@ describe('features', () => {
'bulkDelete',
'unsnooze',
'runSoon',
'createGapAutoFillScheduler',
'updateGapAutoFillScheduler',
'deleteGapAutoFillScheduler',
],
...['enable', 'disable', 'bulkEnable', 'bulkDisable'],
...['deleteBackfill', 'fillGaps', 'scheduleBackfill'],
];

const expectedAllPrivileges = [
Expand Down
3 changes: 3 additions & 0 deletions x-pack/platform/plugins/private/monitoring/server/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,9 @@ export class MonitoringPlugin
alerting: {
rule: {
all: alertingFeatures,
enable: alertingFeatures,
manual_run: alertingFeatures,
manage_rule_settings: alertingFeatures,
},
alert: {
all: alertingFeatures,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ const canManageRules: SubFeaturePrivilegeGroupConfig = {
alerting: {
rule: {
all: [degradedDocsAlertingFeatures],
enable: [degradedDocsAlertingFeatures],
manual_run: [degradedDocsAlertingFeatures],
manage_rule_settings: [degradedDocsAlertingFeatures],
},
},
savedObject: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,16 @@ export interface FeatureKibanaPrivileges {
* ```
*/
manual_run?: AlertingKibanaPrivilege;
/**
* List of rule types and consumers for which users should have the ability to manage rule settings (e.g. gap auto-fill scheduler) when granted this privilege.
* @example
* ```ts
* {
* manage_rule_settings: [{ ruleTypeId: 'my-alert-type-within-my-feature', consumers: ['my-consumer-within-my-feature'] }]
* }
* ```
*/
manage_rule_settings?: AlertingKibanaPrivilege;
};
alert?: {
/**
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading