Skip to content

Add reporting_user feature for reserved set of privileges#231533

Merged
darnautov merged 37 commits intoelastic:mainfrom
tsullivan:reporting/reserved-reporting-user-privileges
Aug 20, 2025
Merged

Add reporting_user feature for reserved set of privileges#231533
darnautov merged 37 commits intoelastic:mainfrom
tsullivan:reporting/reserved-reporting-user-privileges

Conversation

@tsullivan
Copy link
Member

@tsullivan tsullivan commented Aug 12, 2025

Summary

We want to switch the reserved reporting_user role to use a "reserved privilege definition" and uses just that privilege. This PR satisfies the Kibana requirements. There is a corresponding Elasticsearch PR: elastic/elasticsearch#132766

Testing

NOTE: PNG/PDF reporting requires a Trial, or Gold+ license

  1. Create test_reporting_user role

    POST /_security/role/test_reporting_user
    {
        "cluster": [],
        "indices": [],
        "application": [{
            "application": "kibana-*",
            "privileges": ["reserved_reporting_user"],
            "resources": ["*"]
        }]
    }
    
  2. Create test_analyst_user role

    POST /_security/role/test_analyst_user
    {
        "cluster": [],
        "indices": [
            {
            "names": ["kibana_sample_*"],
            "privileges": ["all"],
            "field_security": {
                "grant": ["*"],
                "except": []
            },
            "allow_restricted_indices": false
            }
        ],
        "applications": [
            {
            "application": "kibana-.kibana",
            "privileges": [
                "feature_discover_v2.read",
                "feature_dashboard_v2.read",
                "feature_canvas.read",
                "feature_visualize_v2.read"
            ],
            "resources": ["space:default"]
            }
        ],
        "run_as": [],
        "metadata": {},
        "transient_metadata": {
            "enabled": true
        }
    }
    
  3. Create a test user with just those two roles. Install sample data. Log in using the new test user.

  4. Test cases

    App Reporting feature
    Dashboard PDF, PNG, CSV (from saved search panel action)
    Discover CSV
    Canvas PDF
    Lens PDF, PNG
    Stack Management List reports, download reports, view report info, delete reports
  5. As admin, create an additional Space which the test user should not have access to. Ensure the test user does not have access to those spaces.

  6. Remove the test_reporting_user role from the user and ensure they do not see any Reporting controls in the UI, and can not access Stack Management > Reporting.

Checklist

Check the PR satisfies following conditions.

Reviewers should verify this PR satisfies this list as well.

  • [ ] Any text added follows EUI's writing guidelines, uses sentence case text and includes i18n support
  • [ ] Documentation was added for features that require explanation or tutorials
  • Unit or functional tests were updated or added to match the most common scenarios
  • [ ] If a plugin configuration key changed, check if it needs to be allowlisted in the cloud and added to the docker list
  • [ ] This was checked for breaking HTTP API changes, and any breaking changes have been approved by the breaking-change committee. The release_note:breaking label should be applied in these situations.
  • [ ] Flaky Test Runner was used on any tests changed
  • The PR description includes the appropriate Release Notes section, and the correct release_note:* label is applied per the guidelines
  • Review the backport guidelines and apply applicable backport:* labels.
@tsullivan tsullivan marked this pull request as ready for review August 13, 2025 14:08
@tsullivan tsullivan requested review from a team as code owners August 13, 2025 14:08
Copy link
Contributor

@nreese nreese left a comment

Choose a reason for hiding this comment

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

kibana-presentation changes LGTM
code review only

Copy link
Member

@legrego legrego left a comment

Choose a reason for hiding this comment

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

Thanks for the PR, Tim. If you want to test your changes locally, you can simulate the reserved role by putting this through DevTools, and then assigning a user this test_reporting_user role alongside a custom role:

POST /_security/role/test_reporting_user
{
    "cluster": [],
    "indices": [],
    "application": [{
        "application": "kibana-*",
        "privileges": ["reserved_reporting_user"],
        "resources": ["*"]
    }]
}
@tsullivan tsullivan self-assigned this Aug 19, 2025
Copy link
Contributor

@darnautov darnautov left a comment

Choose a reason for hiding this comment

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

Tested locally, LGTM

@tsullivan tsullivan requested a review from a team as a code owner August 19, 2025 15:46
@tsullivan tsullivan force-pushed the reporting/reserved-reporting-user-privileges branch from 48527fe to acfb1fe Compare August 19, 2025 20:20
@tsullivan tsullivan removed the request for review from a team August 20, 2025 00:40
@elasticmachine
Copy link
Contributor

💚 Build Succeeded

Metrics [docs]

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
reporting 166.4KB 166.4KB +79.0B
spaces 214.7KB 214.7KB +26.0B
total +105.0B

Page load bundle

Size of the bundles that are downloaded on every page load. Target size is below 100kb

id before after diff
canvas 13.5KB 13.6KB +92.0B
reporting 49.1KB 49.1KB +8.0B
total +100.0B

History

cc @tsullivan

@legrego legrego removed the request for review from mikecote August 20, 2025 02:33
Copy link
Contributor

@jloleysens jloleysens left a comment

Choose a reason for hiding this comment

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

Overall feature changes make sense, did not review in depth seems like Core review was not needed but for some reason is still block, so approving to unblock

@darnautov darnautov merged commit f9be58b into elastic:main Aug 20, 2025
13 checks passed
@kibanamachine
Copy link
Contributor

Starting backport for target branches: 9.0, 9.1

https://github.com/elastic/kibana/actions/runs/17097663139

@kibanamachine
Copy link
Contributor

💔 All backports failed

Status Branch Result
9.0 Backport failed because of merge conflicts
9.1 Backport failed because of merge conflicts

Manual backport

To create the backport manually run:

node scripts/backport --pr 231533

Questions ?

Please refer to the Backport tool documentation

darnautov pushed a commit to darnautov/kibana that referenced this pull request Aug 20, 2025
…231533)

## Summary

We want to switch the reserved `reporting_user` role to use a "reserved
privilege definition" and uses just that privilege. This PR satisfies
the Kibana requirements. There is a corresponding Elasticsearch PR:
elastic/elasticsearch#132766

## Testing
**NOTE: PNG/PDF reporting requires a Trial, or Gold+ license**

1. Create `test_reporting_user` role

    ```
    POST /_security/role/test_reporting_user
    {
        "cluster": [],
        "indices": [],
        "application": [{
            "application": "kibana-*",
            "privileges": ["reserved_reporting_user"],
            "resources": ["*"]
        }]
    }
    ```

2. Create `test_analyst_user` role

    ```
    POST /_security/role/test_analyst_user
    {
        "cluster": [],
        "indices": [
            {
            "names": ["kibana_sample_*"],
            "privileges": ["all"],
            "field_security": {
                "grant": ["*"],
                "except": []
            },
            "allow_restricted_indices": false
            }
        ],
        "applications": [
            {
            "application": "kibana-.kibana",
            "privileges": [
                "feature_discover_v2.read",
                "feature_dashboard_v2.read",
                "feature_canvas.read",
                "feature_visualize_v2.read"
            ],
            "resources": ["space:default"]
            }
        ],
        "run_as": [],
        "metadata": {},
        "transient_metadata": {
            "enabled": true
        }
    }
    ```

3. Create a test user with just those two roles. Install sample data.
Log in using the new test user.
4. Test cases

    | App | Reporting feature
    |-|-
    | Dashboard | PDF, PNG, CSV (from saved search panel action)
    | Discover | CSV
    | Canvas | PDF
    | Lens | PDF, PNG
| Stack Management | List reports, download reports, view report info,
delete reports

6. As admin, create an additional Space which the test user should not
have access to. Ensure the test user does not have access to those
spaces.
7. Remove the `test_reporting_user` role from the user and ensure they
do not see any Reporting controls in the UI, and can not access Stack
Management > Reporting.

## Checklist

Check the PR satisfies following conditions.

Reviewers should verify this PR satisfies this list as well.

- ~~[ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)~~
- ~~[ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials~~
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- ~~[ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)~~
- ~~[ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.~~
- ~~[ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed~~
- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [x] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.

---------

Co-authored-by: Larry Gregory <larry.gregory@elastic.co>
(cherry picked from commit f9be58b)

# Conflicts:
#	x-pack/platform/test/reporting_api_integration/reporting_and_security/default_reporting_user_role.ts
@darnautov
Copy link
Contributor

💚 All backports created successfully

Status Branch Result
9.1
9.0

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

Questions ?

Please refer to the Backport tool documentation

darnautov pushed a commit to darnautov/kibana that referenced this pull request Aug 20, 2025
…231533)

## Summary

We want to switch the reserved `reporting_user` role to use a "reserved
privilege definition" and uses just that privilege. This PR satisfies
the Kibana requirements. There is a corresponding Elasticsearch PR:
elastic/elasticsearch#132766

## Testing
**NOTE: PNG/PDF reporting requires a Trial, or Gold+ license**

1. Create `test_reporting_user` role

    ```
    POST /_security/role/test_reporting_user
    {
        "cluster": [],
        "indices": [],
        "application": [{
            "application": "kibana-*",
            "privileges": ["reserved_reporting_user"],
            "resources": ["*"]
        }]
    }
    ```

2. Create `test_analyst_user` role

    ```
    POST /_security/role/test_analyst_user
    {
        "cluster": [],
        "indices": [
            {
            "names": ["kibana_sample_*"],
            "privileges": ["all"],
            "field_security": {
                "grant": ["*"],
                "except": []
            },
            "allow_restricted_indices": false
            }
        ],
        "applications": [
            {
            "application": "kibana-.kibana",
            "privileges": [
                "feature_discover_v2.read",
                "feature_dashboard_v2.read",
                "feature_canvas.read",
                "feature_visualize_v2.read"
            ],
            "resources": ["space:default"]
            }
        ],
        "run_as": [],
        "metadata": {},
        "transient_metadata": {
            "enabled": true
        }
    }
    ```

3. Create a test user with just those two roles. Install sample data.
Log in using the new test user.
4. Test cases

    | App | Reporting feature
    |-|-
    | Dashboard | PDF, PNG, CSV (from saved search panel action)
    | Discover | CSV
    | Canvas | PDF
    | Lens | PDF, PNG
| Stack Management | List reports, download reports, view report info,
delete reports

6. As admin, create an additional Space which the test user should not
have access to. Ensure the test user does not have access to those
spaces.
7. Remove the `test_reporting_user` role from the user and ensure they
do not see any Reporting controls in the UI, and can not access Stack
Management > Reporting.

## Checklist

Check the PR satisfies following conditions.

Reviewers should verify this PR satisfies this list as well.

- ~~[ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)~~
- ~~[ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials~~
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- ~~[ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)~~
- ~~[ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.~~
- ~~[ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed~~
- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [x] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.

---------

Co-authored-by: Larry Gregory <larry.gregory@elastic.co>
(cherry picked from commit f9be58b)

# Conflicts:
#	src/platform/packages/private/kbn-reporting/public/share/share_context_menu/register_csv_modal_reporting.tsx
#	src/platform/packages/private/kbn-reporting/public/share/share_context_menu/register_pdf_png_modal_reporting.tsx
#	src/platform/test/functional/page_objects/export_page.ts
#	x-pack/platform/plugins/private/reporting/server/plugin.test.ts
#	x-pack/test/api_integration/apis/features/features/features.ts
#	x-pack/test/reporting_api_integration/reporting_and_security/default_reporting_user_role.ts
#	x-pack/test/reporting_api_integration/services/scenarios.ts
#	x-pack/test/reporting_functional/services/scenarios.ts
darnautov added a commit that referenced this pull request Aug 20, 2025
…31533) (#232384)

# Backport

This will backport the following commits from `main` to `9.1`:
- [Add `reporting_user` feature for reserved set of privileges
(#231533)](#231533)

<!--- Backport version: 10.0.1 -->

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

<!--BACKPORT [{"author":{"name":"Tim
Sullivan","email":"tsullivan@users.noreply.github.com"},"sourceCommit":{"committedDate":"2025-08-20T11:57:52Z","message":"Add
`reporting_user` feature for reserved set of privileges (#231533)\n\n##
Summary\n\nWe want to switch the reserved `reporting_user` role to use a
\"reserved\nprivilege definition\" and uses just that privilege. This PR
satisfies\nthe Kibana requirements. There is a corresponding
Elasticsearch
PR:\nhttps://github.com/elastic/elasticsearch/pull/132766\n\n##
Testing\n**NOTE: PNG/PDF reporting requires a Trial, or Gold+
license**\n\n1. Create `test_reporting_user` role\n\n ```\n POST
/_security/role/test_reporting_user\n {\n \"cluster\": [],\n
\"indices\": [],\n \"application\": [{\n \"application\":
\"kibana-*\",\n \"privileges\": [\"reserved_reporting_user\"],\n
\"resources\": [\"*\"]\n }]\n }\n ```\n\n2. Create `test_analyst_user`
role\n\n ```\n POST /_security/role/test_analyst_user\n {\n \"cluster\":
[],\n \"indices\": [\n {\n \"names\": [\"kibana_sample_*\"],\n
\"privileges\": [\"all\"],\n \"field_security\": {\n \"grant\":
[\"*\"],\n \"except\": []\n },\n \"allow_restricted_indices\": false\n
}\n ],\n \"applications\": [\n {\n \"application\":
\"kibana-.kibana\",\n \"privileges\": [\n
\"feature_discover_v2.read\",\n \"feature_dashboard_v2.read\",\n
\"feature_canvas.read\",\n \"feature_visualize_v2.read\"\n ],\n
\"resources\": [\"space:default\"]\n }\n ],\n \"run_as\": [],\n
\"metadata\": {},\n \"transient_metadata\": {\n \"enabled\": true\n }\n
}\n ```\n\n3. Create a test user with just those two roles. Install
sample data.\nLog in using the new test user.\n4. Test cases\n\n | App |
Reporting feature\n |-|-\n | Dashboard | PDF, PNG, CSV (from saved
search panel action)\n | Discover | CSV\n | Canvas | PDF\n | Lens | PDF,
PNG\n| Stack Management | List reports, download reports, view report
info,\ndelete reports\n\n6. As admin, create an additional Space which
the test user should not\nhave access to. Ensure the test user does not
have access to those\nspaces.\n7. Remove the `test_reporting_user` role
from the user and ensure they\ndo not see any Reporting controls in the
UI, and can not access Stack\nManagement > Reporting.\n\n##
Checklist\n\nCheck the PR satisfies following conditions. \n\nReviewers
should verify this PR satisfies this list as well.\n\n- ~~[ ] Any text
added follows [EUI's
writing\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\nsentence case text and includes
[i18n\nsupport](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)~~\n-
~~[
]\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\nwas
added for features that require explanation or tutorials~~\n- [x] [Unit
or
functional\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\nwere
updated or added to match the most common scenarios\n- ~~[ ] If a plugin
configuration key changed, check if it needs to be\nallowlisted in the
cloud and added to the
[docker\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)~~\n-
~~[ ] This was checked for breaking HTTP API changes, and any
breaking\nchanges have been approved by the breaking-change committee.
The\n`release_note:breaking` label should be applied in these
situations.~~\n- ~~[ ] [Flaky
Test\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\nused on any tests changed~~\n- [ ] The PR description includes the
appropriate Release Notes section,\nand the correct `release_note:*`
label is applied per
the\n[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\n-
[x] Review the
[backport\nguidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)\nand
apply applicable `backport:*` labels.\n\n---------\n\nCo-authored-by:
Larry Gregory
<larry.gregory@elastic.co>","sha":"f9be58be65e59b85dc6c4d8fa74970a4f8c1971e","branchLabelMapping":{"^v9.2.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:fix","backport:version","v9.2.0","v9.1.3","v9.0.6"],"title":"Add
`reporting_user` feature for reserved set of
privileges","number":231533,"url":"https://github.com/elastic/kibana/pull/231533","mergeCommit":{"message":"Add
`reporting_user` feature for reserved set of privileges (#231533)\n\n##
Summary\n\nWe want to switch the reserved `reporting_user` role to use a
\"reserved\nprivilege definition\" and uses just that privilege. This PR
satisfies\nthe Kibana requirements. There is a corresponding
Elasticsearch
PR:\nhttps://github.com/elastic/elasticsearch/pull/132766\n\n##
Testing\n**NOTE: PNG/PDF reporting requires a Trial, or Gold+
license**\n\n1. Create `test_reporting_user` role\n\n ```\n POST
/_security/role/test_reporting_user\n {\n \"cluster\": [],\n
\"indices\": [],\n \"application\": [{\n \"application\":
\"kibana-*\",\n \"privileges\": [\"reserved_reporting_user\"],\n
\"resources\": [\"*\"]\n }]\n }\n ```\n\n2. Create `test_analyst_user`
role\n\n ```\n POST /_security/role/test_analyst_user\n {\n \"cluster\":
[],\n \"indices\": [\n {\n \"names\": [\"kibana_sample_*\"],\n
\"privileges\": [\"all\"],\n \"field_security\": {\n \"grant\":
[\"*\"],\n \"except\": []\n },\n \"allow_restricted_indices\": false\n
}\n ],\n \"applications\": [\n {\n \"application\":
\"kibana-.kibana\",\n \"privileges\": [\n
\"feature_discover_v2.read\",\n \"feature_dashboard_v2.read\",\n
\"feature_canvas.read\",\n \"feature_visualize_v2.read\"\n ],\n
\"resources\": [\"space:default\"]\n }\n ],\n \"run_as\": [],\n
\"metadata\": {},\n \"transient_metadata\": {\n \"enabled\": true\n }\n
}\n ```\n\n3. Create a test user with just those two roles. Install
sample data.\nLog in using the new test user.\n4. Test cases\n\n | App |
Reporting feature\n |-|-\n | Dashboard | PDF, PNG, CSV (from saved
search panel action)\n | Discover | CSV\n | Canvas | PDF\n | Lens | PDF,
PNG\n| Stack Management | List reports, download reports, view report
info,\ndelete reports\n\n6. As admin, create an additional Space which
the test user should not\nhave access to. Ensure the test user does not
have access to those\nspaces.\n7. Remove the `test_reporting_user` role
from the user and ensure they\ndo not see any Reporting controls in the
UI, and can not access Stack\nManagement > Reporting.\n\n##
Checklist\n\nCheck the PR satisfies following conditions. \n\nReviewers
should verify this PR satisfies this list as well.\n\n- ~~[ ] Any text
added follows [EUI's
writing\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\nsentence case text and includes
[i18n\nsupport](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)~~\n-
~~[
]\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\nwas
added for features that require explanation or tutorials~~\n- [x] [Unit
or
functional\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\nwere
updated or added to match the most common scenarios\n- ~~[ ] If a plugin
configuration key changed, check if it needs to be\nallowlisted in the
cloud and added to the
[docker\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)~~\n-
~~[ ] This was checked for breaking HTTP API changes, and any
breaking\nchanges have been approved by the breaking-change committee.
The\n`release_note:breaking` label should be applied in these
situations.~~\n- ~~[ ] [Flaky
Test\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\nused on any tests changed~~\n- [ ] The PR description includes the
appropriate Release Notes section,\nand the correct `release_note:*`
label is applied per
the\n[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\n-
[x] Review the
[backport\nguidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)\nand
apply applicable `backport:*` labels.\n\n---------\n\nCo-authored-by:
Larry Gregory
<larry.gregory@elastic.co>","sha":"f9be58be65e59b85dc6c4d8fa74970a4f8c1971e"}},"sourceBranch":"main","suggestedTargetBranches":["9.1","9.0"],"targetPullRequestStates":[{"branch":"main","label":"v9.2.0","branchLabelMappingKey":"^v9.2.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/231533","number":231533,"mergeCommit":{"message":"Add
`reporting_user` feature for reserved set of privileges (#231533)\n\n##
Summary\n\nWe want to switch the reserved `reporting_user` role to use a
\"reserved\nprivilege definition\" and uses just that privilege. This PR
satisfies\nthe Kibana requirements. There is a corresponding
Elasticsearch
PR:\nhttps://github.com/elastic/elasticsearch/pull/132766\n\n##
Testing\n**NOTE: PNG/PDF reporting requires a Trial, or Gold+
license**\n\n1. Create `test_reporting_user` role\n\n ```\n POST
/_security/role/test_reporting_user\n {\n \"cluster\": [],\n
\"indices\": [],\n \"application\": [{\n \"application\":
\"kibana-*\",\n \"privileges\": [\"reserved_reporting_user\"],\n
\"resources\": [\"*\"]\n }]\n }\n ```\n\n2. Create `test_analyst_user`
role\n\n ```\n POST /_security/role/test_analyst_user\n {\n \"cluster\":
[],\n \"indices\": [\n {\n \"names\": [\"kibana_sample_*\"],\n
\"privileges\": [\"all\"],\n \"field_security\": {\n \"grant\":
[\"*\"],\n \"except\": []\n },\n \"allow_restricted_indices\": false\n
}\n ],\n \"applications\": [\n {\n \"application\":
\"kibana-.kibana\",\n \"privileges\": [\n
\"feature_discover_v2.read\",\n \"feature_dashboard_v2.read\",\n
\"feature_canvas.read\",\n \"feature_visualize_v2.read\"\n ],\n
\"resources\": [\"space:default\"]\n }\n ],\n \"run_as\": [],\n
\"metadata\": {},\n \"transient_metadata\": {\n \"enabled\": true\n }\n
}\n ```\n\n3. Create a test user with just those two roles. Install
sample data.\nLog in using the new test user.\n4. Test cases\n\n | App |
Reporting feature\n |-|-\n | Dashboard | PDF, PNG, CSV (from saved
search panel action)\n | Discover | CSV\n | Canvas | PDF\n | Lens | PDF,
PNG\n| Stack Management | List reports, download reports, view report
info,\ndelete reports\n\n6. As admin, create an additional Space which
the test user should not\nhave access to. Ensure the test user does not
have access to those\nspaces.\n7. Remove the `test_reporting_user` role
from the user and ensure they\ndo not see any Reporting controls in the
UI, and can not access Stack\nManagement > Reporting.\n\n##
Checklist\n\nCheck the PR satisfies following conditions. \n\nReviewers
should verify this PR satisfies this list as well.\n\n- ~~[ ] Any text
added follows [EUI's
writing\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\nsentence case text and includes
[i18n\nsupport](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)~~\n-
~~[
]\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\nwas
added for features that require explanation or tutorials~~\n- [x] [Unit
or
functional\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\nwere
updated or added to match the most common scenarios\n- ~~[ ] If a plugin
configuration key changed, check if it needs to be\nallowlisted in the
cloud and added to the
[docker\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)~~\n-
~~[ ] This was checked for breaking HTTP API changes, and any
breaking\nchanges have been approved by the breaking-change committee.
The\n`release_note:breaking` label should be applied in these
situations.~~\n- ~~[ ] [Flaky
Test\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\nused on any tests changed~~\n- [ ] The PR description includes the
appropriate Release Notes section,\nand the correct `release_note:*`
label is applied per
the\n[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\n-
[x] Review the
[backport\nguidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)\nand
apply applicable `backport:*` labels.\n\n---------\n\nCo-authored-by:
Larry Gregory
<larry.gregory@elastic.co>","sha":"f9be58be65e59b85dc6c4d8fa74970a4f8c1971e"}},{"branch":"9.1","label":"v9.1.3","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"9.0","label":"v9.0.6","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"}]}]
BACKPORT-->

Co-authored-by: Tim Sullivan <tsullivan@users.noreply.github.com>
darnautov added a commit that referenced this pull request Aug 20, 2025
…31533) (#232396)

# Backport

This will backport the following commits from `main` to `9.0`:
- [Add `reporting_user` feature for reserved set of privileges
(#231533)](#231533)

<!--- Backport version: 10.0.1 -->

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

<!--BACKPORT [{"author":{"name":"Tim
Sullivan","email":"tsullivan@users.noreply.github.com"},"sourceCommit":{"committedDate":"2025-08-20T11:57:52Z","message":"Add
`reporting_user` feature for reserved set of privileges (#231533)\n\n##
Summary\n\nWe want to switch the reserved `reporting_user` role to use a
\"reserved\nprivilege definition\" and uses just that privilege. This PR
satisfies\nthe Kibana requirements. There is a corresponding
Elasticsearch
PR:\nhttps://github.com/elastic/elasticsearch/pull/132766\n\n##
Testing\n**NOTE: PNG/PDF reporting requires a Trial, or Gold+
license**\n\n1. Create `test_reporting_user` role\n\n ```\n POST
/_security/role/test_reporting_user\n {\n \"cluster\": [],\n
\"indices\": [],\n \"application\": [{\n \"application\":
\"kibana-*\",\n \"privileges\": [\"reserved_reporting_user\"],\n
\"resources\": [\"*\"]\n }]\n }\n ```\n\n2. Create `test_analyst_user`
role\n\n ```\n POST /_security/role/test_analyst_user\n {\n \"cluster\":
[],\n \"indices\": [\n {\n \"names\": [\"kibana_sample_*\"],\n
\"privileges\": [\"all\"],\n \"field_security\": {\n \"grant\":
[\"*\"],\n \"except\": []\n },\n \"allow_restricted_indices\": false\n
}\n ],\n \"applications\": [\n {\n \"application\":
\"kibana-.kibana\",\n \"privileges\": [\n
\"feature_discover_v2.read\",\n \"feature_dashboard_v2.read\",\n
\"feature_canvas.read\",\n \"feature_visualize_v2.read\"\n ],\n
\"resources\": [\"space:default\"]\n }\n ],\n \"run_as\": [],\n
\"metadata\": {},\n \"transient_metadata\": {\n \"enabled\": true\n }\n
}\n ```\n\n3. Create a test user with just those two roles. Install
sample data.\nLog in using the new test user.\n4. Test cases\n\n | App |
Reporting feature\n |-|-\n | Dashboard | PDF, PNG, CSV (from saved
search panel action)\n | Discover | CSV\n | Canvas | PDF\n | Lens | PDF,
PNG\n| Stack Management | List reports, download reports, view report
info,\ndelete reports\n\n6. As admin, create an additional Space which
the test user should not\nhave access to. Ensure the test user does not
have access to those\nspaces.\n7. Remove the `test_reporting_user` role
from the user and ensure they\ndo not see any Reporting controls in the
UI, and can not access Stack\nManagement > Reporting.\n\n##
Checklist\n\nCheck the PR satisfies following conditions. \n\nReviewers
should verify this PR satisfies this list as well.\n\n- ~~[ ] Any text
added follows [EUI's
writing\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\nsentence case text and includes
[i18n\nsupport](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)~~\n-
~~[
]\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\nwas
added for features that require explanation or tutorials~~\n- [x] [Unit
or
functional\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\nwere
updated or added to match the most common scenarios\n- ~~[ ] If a plugin
configuration key changed, check if it needs to be\nallowlisted in the
cloud and added to the
[docker\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)~~\n-
~~[ ] This was checked for breaking HTTP API changes, and any
breaking\nchanges have been approved by the breaking-change committee.
The\n`release_note:breaking` label should be applied in these
situations.~~\n- ~~[ ] [Flaky
Test\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\nused on any tests changed~~\n- [ ] The PR description includes the
appropriate Release Notes section,\nand the correct `release_note:*`
label is applied per
the\n[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\n-
[x] Review the
[backport\nguidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)\nand
apply applicable `backport:*` labels.\n\n---------\n\nCo-authored-by:
Larry Gregory
<larry.gregory@elastic.co>","sha":"f9be58be65e59b85dc6c4d8fa74970a4f8c1971e","branchLabelMapping":{"^v9.2.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:fix","backport:version","v9.2.0","v9.1.3","v9.0.6"],"title":"Add
`reporting_user` feature for reserved set of
privileges","number":231533,"url":"https://github.com/elastic/kibana/pull/231533","mergeCommit":{"message":"Add
`reporting_user` feature for reserved set of privileges (#231533)\n\n##
Summary\n\nWe want to switch the reserved `reporting_user` role to use a
\"reserved\nprivilege definition\" and uses just that privilege. This PR
satisfies\nthe Kibana requirements. There is a corresponding
Elasticsearch
PR:\nhttps://github.com/elastic/elasticsearch/pull/132766\n\n##
Testing\n**NOTE: PNG/PDF reporting requires a Trial, or Gold+
license**\n\n1. Create `test_reporting_user` role\n\n ```\n POST
/_security/role/test_reporting_user\n {\n \"cluster\": [],\n
\"indices\": [],\n \"application\": [{\n \"application\":
\"kibana-*\",\n \"privileges\": [\"reserved_reporting_user\"],\n
\"resources\": [\"*\"]\n }]\n }\n ```\n\n2. Create `test_analyst_user`
role\n\n ```\n POST /_security/role/test_analyst_user\n {\n \"cluster\":
[],\n \"indices\": [\n {\n \"names\": [\"kibana_sample_*\"],\n
\"privileges\": [\"all\"],\n \"field_security\": {\n \"grant\":
[\"*\"],\n \"except\": []\n },\n \"allow_restricted_indices\": false\n
}\n ],\n \"applications\": [\n {\n \"application\":
\"kibana-.kibana\",\n \"privileges\": [\n
\"feature_discover_v2.read\",\n \"feature_dashboard_v2.read\",\n
\"feature_canvas.read\",\n \"feature_visualize_v2.read\"\n ],\n
\"resources\": [\"space:default\"]\n }\n ],\n \"run_as\": [],\n
\"metadata\": {},\n \"transient_metadata\": {\n \"enabled\": true\n }\n
}\n ```\n\n3. Create a test user with just those two roles. Install
sample data.\nLog in using the new test user.\n4. Test cases\n\n | App |
Reporting feature\n |-|-\n | Dashboard | PDF, PNG, CSV (from saved
search panel action)\n | Discover | CSV\n | Canvas | PDF\n | Lens | PDF,
PNG\n| Stack Management | List reports, download reports, view report
info,\ndelete reports\n\n6. As admin, create an additional Space which
the test user should not\nhave access to. Ensure the test user does not
have access to those\nspaces.\n7. Remove the `test_reporting_user` role
from the user and ensure they\ndo not see any Reporting controls in the
UI, and can not access Stack\nManagement > Reporting.\n\n##
Checklist\n\nCheck the PR satisfies following conditions. \n\nReviewers
should verify this PR satisfies this list as well.\n\n- ~~[ ] Any text
added follows [EUI's
writing\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\nsentence case text and includes
[i18n\nsupport](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)~~\n-
~~[
]\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\nwas
added for features that require explanation or tutorials~~\n- [x] [Unit
or
functional\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\nwere
updated or added to match the most common scenarios\n- ~~[ ] If a plugin
configuration key changed, check if it needs to be\nallowlisted in the
cloud and added to the
[docker\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)~~\n-
~~[ ] This was checked for breaking HTTP API changes, and any
breaking\nchanges have been approved by the breaking-change committee.
The\n`release_note:breaking` label should be applied in these
situations.~~\n- ~~[ ] [Flaky
Test\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\nused on any tests changed~~\n- [ ] The PR description includes the
appropriate Release Notes section,\nand the correct `release_note:*`
label is applied per
the\n[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\n-
[x] Review the
[backport\nguidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)\nand
apply applicable `backport:*` labels.\n\n---------\n\nCo-authored-by:
Larry Gregory
<larry.gregory@elastic.co>","sha":"f9be58be65e59b85dc6c4d8fa74970a4f8c1971e"}},"sourceBranch":"main","suggestedTargetBranches":["9.1","9.0"],"targetPullRequestStates":[{"branch":"main","label":"v9.2.0","branchLabelMappingKey":"^v9.2.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/231533","number":231533,"mergeCommit":{"message":"Add
`reporting_user` feature for reserved set of privileges (#231533)\n\n##
Summary\n\nWe want to switch the reserved `reporting_user` role to use a
\"reserved\nprivilege definition\" and uses just that privilege. This PR
satisfies\nthe Kibana requirements. There is a corresponding
Elasticsearch
PR:\nhttps://github.com/elastic/elasticsearch/pull/132766\n\n##
Testing\n**NOTE: PNG/PDF reporting requires a Trial, or Gold+
license**\n\n1. Create `test_reporting_user` role\n\n ```\n POST
/_security/role/test_reporting_user\n {\n \"cluster\": [],\n
\"indices\": [],\n \"application\": [{\n \"application\":
\"kibana-*\",\n \"privileges\": [\"reserved_reporting_user\"],\n
\"resources\": [\"*\"]\n }]\n }\n ```\n\n2. Create `test_analyst_user`
role\n\n ```\n POST /_security/role/test_analyst_user\n {\n \"cluster\":
[],\n \"indices\": [\n {\n \"names\": [\"kibana_sample_*\"],\n
\"privileges\": [\"all\"],\n \"field_security\": {\n \"grant\":
[\"*\"],\n \"except\": []\n },\n \"allow_restricted_indices\": false\n
}\n ],\n \"applications\": [\n {\n \"application\":
\"kibana-.kibana\",\n \"privileges\": [\n
\"feature_discover_v2.read\",\n \"feature_dashboard_v2.read\",\n
\"feature_canvas.read\",\n \"feature_visualize_v2.read\"\n ],\n
\"resources\": [\"space:default\"]\n }\n ],\n \"run_as\": [],\n
\"metadata\": {},\n \"transient_metadata\": {\n \"enabled\": true\n }\n
}\n ```\n\n3. Create a test user with just those two roles. Install
sample data.\nLog in using the new test user.\n4. Test cases\n\n | App |
Reporting feature\n |-|-\n | Dashboard | PDF, PNG, CSV (from saved
search panel action)\n | Discover | CSV\n | Canvas | PDF\n | Lens | PDF,
PNG\n| Stack Management | List reports, download reports, view report
info,\ndelete reports\n\n6. As admin, create an additional Space which
the test user should not\nhave access to. Ensure the test user does not
have access to those\nspaces.\n7. Remove the `test_reporting_user` role
from the user and ensure they\ndo not see any Reporting controls in the
UI, and can not access Stack\nManagement > Reporting.\n\n##
Checklist\n\nCheck the PR satisfies following conditions. \n\nReviewers
should verify this PR satisfies this list as well.\n\n- ~~[ ] Any text
added follows [EUI's
writing\nguidelines](https://elastic.github.io/eui/#/guidelines/writing),
uses\nsentence case text and includes
[i18n\nsupport](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)~~\n-
~~[
]\n[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)\nwas
added for features that require explanation or tutorials~~\n- [x] [Unit
or
functional\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\nwere
updated or added to match the most common scenarios\n- ~~[ ] If a plugin
configuration key changed, check if it needs to be\nallowlisted in the
cloud and added to the
[docker\nlist](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)~~\n-
~~[ ] This was checked for breaking HTTP API changes, and any
breaking\nchanges have been approved by the breaking-change committee.
The\n`release_note:breaking` label should be applied in these
situations.~~\n- ~~[ ] [Flaky
Test\nRunner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1)
was\nused on any tests changed~~\n- [ ] The PR description includes the
appropriate Release Notes section,\nand the correct `release_note:*`
label is applied per
the\n[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)\n-
[x] Review the
[backport\nguidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)\nand
apply applicable `backport:*` labels.\n\n---------\n\nCo-authored-by:
Larry Gregory
<larry.gregory@elastic.co>","sha":"f9be58be65e59b85dc6c4d8fa74970a4f8c1971e"}},{"branch":"9.1","label":"v9.1.3","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"9.0","label":"v9.0.6","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"}]}]
BACKPORT-->

---------

Co-authored-by: Tim Sullivan <tsullivan@users.noreply.github.com>
Co-authored-by: Brandon Kobel <brandon.kobel@elastic.co>
qn895 pushed a commit to qn895/kibana that referenced this pull request Aug 26, 2025
…lastic#231942)

## Human Summary
Kibana privileges with reserved privileges are not having their UI
Capabilities correctly toggled based on user permissions. This PR
updates the Security plugin's `disable_ui_capabilities` module to
respect reserved privileges.

Relates: elastic#231533 

## AI Summary

This pull request enhances the test coverage and logic for handling
Kibana features with reserved privileges in the UI capabilities
authorization system. The main focus is on ensuring that features
defined with reserved privileges are correctly processed and disabled
when appropriate, similar to features with standard privileges.

**Reserved privileges support:**

* Added a new `reservedKibanaFeature` with reserved privileges to the
test suite, including relevant UI and saved object privileges. This
ensures the system can handle features defined with reserved privileges.
* Updated multiple test cases to include `reservedKibanaFeature` in the
list of features being processed, verifying correct handling in both
`usingPrivileges` and `all` scenarios.
[[1]](diffhunk://#diff-0f0c73f0ead4aee434f90fc166fb6d87819149ad515d46d6d27a5a1bac6d8306L216-R239)
[[2]](diffhunk://#diff-0f0c73f0ead4aee434f90fc166fb6d87819149ad515d46d6d27a5a1bac6d8306L382-R407)
[[3]](diffhunk://#diff-0f0c73f0ead4aee434f90fc166fb6d87819149ad515d46d6d27a5a1bac6d8306L509-R542)
[[4]](diffhunk://#diff-0f0c73f0ead4aee434f90fc166fb6d87819149ad515d46d6d27a5a1bac6d8306L566-R599)

**Authorization logic and expectations:**

* Adjusted test expectations to assert that reserved UI capabilities are
disabled for users without the required privileges, mirroring behavior
for features with standard privileges.
[[1]](diffhunk://#diff-0f0c73f0ead4aee434f90fc166fb6d87819149ad515d46d6d27a5a1bac6d8306R386-R387)
[[2]](diffhunk://#diff-0f0c73f0ead4aee434f90fc166fb6d87819149ad515d46d6d27a5a1bac6d8306R437-R440)
[[3]](diffhunk://#diff-0f0c73f0ead4aee434f90fc166fb6d87819149ad515d46d6d27a5a1bac6d8306R484-R487)
[[4]](diffhunk://#diff-0f0c73f0ead4aee434f90fc166fb6d87819149ad515d46d6d27a5a1bac6d8306R637-R640)
[[5]](diffhunk://#diff-0f0c73f0ead4aee434f90fc166fb6d87819149ad515d46d6d27a5a1bac6d8306R674-R678)
* Updated comments to clarify that both standard and reserved privilege
features are disabled when appropriate.

**Core logic update:**

* Modified the `disableUICapabilitiesFactory` function to treat features
with reserved privileges as subject to the security model, ensuring they
are not incorrectly opted out.
qn895 pushed a commit to qn895/kibana that referenced this pull request Aug 26, 2025
…231533)

## Summary

We want to switch the reserved `reporting_user` role to use a "reserved
privilege definition" and uses just that privilege. This PR satisfies
the Kibana requirements. There is a corresponding Elasticsearch PR:
elastic/elasticsearch#132766

## Testing
**NOTE: PNG/PDF reporting requires a Trial, or Gold+ license**

1. Create `test_reporting_user` role

    ```
    POST /_security/role/test_reporting_user
    {
        "cluster": [],
        "indices": [],
        "application": [{
            "application": "kibana-*",
            "privileges": ["reserved_reporting_user"],
            "resources": ["*"]
        }]
    }
    ```

2. Create `test_analyst_user` role

    ```
    POST /_security/role/test_analyst_user
    {
        "cluster": [],
        "indices": [
            {
            "names": ["kibana_sample_*"],
            "privileges": ["all"],
            "field_security": {
                "grant": ["*"],
                "except": []
            },
            "allow_restricted_indices": false
            }
        ],
        "applications": [
            {
            "application": "kibana-.kibana",
            "privileges": [
                "feature_discover_v2.read",
                "feature_dashboard_v2.read",
                "feature_canvas.read",
                "feature_visualize_v2.read"
            ],
            "resources": ["space:default"]
            }
        ],
        "run_as": [],
        "metadata": {},
        "transient_metadata": {
            "enabled": true
        }
    }
    ```

3. Create a test user with just those two roles. Install sample data.
Log in using the new test user.
4. Test cases

    | App | Reporting feature
    |-|-
    | Dashboard | PDF, PNG, CSV (from saved search panel action)
    | Discover | CSV
    | Canvas | PDF
    | Lens | PDF, PNG
| Stack Management | List reports, download reports, view report info,
delete reports

6. As admin, create an additional Space which the test user should not
have access to. Ensure the test user does not have access to those
spaces.
7. Remove the `test_reporting_user` role from the user and ensure they
do not see any Reporting controls in the UI, and can not access Stack
Management > Reporting.

## Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- ~~[ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)~~
- ~~[ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials~~
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- ~~[ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)~~
- ~~[ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.~~
- ~~[ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed~~
- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [x] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.

---------

Co-authored-by: Larry Gregory <larry.gregory@elastic.co>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment