Skip to content

[9.0] Add reporting_user feature for reserved set of privileges (#231533)#232396

Merged
darnautov merged 5 commits intoelastic:9.0from
darnautov:backport/9.0/pr-231533
Aug 20, 2025
Merged

[9.0] Add reporting_user feature for reserved set of privileges (#231533)#232396
darnautov merged 5 commits intoelastic:9.0from
darnautov:backport/9.0/pr-231533

Conversation

@darnautov
Copy link
Contributor

Backport

This will backport the following commits from main to 9.0:

Questions ?

Please refer to the Backport tool documentation

…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 darnautov added the backport This PR is a backport of another PR label Aug 20, 2025
@darnautov darnautov enabled auto-merge (squash) August 20, 2025 13:28
@darnautov darnautov merged commit 00f077b into elastic:9.0 Aug 20, 2025
9 checks passed
@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
spaces 247.8KB 247.8KB +26.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 14.5KB 14.6KB +92.0B
reporting 49.1KB 49.3KB +214.0B
total +306.0B

History

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport This PR is a backport of another PR

4 participants