mirror of
https://github.com/apache/superset.git
synced 2026-04-11 12:26:05 +00:00
* setup docusaurus
* rename
* add introduction content
* chore(docsV2): move content from docs to docsV2 (#17714)
* add FAQs and contribution pages
* chore: add api, security, and roadmap pages, include swaggerui in dependency for api page
* chore: move api page header below imports
* chore: change API page info alert to use built in Infima class instead of custom class
Co-authored-by: Corbin Robb <corbin@Corbins-MacBook-Pro.local>
* chore(docs-v2): moving more markdown content to new documentation site (#17736)
* chore: move markdown content and images for docs installation directory to docs-v2
* chore: move docs miscellaneous directory content to docs-v2
* chore(docs-v2): move over connecting to databases content and rename some files to .mdx
Co-authored-by: Corbin Robb <corbin@Corbins-MacBook-Pro.local>
* Update styling and logo (#17990)
* update styling
* update colors
* chore(docs-v2): remove blog and tutorial and update some styling (#17929)
* add superset logo and favicon, change styles to better match current docs, add prettierrc
* change file types to mdx
* Add simple superset dark mode freindly logo
* clean up default pages - blog and tutorial docs
Co-authored-by: Corbin Robb <corbin@Corbins-MacBook-Pro.local>
* Chore: moving charts and dashboard to docusaurus (#18036)
* add contributing add creating charts and dashboards
* delete extra images
* update rat-excludes
* Port homepage (#18115)
* Port community page (#18128)
* chore: add seo redirects for Docs v@ (#18092)
* fix: handle null values in time-series table (#18039)
* cleanup column_type_mappings (#17569)
Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>
* important change to MakeFile (#18037)
* Update superset-e2e.yml (#18041)
* Revert "Update superset-e2e.yml (#18041)" (#18051)
This reverts commit b5652739c9.
* feat: Trino Authentications (#17593)
* feat: support Trino Authentications
Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>
* docs: Trino Authentications
Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>
* chore(supeset.utils.core): move all database utils to database utils module (#18058)
* chore(plugin-chart-echarts): add types to controls (#18059)
* fix(generator): more cleanup to plugin framework (#18027)
* fix(generator): more cleanup to plugin framework
* fix typo and package name
* add docs
* fix typo
* Update superset-frontend/webpack.config.js
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
* fix generator reference
* add steps to tutorial and fix package version
* refine docs/readme
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
* feat(advanced analytics): support groupby in resample (#18045)
* fix(dashboard): scope of nativefilter not update (#18048)
* fix(generator): add lockfile and fix styling issues (#18073)
* fix(generator): add lockfile and fix styling issues
* fix margins and remove redundant scroll
* update tutorial
* refactor(sql_lab): SQL Lab Persistent Saved State (#17771)
* a lot of console logs
* testing
* test
* added saved_query to remoteId
* created useEffect so that title properly changes in modal
* Update superset-frontend/src/SqlLab/actions/sqlLab.js
Co-authored-by: Lyndsi Kay Williams <55605634+lyndsiWilliams@users.noreply.github.com>
Co-authored-by: Lyndsi Kay Williams <55605634+lyndsiWilliams@users.noreply.github.com>
* refactor(example_data): replace the way the birth_names data is loaded to DB (#18060)
* refactor: replace the way the birth_names data is loaded to DB
* fix failed unit test
* fix failed unit test
* fix failed tests
* fix pass wrong flag of support datetime type
* remove unused fixture
* feat: add chart description in info tooltip (#17207)
* feat: add chart list description
* fix: text overflow
* fix: text-overflow with line-height
* Correction of proper names format in README (#18087)
* chore: added SEO routes
* fix can't use examples helpers on non app context based environment (#18086)
* chore: split CLI into multiple files (#18082)
* chore: split CLI into multiple files
* Update tests
* Who fixes the fixtures?
* Add subcommands dynamically
* Rebase
* fix misspelling (#18097)
* refactor: sqleditorleftbar to functional (#17807)
* Working on converting sqleditorleftbar to functional component
* Creating draft PR to address bug
* Still working on solving re rendering bug
* infinite rerender fix
* Creating draft PR to address bug
* Cleaning up in preparation for push
* Made changes suggested by Elizabeth
* Fixed issues as per Lindsey's comment
Co-authored-by: Arash <arash.afghahi@gmail.com>
* fix rat excludes and headers
* fix(docs): fix path of image for "Create New Chart" (#18089)
* Migrate Checkbox story to tsx - see #18100 (#18101)
Looks good!
* refactor: migrate RowCountLabel to TypeScript & added story (#18105)
* enable superbook for explore component
* migrate RowCountLabel to TypeScript
* add storybook for RowCountLabel
* fix: logging warning on dataframe (don't use python's warnings) (#18111)
* fix: logging warning on dataframe (don't use python's warnings)
* lint
* update changelog and updating for 1.4.0 (#18083)
* feat: Adds a key-value endpoint to store charts form data (#17882)
* feat: Adds a key-value endpoint to store charts form data
* Fixes linting problems
* Removes the query_params from the endpoints
* Refactors the commands
* Removes unused imports
* Changes the parameters to use dataclass
* Adds more access tests
* Gets the first dataset while testing
* Adds unit tests for the check_access function
* Changes the can_access check
* Always check for dataset access
* fix(explore): fix chart embed code modal glitch (#17843)
* feat(plugin-chart-echarts): support non-timeseries x-axis (#17917)
* feat(plugin-chart-echarts): support non-timeseries x-axis
* fix tests
* change formula return type from Date to number
* add x_axis test coverage
* rename func and improve coverage
* add x-axis control to bar chart
* remove redundant console.log
* fix description
* make x-axis control mandatory
* 🙃
* fix x-axis formatter
* fix showValues
* fix implicit rDTTM_ALIAS references in postProcessing
* replace TIME_COLUMN with DTTM_ALIAS
* fix remaining implicit indexes
* fix: Disable filtering on wide result sets (#18021)
* fix: handle null values in time-series table (#18039)
* cleanup column_type_mappings (#17569)
Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>
* important change to MakeFile (#18037)
* add missing is_timeseries to pivot op
Co-authored-by: Erik Ritter <erik.ritter@airbnb.com>
Co-authored-by: Grace Guo <grace.guo@airbnb.com>
Co-authored-by: Đặng Minh Dũng <dungdm93@live.com>
Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>
* feat(country-map): added new countries in country-chart-map (#18081)
* chore: migrating storybook jsx to typescript #18100 (#18133)
* Migrating storybook jsx to typescript #18100
* Migrating storybook jsx to typescript
Co-authored-by: Jayakrishnan Karolil <jayakrishnan.karolil@nielsen.com>
* feat(annotation): add toast feedback to annotation templates (#18116)
* feat(dashboard): add toast feedback to dashboard actions (#18114)
* feat(explore): more toast feedback on user actions in Explore (#18108)
* feat(explore): add toasts feedback when user copies chart url
* Show toast message when updating chart properties
* Change toast type to success when saving chart
* Use success toast from props
* Fix tests
* Use withToasts instead of dispatch
* Use PropertiesModalProps instead of any
* Docs: fix typo (#18125)
* fix: undefined error when adding extra sequential color scheme (#18152)
* feat: allow assets to be managed externally (#18093)
* feat: allow assets to be managed externally
* Use server_default
* chore: use pkg_resources for cleaner config (#18130)
* refactor: Moves the Explore form_data endpoint (#18151)
* refactor: Moves the Explore form_data endpoint
* Removes unused imports
* Fixes openapi schema error
* Fixes typo
* Renames and UPDATING.md
Co-authored-by: Grace Guo <grace.guo@airbnb.com>
Co-authored-by: Đặng Minh Dũng <dungdm93@live.com>
Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>
Co-authored-by: Hugh A. Miles II <hughmil3s@gmail.com>
Co-authored-by: ofekisr <35701650+ofekisr@users.noreply.github.com>
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
Co-authored-by: Yongjie Zhao <yongjie.zhao@gmail.com>
Co-authored-by: Stephen Liu <750188453@qq.com>
Co-authored-by: Lyndsi Kay Williams <55605634+lyndsiWilliams@users.noreply.github.com>
Co-authored-by: Adam Dobrawy <ad-m@users.noreply.github.com>
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
Co-authored-by: Emily Wu <86927881+em0227@users.noreply.github.com>
Co-authored-by: Josue Lugaro <82119536+JosueLugaro@users.noreply.github.com>
Co-authored-by: Arash <arash.afghahi@gmail.com>
Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
Co-authored-by: Daniel Vaz Gaspar <danielvazgaspar@gmail.com>
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
Co-authored-by: Erik Ritter <erik.ritter@airbnb.com>
Co-authored-by: Hammad-Raza <hammadraza42@hotmail.com>
Co-authored-by: jayakrishnankk <kk.jayakrishnan@gmail.com>
Co-authored-by: Jayakrishnan Karolil <jayakrishnan.karolil@nielsen.com>
Co-authored-by: Farid Rener <proteusvacuum@users.noreply.github.com>
* remove unneeded requirement
Co-authored-by: Corbin Robb <31329271+corbinrobb@users.noreply.github.com>
Co-authored-by: Corbin Robb <corbin@Corbins-MacBook-Pro.local>
Co-authored-by: Daniel W <61300812+The-hyphen-user@users.noreply.github.com>
Co-authored-by: Geido <60598000+geido@users.noreply.github.com>
Co-authored-by: Srini Kadamati <skadamat@gmail.com>
Co-authored-by: Grace Guo <grace.guo@airbnb.com>
Co-authored-by: Đặng Minh Dũng <dungdm93@live.com>
Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>
Co-authored-by: ofekisr <35701650+ofekisr@users.noreply.github.com>
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
Co-authored-by: Yongjie Zhao <yongjie.zhao@gmail.com>
Co-authored-by: Stephen Liu <750188453@qq.com>
Co-authored-by: Lyndsi Kay Williams <55605634+lyndsiWilliams@users.noreply.github.com>
Co-authored-by: Adam Dobrawy <ad-m@users.noreply.github.com>
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
Co-authored-by: Emily Wu <86927881+em0227@users.noreply.github.com>
Co-authored-by: Josue Lugaro <82119536+JosueLugaro@users.noreply.github.com>
Co-authored-by: Arash <arash.afghahi@gmail.com>
Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
Co-authored-by: Daniel Vaz Gaspar <danielvazgaspar@gmail.com>
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
Co-authored-by: Erik Ritter <erik.ritter@airbnb.com>
Co-authored-by: Hammad-Raza <hammadraza42@hotmail.com>
Co-authored-by: jayakrishnankk <kk.jayakrishnan@gmail.com>
Co-authored-by: Jayakrishnan Karolil <jayakrishnan.karolil@nielsen.com>
Co-authored-by: Farid Rener <proteusvacuum@users.noreply.github.com>
150 lines
8.3 KiB
Plaintext
150 lines
8.3 KiB
Plaintext
---
|
||
title: Security
|
||
hide_title: true
|
||
sidebar_position: 10
|
||
---
|
||
|
||
### Roles
|
||
|
||
Security in Superset is handled by Flask AppBuilder (FAB), an application development framework
|
||
built on top of Flask. FAB provides authentication, user management, permissions and roles.
|
||
Please read its [Security documentation](https://flask-appbuilder.readthedocs.io/en/latest/security.html).
|
||
|
||
### Provided Roles
|
||
|
||
Superset ships with a set of roles that are handled by Superset itself. You can assume
|
||
that these roles will stay up-to-date as Superset evolves (and as you update Superset versions).
|
||
|
||
Even though **Admin** users have the ability, we don't recommend altering the
|
||
permissions associated with each role (e.g. by removing or adding permissions to them). The permissions
|
||
associated with each role will be re-synchronized to their original values when you run
|
||
the **superset init** command (often done between Superset versions).
|
||
|
||
### Admin
|
||
|
||
Admins have all possible rights, including granting or revoking rights from other
|
||
users and altering other people’s slices and dashboards.
|
||
|
||
### Alpha
|
||
|
||
Alpha users have access to all data sources, but they cannot grant or revoke access
|
||
from other users. They are also limited to altering the objects that they own. Alpha users can add and alter data sources.
|
||
|
||
### Gamma
|
||
|
||
Gamma users have limited access. They can only consume data coming from data sources
|
||
they have been given access to through another complementary role. They only have access to
|
||
view the slices and dashboards made from data sources that they have access to. Currently Gamma
|
||
users are not able to alter or add data sources. We assume that they are mostly content consumers, though they can create slices and dashboards.
|
||
|
||
Also note that when Gamma users look at the dashboards and slices list view, they will
|
||
only see the objects that they have access to.
|
||
|
||
### sql_lab
|
||
|
||
The **sql_lab** role grants access to SQL Lab. Note that while **Admin** users have access
|
||
to all databases by default, both **Alpha** and **Gamma** users need to be given access on a per database basis.
|
||
|
||
### Public
|
||
|
||
To allow logged-out users to access some Superset features, you can use the `PUBLIC_ROLE_LIKE` config setting and assign it to another role whose permissions you want passed to this role.
|
||
|
||
For example, by setting `PUBLIC_ROLE_LIKE = Gamma` in your `superset_config.py` file, you grant
|
||
public role the same set of permissions as for the **Gamma** role. This is useful if one
|
||
wants to enable anonymous users to view dashboards. Explicit grant on specific datasets is
|
||
still required, meaning that you need to edit the **Public** role and add the public data sources to the role manually.
|
||
|
||
### Managing Data Source Access for Gamma Roles
|
||
|
||
Here’s how to provide users access to only specific datasets. First make sure the users with
|
||
limited access have [only] the Gamma role assigned to them. Second, create a new role (Menu -> Security -> List Roles) and click the + sign.
|
||
|
||
This new window allows you to give this new role a name, attribute it to users and select the
|
||
tables in the **Permissions** dropdown. To select the data sources you want to associate with this role, simply click on the dropdown and use the typeahead to search for your table names.
|
||
|
||
You can then confirm with users assigned to the **Gamma** role that they see the
|
||
objects (dashboards and slices) associated with the tables you just extended them.
|
||
|
||
### Customizing Permissions
|
||
|
||
The permissions exposed by FAB are very granular and allow for a great level of
|
||
customization. FAB creates many permissions automagically for each model that is
|
||
created (can_add, can_delete, can_show, can_edit, …) as well as for each view.
|
||
On top of that, Superset can expose more granular permissions like **all_datasource_access**.
|
||
|
||
**We do not recommend altering the 3 base roles as there are a set of assumptions that
|
||
Superset is built upon**. It is possible though for you to create your own roles, and union them to existing ones.
|
||
|
||
### Permissions
|
||
|
||
Roles are composed of a set of permissions, and Superset has many categories of
|
||
permissions. Here are the different categories of permissions:
|
||
|
||
- Model & Action: models are entities like Dashboard, Slice, or User. Each model has
|
||
a fixed set of permissions, like **can_edit**, **can_show**, **can_delete**, **can_list**, **can_add**,
|
||
and so on. For example, you can allow a user to delete dashboards by adding **can_delete** on
|
||
Dashboard entity to a role and granting this user that role.
|
||
- Views: views are individual web pages, like the Explore view or the SQL Lab view.
|
||
When granted to a user, they will see that view in its menu items, and be able to load that page.
|
||
- Data source: For each data source, a permission is created. If the user does not have the
|
||
`all_datasource_access permission` granted, the user will only be able to see Slices or explore the data sources that are granted to them
|
||
- Database: Granting access to a database allows for the user to access all
|
||
data sources within that database, and will enable the user to query that
|
||
database in SQL Lab, provided that the SQL Lab specific permission have been granted to the user
|
||
|
||
### Restricting Access to a Subset of Data Sources
|
||
|
||
We recommend giving a user the **Gamma** role plus any other roles that would add
|
||
access to specific data sources. We recommend that you create individual roles for
|
||
each access profile. For example, the users on the Finance team might have access to a set of
|
||
databases and data sources; these permissions can be consolidated in a single role.
|
||
Users with this profile then need to be assigned the **Gamma** role as a foundation to
|
||
the models and views they can access, and that Finance role that is a collection of permissions to data objects.
|
||
|
||
A user can have multiple roles associated with them. For example, an executive on the Finance
|
||
team could be granted **Gamma**, **Finance**, and the **Executive** roles. The **Executive**
|
||
role could provide access to a set of data sources and dashboards made available only to executives.
|
||
In the **Dashboards** view, a user can only see the ones they have access too
|
||
based on the roles and permissions that were attributed.
|
||
|
||
### Row Level Security
|
||
|
||
Using Row Level Security filters (under the **Security** menu) you can create filters
|
||
that are assigned to a particular table, as well as a set of roles.
|
||
If you want members of the Finance team to only have access to
|
||
rows where `department = "finance"`, you could:
|
||
|
||
- Create a Row Level Security filter with that clause (`department = "finance"`)
|
||
- Then assign the clause to the **Finance** role and the table it applies to
|
||
|
||
The **clause** field, which can contain arbitrary text, is then added to the generated
|
||
SQL statement’s WHERE clause. So you could even do something like create a filter
|
||
for the last 30 days and apply it to a specific role, with a clause
|
||
like `date_field > DATE_SUB(NOW(), INTERVAL 30 DAY)`. It can also support
|
||
multiple conditions: `client_id = 6` AND `advertiser="foo"`, etc.
|
||
|
||
All relevant Row level security filters will be combined together (under the hood,
|
||
the different SQL clauses are combined using AND statements). This means it's
|
||
possible to create a situation where two roles conflict in such a way as to limit a table subset to empty.
|
||
|
||
For example, the filters `client_id=4` and `client_id=5`, applied to a role,
|
||
will result in users of that role having `client_id=4` AND `client_id=5`
|
||
added to their query, which can never be true.
|
||
|
||
### Reporting Security Vulnerabilities
|
||
|
||
Apache Software Foundation takes a rigorous standpoint in annihilating the security issues in its
|
||
software projects. Apache Superset is highly sensitive and forthcoming to issues pertaining to its
|
||
features and functionality.
|
||
|
||
If you have apprehensions regarding Superset security or you discover vulnerability or potential
|
||
threat, don’t hesitate to get in touch with the Apache Security Team by dropping a mail at
|
||
security@apache.org. In the mail, specify the project name Superset with the description of the
|
||
issue or potential threat. You are also urged to recommend the way to reproduce and replicate the
|
||
issue. The security team and the Superset community will get back to you after assessing and
|
||
analysing the findings.
|
||
|
||
PLEASE PAY ATTENTION to report the security issue on the security email before disclosing it on
|
||
public domain. The ASF Security Team maintains a page with the description of how vulnerabilities
|
||
and potential threats are handled, check their web page for more details.
|