[RAC] [Alerts] [RBAC] #95721
Labels
epic
Team:Detections and Resp
Security Detection Response Team
Team: SecuritySolution
Security Solutions Team working on SIEM, Endpoint, Timeline, Resolver, etc.
Theme: rac
label obsolete
Summary
Alerts as data RBAC will allow Kibana solutions (applications) to use alerts as data scoped to their realm (naming TBD).
Requirements
Read
andAll
privileges are respected, so users who are, for example, read-only users can only read an Alert, but can't change it.Motivation
Alerts as data is part of the broader initiative for a unified alerting experience. Currently only the security solution provides an interface to alerts as data through the
.siem-signals-<space>
index but the hope is to provide this across solutions and for the stack.Considering this, we would like to provide way to prevent users from accessing alerts they are not privileged to access. If a user only has permission to read alerts from Observability, we do not want to display security solution alerts alongside those Observability alerts (or vice-versa).
For that reason, similar to the Alerting framework, Alerts needs its own RBAC system. The needs of the Alerts RBAC are simpler as there is no notion of the producer as in the alerting framework.
Detailed design
Alerts data index
Each solution has the ability to create rules that will generate alerts and notifications (actions). Because we are not using saved objects the RBAC implementation will differ from other teams (e.g. kibana alerting framework, cases etc.) Although Observability has sub-features like APM and Logs, this feature is intended to tackle larger-scoped application-level authorization. In the future we can see possibly adding sub-feature level RBAC support. The plan is to append a consumer / scope / class / client_scope field to each alert to determine which users have CRUD access to what alerts.
Migrating the current alerts from
.siem-signals
index into this unified index will be straightforward just adding a consumer for 'securitySolution'. Observability alerts will be a little more difficult to migrate into this unified index but this migration process will be defined a bit later.Features
An Alerts feature will be created for Observability and an Alerts sub-feature for Security Solution. Administrators can specify if the access to the Alerts feature will be
all
,read
. ornone
.When a plugin registers a feature, it can specify which consumers of alerts a user could be given access to when granted that specific feature privilege. For now, we can assume that a single feature will only register a single consumer of alerts. For example, in the observability plugin, a new feature privilege will be created called Alerts which when granted will give a user access to the
observability
alerts consumer. This will be very similar to the Security Solution plugin. When a user is granted access to theSecurity
feature within the Security Solution plugin they will be granted access to thesecuritySolution
alerts consumer.A single user can be given access to multiple features and therefore could have access to multiple alerts consumers.
Spaces
The RBAC will be spaces oriented meaning that space user's permission will be checked before an action.
Alerts privilege actions
[NOTE]: think through actions of t1_analyst vs hunter etc...
i.e. t1_analyst would have "Read" for security solution but "All" for Alerts sub-feature within the security solution to allow them the ability to update alert statuses but not modify rules or anything in the security solution, nor view Observability alerts.
Read
// search strategy through the timeline
rac:${spaceid}:${version}:${consumer}/get
: A user can get an alert.rac:${spaceid}:${version}:${consumer}/find
: A user can query all alerts.Write
rac:${spaceid}:${version}:${consumer}/update
: A user can update a status to beopen
,closed
, andin-progress
.Alerts client (RAC)
The alerts client exports a set of functions to facilitate alerts operations. The alerts client is exported for other plugins to be able to create, view or update alerts. The alerts client can be accessed either from the route context or within the plugin's lifecycles.
Example of the RAC Client interface:
Routes
Some of the routes of the Alerts API use the Alerts client to serve the request. Most of them do not. We are in the process of moving route logic to a dedicated function for each route inside the case client.
Example:
Authorization class
The Alerts RBAC implementation will follow the alerting team's implementation by creating an
Authorization
class that each CRUD code path will call to determine if the requesting user is authenticated for that specific operation.An audit log mechanism will be implemented to log every success or failure of the authorization class.
High-level authorization flow
Future
The need of other Kibana plugins to use the same RBAC may arise. We need to think about how we can generalize the RBAC to support other Kibana plugins.
Tasks:
client_scope
) [RAC] RBAC UI Changes #95821 (PR)The text was updated successfully, but these errors were encountered: