Skip to content

Conversation

@szwarckonrad
Copy link
Contributor

@szwarckonrad szwarckonrad commented Dec 11, 2025

This PR fixes the deprecated api/endpoint_list APIs to properly enforce RBAC, space awareness, and security tag assignment through the extension point system.

Changes:

  • Modified 5 ExceptionListClient methods to invoke extension points: createEndpointListItem, updateEndpointListItem, deleteEndpointListItem, getEndpointListItem, findEndpointListItem
  • Added entry validation and disallowed field checks to create route
  • Fixed return type in read route to match API schema
  • Added comprehensive unit tests for all 5 methods
  • Added API integration tests covering all RBAC scenarios

All changes mirror the existing exception list API behavior.

Closes https://github.com/elastic/security-team/issues/14818

@szwarckonrad szwarckonrad added release_note:skip Skip the PR/issue when compiling release notes Team:Defend Workflows “EDR Workflows” sub-team of Security Solution labels Dec 11, 2025
@szwarckonrad szwarckonrad self-assigned this Dec 11, 2025
@szwarckonrad szwarckonrad changed the title [Defend Workflows] Fix endpoint list API to enforce RBAC and space awareness [Defend Workflows] Fix endpoint list API to mirror exception list API Dec 16, 2025
@szwarckonrad szwarckonrad marked this pull request as ready for review December 17, 2025 09:55
@szwarckonrad szwarckonrad requested review from a team as code owners December 17, 2025 09:55
@elasticmachine
Copy link
Contributor

Pinging @elastic/security-defend-workflows (Team:Defend Workflows)

@szwarckonrad szwarckonrad added backport:all-open Backport to all branches that could still receive a release backport:version Backport to applied version labels v9.1.0 v9.2.0 and removed backport:all-open Backport to all branches that could still receive a release labels Dec 17, 2025
Copy link
Contributor

@paul-tavares paul-tavares left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed code only and looks good

Copy link
Contributor

@nkhristinin nkhristinin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code review only, changes looks fine, only have 1 question about return type

return response.ok({ body: ReadEndpointListItemResponse.parse(exceptionListItem) });
// API schema expects an array of items
return response.ok({
body: ReadEndpointListItemResponse.parse([exceptionListItem]),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we change response type here to array?

Is this route consumed by anybody and would it be a breaking change?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great catch, the schema was incorrectly defined as an array when it should return a single item (matching the exception list API pattern), so I've updated the OpenAPI schema and regenerated the types instead of wrapping the response in an array.

@elastic-vault-github-plugin-prod elastic-vault-github-plugin-prod bot requested a review from a team as a code owner December 18, 2025 10:46
Copy link
Contributor

@gergoabraham gergoabraham left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks great, and works mostly great! 🚀

one use case is missing, which shouldn't be a problem for 9.1/9.2/9.3 without the endpointExceptionsMovedUnderManagement feature flag enabled, so it can be done in a follow-up PR as well.

the use case is _find with space awareness: a per-policy (or non-global) artifact should be only seen in a space where it was either created, or where a package policy to which it's assigned exists. the easiest use case: an unassigned per-policy artifact should be visible only in the space it was created.

and this space aware filtering is provided by the exception_lists API, it's working out of the box for all artifacts, even for endpoint exceptions: you won't see endpoint exceptions on the UI from other spaces. but, endpoint_list API for some reason does not apply the space filtering.

i understood earlier that it should be provided by the validators (here by setFindRequestFilterScopeToActiveSpace), so i don't see why it's not applied based on your changes.

if you chose the follow-up PR, please make sure to don't close the issue for now, as this use case is tracked there 🙌

here are the tests i performed
// -- when endpointExceptionsMovedUnderManagement feature flag is enabled ---
// test 1: fetching should not show item from space B (only when FF enabled) ❌
// for this, you need per-policy endpoint exceptions created in another space, therefore they shouldn't be visible in the current space
// result: exception_list API filters based on space, endpoint_list API does not
GET kbn://api/exception_lists/items/_find?list_id=endpoint_list&namespace_type=agnostic
GET kbn://api/endpoint_list/items/_find

// test 1.5: deleting in another space only with global_artifact_management_all, but in current space without it (only when FF enabled) ✅
DELETE kbn://api/endpoint_list/items?id=24187dc1-c65e-42a6-94a4-d58640161ce5
DELETE kbn://api/exception_lists/items?id=77e62c4a-3e23-40bd-9223-c3a6fd82ec5d&list_id=endpoint_list&namespace_type=agnostic

// -- when feature flag is disabled ---
// test 2: should add space owner + policy:all tags on create ✅
// test 3: should create only with both global_artifact_management AND endpoint_exceptions_all ✅
POST kbn://api/exception_lists/items
{
  "comments": [],
  "description": "Exception list item",
  "entries": [
    {
      "field": "client.port",
      "operator": "included",
      "type": "match",
      "value": "2"
    }
  ],
  "list_id": "endpoint_list",
  "name": "through exceptions API",
  "namespace_type": "agnostic",
  "tags": [],
  "type": "simple",
  "os_types": [
    "linux"
  ]
}
POST kbn://api/endpoint_list/items
{
  "comments": [],
  "description": "Exception list item",
  "entries": [
    {
      "field": "client.port",
      "operator": "included",
      "type": "match",
      "value": "3"
    }
  ],
  "name": "through endpoint_list_API",
  "namespace_type": "agnostic",
  "tags": [


  ],
  "type": "simple",
  "os_types": [
    "linux"
  ]
}



// test 4: should DELETE only with both global_artifact_management AND endpoint_exceptions_all ✅
DELETE kbn://api/endpoint_list/items?id=9f5d8514-13e1-4262-9dc7-0b52b161f418
DELETE kbn://api/exception_lists/items?id=9f5d8514-13e1-4262-9dc7-0b52b161f418

// test 5: should update only with both global_artifact_management AND endpoint_exceptions_all ✅
PUT kbn://api/exception_lists/items
{
  "id": "24187dc1-c65e-42a6-94a4-d58640161ce5",
  "item_id": "cb8d988c-ec08-41d3-afc3-15f695aa3d0b",
  "type": "simple",
  "name": "from UI space default",
  "description": "Exception list item",
  "entries": [
    {
      "field": "client.port",
      "operator": "included",
      "type": "match",
      "value": "66"
    }
  ],
  "namespace_type": "agnostic",
  "os_types": [
    "linux"
  ],
  "tags": [
    "ownerSpaceId:default"
  ],
  "comments": []
}
PUT kbn://api/endpoint_list/items
{
  "id": "24187dc1-c65e-42a6-94a4-d58640161ce5",
  "item_id": "cb8d988c-ec08-41d3-afc3-15f695aa3d0b",
  "type": "simple",
  "name": "from UI space default",
  "description": "Exception list item",
  "entries": [
    {
      "field": "client.port",
      "operator": "included",
      "type": "match",
      "value": "666"
    }
  ],
  "namespace_type": "agnostic",
  "os_types": [
    "linux"
  ],
  "tags": [
  ],
  "comments": []
}

// test 6: should add tags on update ✅
PUT kbn://api/exception_lists/items
{
  "id": "44ade8b0-af69-46a0-84a1-2b11102645cf",
  "item_id": "3fce5cc9-c8e3-40dc-a7d3-5a3104173de4",
  "type": "simple",
  "name": "from UI space default",
  "description": "Exception list item",
  "entries": [
    {
      "field": "client.port",
      "operator": "included",
      "type": "match",
      "value": "66"
    }
  ],
  "namespace_type": "agnostic",
  "os_types": [
    "linux"
  ],
  "tags": [],
  "comments": []
}
PUT kbn://api/endpoint_list/items
{
  "id": "44ade8b0-af69-46a0-84a1-2b11102645cf",
  "item_id": "3fce5cc9-c8e3-40dc-a7d3-5a3104173de4",
  "type": "simple",
  "name": "from UI space default",
  "description": "Exception list item",
  "entries": [
    {
      "field": "client.port",
      "operator": "included",
      "type": "match",
      "value": "666"
    }
  ],
  "namespace_type": "agnostic",
  "os_types": [
    "linux"
  ],
  "tags": [],
  "comments": []
}

szwarckonrad added a commit to szwarckonrad/kibana that referenced this pull request Dec 19, 2025
…elastic#246019)

This PR fixes the deprecated `api/endpoint_list` APIs to properly
enforce RBAC, space awareness, and security tag assignment through the
extension point system.

Changes:
- Modified 5 ExceptionListClient methods to invoke extension points:
`createEndpointListItem`, `updateEndpointListItem`,
`deleteEndpointListItem`, `getEndpointListItem`, `findEndpointListItem`
- Added entry validation and disallowed field checks to create route
- Fixed return type in read route to match API schema
- Added comprehensive unit tests for all 5 methods
- Added API integration tests covering all RBAC scenarios

All changes mirror the existing exception list API behavior.

Closes elastic/security-team#14818

---------

Co-authored-by: kibanamachine <[email protected]>
(cherry picked from commit 70c5025)
@szwarckonrad
Copy link
Contributor Author

💚 All backports created successfully

Status Branch Result
9.3
9.2
9.1

Note: Successful backport PRs will be merged automatically after passing CI.

Questions ?

Please refer to the Backport tool documentation

szwarckonrad added a commit to szwarckonrad/kibana that referenced this pull request Dec 19, 2025
…elastic#246019)

This PR fixes the deprecated `api/endpoint_list` APIs to properly
enforce RBAC, space awareness, and security tag assignment through the
extension point system.

Changes:
- Modified 5 ExceptionListClient methods to invoke extension points:
`createEndpointListItem`, `updateEndpointListItem`,
`deleteEndpointListItem`, `getEndpointListItem`, `findEndpointListItem`
- Added entry validation and disallowed field checks to create route
- Fixed return type in read route to match API schema
- Added comprehensive unit tests for all 5 methods
- Added API integration tests covering all RBAC scenarios

All changes mirror the existing exception list API behavior.

Closes elastic/security-team#14818

---------

Co-authored-by: kibanamachine <[email protected]>
(cherry picked from commit 70c5025)

# Conflicts:
#	x-pack/solutions/security/test/security_solution_api_integration/test_suites/edr_workflows/artifacts/trial_license_complete_tier/endpoint_exceptions.ff_enabled.ts
@szwarckonrad
Copy link
Contributor Author

💚 All backports created successfully

Status Branch Result
9.2

Note: Successful backport PRs will be merged automatically after passing CI.

Questions ?

Please refer to the Backport tool documentation

szwarckonrad added a commit that referenced this pull request Dec 19, 2025
…st API (#246019) (#247041)

# Backport

This will backport the following commits from `main` to `9.3`:
- [[Defend Workflows] Fix endpoint list API to mirror exception list API
(#246019)](#246019)

<!--- Backport version: 10.2.0 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sorenlouv/backport)

<!--BACKPORT [{"author":{"name":"Konrad
Szwarc","email":"[email protected]"},"sourceCommit":{"committedDate":"2025-12-19T09:01:52Z","message":"[Defend
Workflows] Fix endpoint list API to mirror exception list API
(#246019)\n\nThis PR fixes the deprecated `api/endpoint_list` APIs to
properly\nenforce RBAC, space awareness, and security tag assignment
through the\nextension point system.\n\nChanges:\n- Modified 5
ExceptionListClient methods to invoke extension
points:\n`createEndpointListItem`,
`updateEndpointListItem`,\n`deleteEndpointListItem`,
`getEndpointListItem`, `findEndpointListItem`\n- Added entry validation
and disallowed field checks to create route\n- Fixed return type in read
route to match API schema\n- Added comprehensive unit tests for all 5
methods\n- Added API integration tests covering all RBAC
scenarios\n\nAll changes mirror the existing exception list API
behavior.\n\nCloses
https://github.com/elastic/security-team/issues/14818\n\n---------\n\nCo-authored-by:
kibanamachine
<[email protected]>","sha":"70c5025c3c6bab5496df70f207632d1d8aa5fc9e","branchLabelMapping":{"^v9.4.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","Team:Defend
Workflows","backport:version","v9.1.0","v9.2.0","v9.3.0","v9.4.0"],"title":"[Defend
Workflows] Fix endpoint list API to mirror exception list
API","number":246019,"url":"https://github.com/elastic/kibana/pull/246019","mergeCommit":{"message":"[Defend
Workflows] Fix endpoint list API to mirror exception list API
(#246019)\n\nThis PR fixes the deprecated `api/endpoint_list` APIs to
properly\nenforce RBAC, space awareness, and security tag assignment
through the\nextension point system.\n\nChanges:\n- Modified 5
ExceptionListClient methods to invoke extension
points:\n`createEndpointListItem`,
`updateEndpointListItem`,\n`deleteEndpointListItem`,
`getEndpointListItem`, `findEndpointListItem`\n- Added entry validation
and disallowed field checks to create route\n- Fixed return type in read
route to match API schema\n- Added comprehensive unit tests for all 5
methods\n- Added API integration tests covering all RBAC
scenarios\n\nAll changes mirror the existing exception list API
behavior.\n\nCloses
https://github.com/elastic/security-team/issues/14818\n\n---------\n\nCo-authored-by:
kibanamachine
<[email protected]>","sha":"70c5025c3c6bab5496df70f207632d1d8aa5fc9e"}},"sourceBranch":"main","suggestedTargetBranches":["9.1","9.2","9.3"],"targetPullRequestStates":[{"branch":"9.1","label":"v9.1.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"9.2","label":"v9.2.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"9.3","label":"v9.3.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v9.4.0","branchLabelMappingKey":"^v9.4.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/246019","number":246019,"mergeCommit":{"message":"[Defend
Workflows] Fix endpoint list API to mirror exception list API
(#246019)\n\nThis PR fixes the deprecated `api/endpoint_list` APIs to
properly\nenforce RBAC, space awareness, and security tag assignment
through the\nextension point system.\n\nChanges:\n- Modified 5
ExceptionListClient methods to invoke extension
points:\n`createEndpointListItem`,
`updateEndpointListItem`,\n`deleteEndpointListItem`,
`getEndpointListItem`, `findEndpointListItem`\n- Added entry validation
and disallowed field checks to create route\n- Fixed return type in read
route to match API schema\n- Added comprehensive unit tests for all 5
methods\n- Added API integration tests covering all RBAC
scenarios\n\nAll changes mirror the existing exception list API
behavior.\n\nCloses
https://github.com/elastic/security-team/issues/14818\n\n---------\n\nCo-authored-by:
kibanamachine
<[email protected]>","sha":"70c5025c3c6bab5496df70f207632d1d8aa5fc9e"}}]}]
BACKPORT-->

Co-authored-by: kibanamachine <[email protected]>
@kibanamachine kibanamachine added the backport missing Added to PRs automatically when the are determined to be missing a backport. label Dec 22, 2025
@kibanamachine
Copy link
Contributor

Looks like this PR has backport PRs but they still haven't been merged. Please merge them ASAP to keep the branches relatively in sync.
cc: @szwarckonrad

9 similar comments
@kibanamachine
Copy link
Contributor

Looks like this PR has backport PRs but they still haven't been merged. Please merge them ASAP to keep the branches relatively in sync.
cc: @szwarckonrad

@kibanamachine
Copy link
Contributor

Looks like this PR has backport PRs but they still haven't been merged. Please merge them ASAP to keep the branches relatively in sync.
cc: @szwarckonrad

@kibanamachine
Copy link
Contributor

Looks like this PR has backport PRs but they still haven't been merged. Please merge them ASAP to keep the branches relatively in sync.
cc: @szwarckonrad

@kibanamachine
Copy link
Contributor

Looks like this PR has backport PRs but they still haven't been merged. Please merge them ASAP to keep the branches relatively in sync.
cc: @szwarckonrad

@kibanamachine
Copy link
Contributor

Looks like this PR has backport PRs but they still haven't been merged. Please merge them ASAP to keep the branches relatively in sync.
cc: @szwarckonrad

@kibanamachine
Copy link
Contributor

Looks like this PR has backport PRs but they still haven't been merged. Please merge them ASAP to keep the branches relatively in sync.
cc: @szwarckonrad

@kibanamachine
Copy link
Contributor

Looks like this PR has backport PRs but they still haven't been merged. Please merge them ASAP to keep the branches relatively in sync.
cc: @szwarckonrad

@kibanamachine
Copy link
Contributor

Looks like this PR has backport PRs but they still haven't been merged. Please merge them ASAP to keep the branches relatively in sync.
cc: @szwarckonrad

@kibanamachine
Copy link
Contributor

Looks like this PR has backport PRs but they still haven't been merged. Please merge them ASAP to keep the branches relatively in sync.
cc: @szwarckonrad

szwarckonrad added a commit that referenced this pull request Jan 5, 2026
…st API (#246019) (#247050)

# Backport

This will backport the following commits from `main` to `9.2`:
- [[Defend Workflows] Fix endpoint list API to mirror exception list API
(#246019)](#246019)

<!--- Backport version: 10.2.0 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sorenlouv/backport)

<!--BACKPORT [{"author":{"name":"Konrad
Szwarc","email":"[email protected]"},"sourceCommit":{"committedDate":"2025-12-19T09:01:52Z","message":"[Defend
Workflows] Fix endpoint list API to mirror exception list API
(#246019)\n\nThis PR fixes the deprecated `api/endpoint_list` APIs to
properly\nenforce RBAC, space awareness, and security tag assignment
through the\nextension point system.\n\nChanges:\n- Modified 5
ExceptionListClient methods to invoke extension
points:\n`createEndpointListItem`,
`updateEndpointListItem`,\n`deleteEndpointListItem`,
`getEndpointListItem`, `findEndpointListItem`\n- Added entry validation
and disallowed field checks to create route\n- Fixed return type in read
route to match API schema\n- Added comprehensive unit tests for all 5
methods\n- Added API integration tests covering all RBAC
scenarios\n\nAll changes mirror the existing exception list API
behavior.\n\nCloses
https://github.com/elastic/security-team/issues/14818\n\n---------\n\nCo-authored-by:
kibanamachine
<[email protected]>","sha":"70c5025c3c6bab5496df70f207632d1d8aa5fc9e","branchLabelMapping":{"^v9.4.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","Team:Defend
Workflows","backport:version","v9.1.0","v9.2.0","v9.3.0","v9.4.0"],"title":"[Defend
Workflows] Fix endpoint list API to mirror exception list
API","number":246019,"url":"https://github.com/elastic/kibana/pull/246019","mergeCommit":{"message":"[Defend
Workflows] Fix endpoint list API to mirror exception list API
(#246019)\n\nThis PR fixes the deprecated `api/endpoint_list` APIs to
properly\nenforce RBAC, space awareness, and security tag assignment
through the\nextension point system.\n\nChanges:\n- Modified 5
ExceptionListClient methods to invoke extension
points:\n`createEndpointListItem`,
`updateEndpointListItem`,\n`deleteEndpointListItem`,
`getEndpointListItem`, `findEndpointListItem`\n- Added entry validation
and disallowed field checks to create route\n- Fixed return type in read
route to match API schema\n- Added comprehensive unit tests for all 5
methods\n- Added API integration tests covering all RBAC
scenarios\n\nAll changes mirror the existing exception list API
behavior.\n\nCloses
https://github.com/elastic/security-team/issues/14818\n\n---------\n\nCo-authored-by:
kibanamachine
<[email protected]>","sha":"70c5025c3c6bab5496df70f207632d1d8aa5fc9e"}},"sourceBranch":"main","suggestedTargetBranches":["9.2"],"targetPullRequestStates":[{"branch":"9.1","label":"v9.1.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"url":"https://github.com/elastic/kibana/pull/247047","number":247047,"state":"OPEN"},{"branch":"9.2","label":"v9.2.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"9.3","label":"v9.3.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"url":"https://github.com/elastic/kibana/pull/247041","number":247041,"state":"OPEN"},{"branch":"main","label":"v9.4.0","branchLabelMappingKey":"^v9.4.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/246019","number":246019,"mergeCommit":{"message":"[Defend
Workflows] Fix endpoint list API to mirror exception list API
(#246019)\n\nThis PR fixes the deprecated `api/endpoint_list` APIs to
properly\nenforce RBAC, space awareness, and security tag assignment
through the\nextension point system.\n\nChanges:\n- Modified 5
ExceptionListClient methods to invoke extension
points:\n`createEndpointListItem`,
`updateEndpointListItem`,\n`deleteEndpointListItem`,
`getEndpointListItem`, `findEndpointListItem`\n- Added entry validation
and disallowed field checks to create route\n- Fixed return type in read
route to match API schema\n- Added comprehensive unit tests for all 5
methods\n- Added API integration tests covering all RBAC
scenarios\n\nAll changes mirror the existing exception list API
behavior.\n\nCloses
https://github.com/elastic/security-team/issues/14818\n\n---------\n\nCo-authored-by:
kibanamachine
<[email protected]>","sha":"70c5025c3c6bab5496df70f207632d1d8aa5fc9e"}}]}]
BACKPORT-->

---------

Co-authored-by: kibanamachine <[email protected]>
szwarckonrad added a commit that referenced this pull request Jan 5, 2026
…st API (#246019) (#247047)

# Backport

This will backport the following commits from `main` to `9.1`:
- [[Defend Workflows] Fix endpoint list API to mirror exception list API
(#246019)](#246019)

<!--- Backport version: 10.2.0 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sorenlouv/backport)

<!--BACKPORT [{"author":{"name":"Konrad
Szwarc","email":"[email protected]"},"sourceCommit":{"committedDate":"2025-12-19T09:01:52Z","message":"[Defend
Workflows] Fix endpoint list API to mirror exception list API
(#246019)\n\nThis PR fixes the deprecated `api/endpoint_list` APIs to
properly\nenforce RBAC, space awareness, and security tag assignment
through the\nextension point system.\n\nChanges:\n- Modified 5
ExceptionListClient methods to invoke extension
points:\n`createEndpointListItem`,
`updateEndpointListItem`,\n`deleteEndpointListItem`,
`getEndpointListItem`, `findEndpointListItem`\n- Added entry validation
and disallowed field checks to create route\n- Fixed return type in read
route to match API schema\n- Added comprehensive unit tests for all 5
methods\n- Added API integration tests covering all RBAC
scenarios\n\nAll changes mirror the existing exception list API
behavior.\n\nCloses
https://github.com/elastic/security-team/issues/14818\n\n---------\n\nCo-authored-by:
kibanamachine
<[email protected]>","sha":"70c5025c3c6bab5496df70f207632d1d8aa5fc9e","branchLabelMapping":{"^v9.4.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","Team:Defend
Workflows","backport:version","v9.1.0","v9.2.0","v9.3.0","v9.4.0"],"title":"[Defend
Workflows] Fix endpoint list API to mirror exception list
API","number":246019,"url":"https://github.com/elastic/kibana/pull/246019","mergeCommit":{"message":"[Defend
Workflows] Fix endpoint list API to mirror exception list API
(#246019)\n\nThis PR fixes the deprecated `api/endpoint_list` APIs to
properly\nenforce RBAC, space awareness, and security tag assignment
through the\nextension point system.\n\nChanges:\n- Modified 5
ExceptionListClient methods to invoke extension
points:\n`createEndpointListItem`,
`updateEndpointListItem`,\n`deleteEndpointListItem`,
`getEndpointListItem`, `findEndpointListItem`\n- Added entry validation
and disallowed field checks to create route\n- Fixed return type in read
route to match API schema\n- Added comprehensive unit tests for all 5
methods\n- Added API integration tests covering all RBAC
scenarios\n\nAll changes mirror the existing exception list API
behavior.\n\nCloses
https://github.com/elastic/security-team/issues/14818\n\n---------\n\nCo-authored-by:
kibanamachine
<[email protected]>","sha":"70c5025c3c6bab5496df70f207632d1d8aa5fc9e"}},"sourceBranch":"main","suggestedTargetBranches":["9.1","9.2","9.3"],"targetPullRequestStates":[{"branch":"9.1","label":"v9.1.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"9.2","label":"v9.2.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"9.3","label":"v9.3.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v9.4.0","branchLabelMappingKey":"^v9.4.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/246019","number":246019,"mergeCommit":{"message":"[Defend
Workflows] Fix endpoint list API to mirror exception list API
(#246019)\n\nThis PR fixes the deprecated `api/endpoint_list` APIs to
properly\nenforce RBAC, space awareness, and security tag assignment
through the\nextension point system.\n\nChanges:\n- Modified 5
ExceptionListClient methods to invoke extension
points:\n`createEndpointListItem`,
`updateEndpointListItem`,\n`deleteEndpointListItem`,
`getEndpointListItem`, `findEndpointListItem`\n- Added entry validation
and disallowed field checks to create route\n- Fixed return type in read
route to match API schema\n- Added comprehensive unit tests for all 5
methods\n- Added API integration tests covering all RBAC
scenarios\n\nAll changes mirror the existing exception list API
behavior.\n\nCloses
https://github.com/elastic/security-team/issues/14818\n\n---------\n\nCo-authored-by:
kibanamachine
<[email protected]>","sha":"70c5025c3c6bab5496df70f207632d1d8aa5fc9e"}}]}]
BACKPORT-->

---------

Co-authored-by: kibanamachine <[email protected]>
@kibanamachine kibanamachine added v9.2.4 v9.1.10 and removed backport missing Added to PRs automatically when the are determined to be missing a backport. labels Jan 5, 2026
CAWilson94 pushed a commit to CAWilson94/kibana that referenced this pull request Jan 6, 2026
…elastic#246019)

This PR fixes the deprecated `api/endpoint_list` APIs to properly
enforce RBAC, space awareness, and security tag assignment through the
extension point system.

Changes:
- Modified 5 ExceptionListClient methods to invoke extension points:
`createEndpointListItem`, `updateEndpointListItem`,
`deleteEndpointListItem`, `getEndpointListItem`, `findEndpointListItem`
- Added entry validation and disallowed field checks to create route
- Fixed return type in read route to match API schema
- Added comprehensive unit tests for all 5 methods
- Added API integration tests covering all RBAC scenarios

All changes mirror the existing exception list API behavior.

Closes elastic/security-team#14818

---------

Co-authored-by: kibanamachine <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport:version Backport to applied version labels release_note:skip Skip the PR/issue when compiling release notes Team:Defend Workflows “EDR Workflows” sub-team of Security Solution v9.1.10 v9.2.4 v9.3.0 v9.4.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants