-
Notifications
You must be signed in to change notification settings - Fork 8.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Security Solution][PoC] AI 4 SOC navigation approach 2 #212652
base: main
Are you sure you want to change the base?
Changes from 12 commits
7921a29
ea0fcac
de6ec7a
9ac7f42
833c7d0
32b050e
8199a41
e41be37
a6b4a4a
0d03da4
a5c600f
64688d6
b0c6952
854e8b9
909071f
aed1d0d
db2d3ef
16227e3
1fb344c
c985210
4a28290
08956d4
2d1633d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -104,21 +104,6 @@ export const getSecurityBaseKibanaFeature = ({ | |
}, | ||
app: [APP_ID, CLOUD_POSTURE_APP_ID, CLOUD_DEFEND_APP_ID, 'kibana'], | ||
catalogue: [APP_ID], | ||
api: [ | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. question: I’m not familiar enough with the mechanics here or whether these API privileges are needed, but we’re not making a breaking change for users who have roles with this privielge, right? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. To best of my knowledge, this is safe. We are just moving these privileges to product_feature_config which also add's the possibility to be run against PLI configuration. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yup, this is safe. We are just moving things around to make them tier-dependent.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Roger that, thanks for clarifying! |
||
APP_ID, | ||
'lists-all', | ||
'lists-read', | ||
'lists-summary', | ||
'rac', | ||
'cloud-security-posture-all', | ||
'cloud-security-posture-read', | ||
'cloud-defend-all', | ||
'cloud-defend-read', | ||
'timeline_write', | ||
'timeline_read', | ||
'notes_write', | ||
'notes_read', | ||
], | ||
savedObject: { | ||
all: ['alert', ...savedObjects], | ||
read: [], | ||
|
@@ -134,7 +119,9 @@ export const getSecurityBaseKibanaFeature = ({ | |
management: { | ||
insightsAndAlerting: ['triggersActions'], | ||
}, | ||
ui: ['show', 'crud'], | ||
|
||
api: [], | ||
ui: [], | ||
}, | ||
read: { | ||
replacedBy: { | ||
|
@@ -151,15 +138,6 @@ export const getSecurityBaseKibanaFeature = ({ | |
}, | ||
app: [APP_ID, CLOUD_POSTURE_APP_ID, CLOUD_DEFEND_APP_ID, 'kibana'], | ||
catalogue: [APP_ID], | ||
api: [ | ||
APP_ID, | ||
'lists-read', | ||
'rac', | ||
'cloud-security-posture-read', | ||
'cloud-defend-read', | ||
'timeline_read', | ||
'notes_read', | ||
], | ||
savedObject: { | ||
all: [], | ||
read: [...savedObjects], | ||
|
@@ -175,7 +153,8 @@ export const getSecurityBaseKibanaFeature = ({ | |
management: { | ||
insightsAndAlerting: ['triggersActions'], | ||
}, | ||
ui: ['show'], | ||
api: [], | ||
ui: [], | ||
}, | ||
}, | ||
}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This needs to be discussed with @elastic/kibana-security
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have a few questions to better understand what you’re trying to achieve:
I vaguely remember that dynamic configuration was only possible in Elastic Cloud (or even only in Serverless?), where the configuration flag for the current tier lived in the Kibana config and was managed by infra (controller?). Is that still the case? If so, is there any reason the code that changes the tier config in the Kibana config couldn’t also alter overrides in the config?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To the best of my knowledge:
I think the overrides changes the capabilities, right? We're here trying to not even register the feature which makes the corresponding RBAC privileges not even visible for the user.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey @azasypkin, thanks for taking a look. Sorry that this line is outdated, I should have removed this
continue;
, it's no longer needed. In the previous approach that I implemented I was skipping the registration of thesiem
/siemV2
feature when the new tier was enabled, in the current approach this feature is always registered, just with a different configuration for this new tier.You have a good memory. That's right. In serverless, we use the project controller to create the tiers and roles configuration that we read from Kibana. This approach worked well, and I think we should follow a similar approach. However, I think we should be careful and try to minimize the cross-repo dependencies we introduce, they have become problematic in different ways for the predefined role definitions: we have to keep duplicates in Kibana which are confusing and hard to maintain in sync with the production configs.
I think we should be able to keep the single source of truth inside Kibana, and use the project-controller as the decision maker. I was thinking about having a yaml file with different definitions of the features overrides, one per tier, or maybe having one file per tier would also make sense (e.g.
security.essentials.override.yml
,security.complete.overrides.yml
...), inside Kibana. And the project-controller somehow applies one of them depending on the current tier. Or maybe Kibana itself should pick the correct override config, using the tiers config that is already provided by the project-controller.wdyt?
cc @YulNaumenko
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Aha, good to know. That should definitely simplify things.
Agree. The only reason I mentioned controller is that I thought you were skipping the feature registration completely, and hence it would make sense for controller to remove overrides for the feature that doesn’t exist from the config as well. But since you changed your approach, we don’t need to do that.
If I understand your current approach correctly, you’re just changing the feature definition at runtime depending on the tier. If so, it sounds much easier than doing this via the configuration like we did with feature overrides. If it fully works for you and doesn't require any nasty hacks (?), I think it’s better to keep what you have, but let’s discuss this during our sync later today to make sure I’m not missing anything.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@azasypkin
Great! glad that you like the idea, but that's only for Security features.
The missing part is with other features outside the Security plugin, that we also need we need to disable/hide for this tier, such as Fleet, Osquery...
This is what we want to discuss with you, the proposal of having a different
override
configuration per tier is meant to solve this.