[SIEM][Detection Engine][Lists] Adds list permissions (#72335)

## Summary

* Adds list permissions as a feature control to SIEM.
* Separates the controls between two, one of which is `access:lists-all` and the other is `access:lists-read`
* Grants SIEM the ability to utilize both depending on which feature mode the space is in.
This commit is contained in:
Frank Hassanabad 2020-07-20 11:00:59 -06:00 committed by GitHub
parent afae94a85e
commit 8a4daffcfd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
35 changed files with 50 additions and 36 deletions

View file

@ -21,7 +21,7 @@ export const createEndpointListItemRoute = (router: IRouter): void => {
router.post(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: ENDPOINT_LIST_ITEM_URL,
validate: {

View file

@ -26,7 +26,7 @@ export const createEndpointListRoute = (router: IRouter): void => {
router.post(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: ENDPOINT_LIST_URL,
validate: false,

View file

@ -22,7 +22,7 @@ export const createExceptionListItemRoute = (router: IRouter): void => {
router.post(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: EXCEPTION_LIST_ITEM_URL,
validate: {

View file

@ -21,7 +21,7 @@ export const createExceptionListRoute = (router: IRouter): void => {
router.post(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: EXCEPTION_LIST_URL,
validate: {

View file

@ -17,7 +17,7 @@ export const createListIndexRoute = (router: IRouter): void => {
router.post(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: LIST_INDEX,
validate: false,

View file

@ -17,7 +17,7 @@ export const createListItemRoute = (router: IRouter): void => {
router.post(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: LIST_ITEM_URL,
validate: {

View file

@ -17,7 +17,7 @@ export const createListRoute = (router: IRouter): void => {
router.post(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: LIST_URL,
validate: {

View file

@ -21,7 +21,7 @@ export const deleteEndpointListItemRoute = (router: IRouter): void => {
router.delete(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: ENDPOINT_LIST_ITEM_URL,
validate: {

View file

@ -21,7 +21,7 @@ export const deleteExceptionListItemRoute = (router: IRouter): void => {
router.delete(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: EXCEPTION_LIST_ITEM_URL,
validate: {

View file

@ -21,7 +21,7 @@ export const deleteExceptionListRoute = (router: IRouter): void => {
router.delete(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: EXCEPTION_LIST_URL,
validate: {

View file

@ -33,7 +33,7 @@ export const deleteListIndexRoute = (router: IRouter): void => {
router.delete(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: LIST_INDEX,
validate: false,

View file

@ -17,7 +17,7 @@ export const deleteListItemRoute = (router: IRouter): void => {
router.delete(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: LIST_ITEM_URL,
validate: {

View file

@ -17,7 +17,7 @@ export const deleteListRoute = (router: IRouter): void => {
router.delete(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: LIST_URL,
validate: {

View file

@ -18,7 +18,7 @@ export const exportListItemRoute = (router: IRouter): void => {
router.post(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-read'],
},
path: `${LIST_ITEM_URL}/_export`,
validate: {

View file

@ -21,7 +21,7 @@ export const findEndpointListItemRoute = (router: IRouter): void => {
router.get(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-read'],
},
path: `${ENDPOINT_LIST_ITEM_URL}/_find`,
validate: {

View file

@ -21,7 +21,7 @@ export const findExceptionListItemRoute = (router: IRouter): void => {
router.get(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-read'],
},
path: `${EXCEPTION_LIST_ITEM_URL}/_find`,
validate: {

View file

@ -21,7 +21,7 @@ export const findExceptionListRoute = (router: IRouter): void => {
router.get(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-read'],
},
path: `${EXCEPTION_LIST_URL}/_find`,
validate: {

View file

@ -22,7 +22,7 @@ export const findListItemRoute = (router: IRouter): void => {
router.get(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-read'],
},
path: `${LIST_ITEM_URL}/_find`,
validate: {

View file

@ -18,7 +18,7 @@ export const findListRoute = (router: IRouter): void => {
router.get(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-read'],
},
path: `${LIST_URL}/_find`,
validate: {

View file

@ -26,7 +26,7 @@ export const importListItemRoute = (router: IRouter, config: ConfigType): void =
maxBytes: config.maxImportPayloadBytes,
parse: false,
},
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: `${LIST_ITEM_URL}/_import`,
validate: {

View file

@ -17,7 +17,7 @@ export const patchListItemRoute = (router: IRouter): void => {
router.patch(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: LIST_ITEM_URL,
validate: {

View file

@ -17,7 +17,7 @@ export const patchListRoute = (router: IRouter): void => {
router.patch(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: LIST_URL,
validate: {

View file

@ -21,7 +21,7 @@ export const readEndpointListItemRoute = (router: IRouter): void => {
router.get(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-read'],
},
path: ENDPOINT_LIST_ITEM_URL,
validate: {

View file

@ -21,7 +21,7 @@ export const readExceptionListItemRoute = (router: IRouter): void => {
router.get(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-read'],
},
path: EXCEPTION_LIST_ITEM_URL,
validate: {

View file

@ -21,7 +21,7 @@ export const readExceptionListRoute = (router: IRouter): void => {
router.get(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-read'],
},
path: EXCEPTION_LIST_URL,
validate: {

View file

@ -17,7 +17,7 @@ export const readListIndexRoute = (router: IRouter): void => {
router.get(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-read'],
},
path: LIST_INDEX,
validate: false,

View file

@ -17,7 +17,7 @@ export const readListItemRoute = (router: IRouter): void => {
router.get(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-read'],
},
path: LIST_ITEM_URL,
validate: {

View file

@ -17,7 +17,7 @@ export const readListRoute = (router: IRouter): void => {
router.get(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-read'],
},
path: LIST_URL,
validate: {

View file

@ -20,7 +20,7 @@ export const readPrivilegesRoute = (
router.get(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-read'],
},
path: LIST_PRIVILEGES_URL,
validate: false,

View file

@ -21,7 +21,7 @@ export const updateEndpointListItemRoute = (router: IRouter): void => {
router.put(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: ENDPOINT_LIST_ITEM_URL,
validate: {

View file

@ -21,7 +21,7 @@ export const updateExceptionListItemRoute = (router: IRouter): void => {
router.put(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: EXCEPTION_LIST_ITEM_URL,
validate: {

View file

@ -21,7 +21,7 @@ export const updateExceptionListRoute = (router: IRouter): void => {
router.put(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: EXCEPTION_LIST_URL,
validate: {

View file

@ -17,7 +17,7 @@ export const updateListItemRoute = (router: IRouter): void => {
router.put(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: LIST_ITEM_URL,
validate: {

View file

@ -17,7 +17,7 @@ export const updateListRoute = (router: IRouter): void => {
router.put(
{
options: {
tags: ['access:lists'],
tags: ['access:lists-all'],
},
path: LIST_URL,
validate: {

View file

@ -167,7 +167,14 @@ export class Plugin implements IPlugin<PluginSetup, PluginStart, SetupPlugins, S
all: {
app: [...securitySubPlugins, 'kibana'],
catalogue: ['securitySolution'],
api: ['securitySolution', 'actions-read', 'actions-all', 'alerting-read', 'alerting-all'],
api: [
'securitySolution',
'actions-read',
'actions-all',
'alerting-read',
'alerting-all',
'lists-all',
],
savedObject: {
all: [
'alert',
@ -195,7 +202,14 @@ export class Plugin implements IPlugin<PluginSetup, PluginStart, SetupPlugins, S
read: {
app: [...securitySubPlugins, 'kibana'],
catalogue: ['securitySolution'],
api: ['securitySolution', 'actions-read', 'actions-all', 'alerting-read', 'alerting-all'],
api: [
'securitySolution',
'actions-read',
'actions-all',
'alerting-read',
'alerting-all',
'lists-read',
],
savedObject: {
all: ['alert', 'action', 'action_task_params'],
read: [