{"version":3,"sources":["webpack:///./src/pages/docs/security-page.mdx"],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","components","props","mdxType","parentName","isMDXComponent"],"mappings":"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","file":"component---src-pages-docs-security-page-mdx-b02a3002194409326aa6.js","sourcesContent":["import * as React from 'react'\n  /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\n\nimport DefaultLayout from \"/Users/srinify/Documents/superset/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n  _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n  components,\n  ...props\n}) {\n  return <MDXLayout {...layoutProps} {...props} components={components} mdxType=\"MDXLayout\">\n\n\n    <h3 {...{\n      \"id\": \"roles\"\n    }}>{`Roles`}</h3>\n    <p>{`Security in Superset is handled by Flask AppBuilder (FAB), an application development framework\nbuilt on top of Flask.”. FAB provides authentication, user management, permissions and roles.\nPlease read its `}<a parentName=\"p\" {...{\n        \"href\": \"https://flask-appbuilder.readthedocs.io/en/latest/security.html\"\n      }}>{`Security documentation`}</a>{`.`}</p>\n    <h3 {...{\n      \"id\": \"provided-roles\"\n    }}>{`Provided Roles`}</h3>\n    <p>{`Superset ships with a set of roles that are handled by Superset itself. You can assume\nthat these roles will stay up-to-date as Superset evolves (and as you update Superset versions).`}</p>\n    <p>{`Even though `}<strong parentName=\"p\">{`Admin`}</strong>{` users have the ability, we don't recommend that altering the\npermissions associated with each role (e.g. by removing or adding permissions to them). The permissions\nassociated with each role will be re-synchronized to their original values when you run\nthe `}<strong parentName=\"p\">{`superset init`}</strong>{` command (often done between Superset versions).`}</p>\n    <h3 {...{\n      \"id\": \"admin\"\n    }}>{`Admin`}</h3>\n    <p>{`Admins have all possible rights, including granting or revoking rights from other\nusers and altering other people’s slices and dashboards.`}</p>\n    <h3 {...{\n      \"id\": \"alpha\"\n    }}>{`Alpha`}</h3>\n    <p>{`Alpha users have access to all data sources, but they cannot grant or revoke access\nfrom other users. They are also limited to altering the objects that they own. Alpha users can add and alter data sources.`}</p>\n    <h3 {...{\n      \"id\": \"gamma\"\n    }}>{`Gamma`}</h3>\n    <p>{`Gamma users have limited access. They can only consume data coming from data sources\nthey have been given access to through another complementary role. They only have access to\nview the slices and dashboards made from data sources that they have access to. Currently Gamma\nusers are not able to alter or add data sources. We assume that they are mostly content consumers, though they can create slices and dashboards.`}</p>\n    <p>{`Also note that when Gamma users look at the dashboards and slices list view, they will\nonly see the objects that they have access to.`}</p>\n    <h3 {...{\n      \"id\": \"sql_lab\"\n    }}>{`sql_lab`}</h3>\n    <p>{`The `}<strong parentName=\"p\">{`sql_lab`}</strong>{` role grants access to SQL Lab. Note that while `}<strong parentName=\"p\">{`Admin`}</strong>{` users have access\nto all databases by default, both `}<strong parentName=\"p\">{`Alpha`}</strong>{` and `}<strong parentName=\"p\">{`Gamma`}</strong>{` users need to be given access on a per database basis.`}</p>\n    <h3 {...{\n      \"id\": \"public\"\n    }}>{`Public`}</h3>\n    <p>{`To allow logged-out users to access some Superset features, you can use the `}<inlineCode parentName=\"p\">{`PUBLIC_ROLE_LIKE`}</inlineCode>{` config setting and assign it to another role whose permissions you want passed to this role.`}</p>\n    <p>{`For example, by setting `}<inlineCode parentName=\"p\">{`PUBLIC_ROLE_LIKE = Gamma`}</inlineCode>{` in your `}<inlineCode parentName=\"p\">{`superset_config.py`}</inlineCode>{` file, you grant\npublic role the same set of permissions as for the `}<strong parentName=\"p\">{`Gamma`}</strong>{` role. This is useful if one\nwants to enable anonymous users to view dashboards. Explicit grant on specific datasets is\nstill required, meaning that you need to edit the `}<strong parentName=\"p\">{`Public`}</strong>{` role and add the public data sources to the role manually.`}</p>\n    <h3 {...{\n      \"id\": \"managing-data-source-access-for-gamma-roles\"\n    }}>{`Managing Data Source Access for Gamma Roles`}</h3>\n    <p>{`Here’s how to provide users access to only specific datasets. First make sure the users with\nlimited access have `}{`[only]`}{` the Gamma role assigned to them. Second, create a new role (Menu -> Security -> List Roles) and click the + sign.`}</p>\n    <p>{`This new window allows you to give this new role a name, attribute it to users and select the\ntables in the `}<strong parentName=\"p\">{`Permissions`}</strong>{` 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.`}</p>\n    <p>{`You can then confirm with users assigned to the `}<strong parentName=\"p\">{`Gamma`}</strong>{` role that they see the\nobjects (dashboards and slices) associated with the tables you just extended them.`}</p>\n    <h3 {...{\n      \"id\": \"customizing-permissions\"\n    }}>{`Customizing Permissions`}</h3>\n    <p>{`The permissions exposed by FAB are very granular and allow for a great level of\ncustomization. FAB creates many permissions automagically for each model that is\ncreated (can_add, can_delete, can_show, can_edit, …) as well as for each view.\nOn top of that, Superset can expose more granular permissions like `}<strong parentName=\"p\">{`all_datasource_access`}</strong>{`.`}</p>\n    <p><strong parentName=\"p\">{`We do not recommend altering the 3 base roles as there are a set of assumptions that\nSuperset is built upon`}</strong>{`. It is possible though for you to create your own roles, and union them to existing ones.`}</p>\n    <h3 {...{\n      \"id\": \"permissions\"\n    }}>{`Permissions`}</h3>\n    <p>{`Roles are composed of a set of permissions, and Superset has many categories of\npermissions. Here are the different categories of permissions:`}</p>\n    <ul>\n      <li parentName=\"ul\">{`Model & Action: models are entities like Dashboard, Slice, or User. Each model has\na fixed set of permissions, like `}<strong parentName=\"li\">{`can_edit`}</strong>{`, `}<strong parentName=\"li\">{`can_show`}</strong>{`, `}<strong parentName=\"li\">{`can_delete`}</strong>{`, `}<strong parentName=\"li\">{`can_list`}</strong>{`, `}<strong parentName=\"li\">{`can_add`}</strong>{`,\nand so on. For example, you can allow a user to delete dashboards by adding `}<strong parentName=\"li\">{`can_delete`}</strong>{` on\nDashboard entity to a role and granting this user that role.`}</li>\n      <li parentName=\"ul\">{`Views: views are individual web pages, like the Explore view or the SQL Lab view.\nWhen granted to a user, they will see that view in its menu items, and be able to load that page.`}</li>\n      <li parentName=\"ul\">{`Data source: For each data source, a permission is created. If the user does not have the\n`}<inlineCode parentName=\"li\">{`all_datasource_access permission`}</inlineCode>{` granted, the user will only be able to see Slices or explore the data sources that are granted to them`}</li>\n      <li parentName=\"ul\">{`Database: Granting access to a database allows for the user to access all\ndata sources within that database, and will enable the user to query that\ndatabase in SQL Lab, provided that the SQL Lab specific permission have been granted to the user`}</li>\n    </ul>\n    <h3 {...{\n      \"id\": \"restricting-access-to-a-subset-of-data-sources\"\n    }}>{`Restricting Access to a Subset of Data Sources`}</h3>\n    <p>{`We recommend giving a user the `}<strong parentName=\"p\">{`Gamma`}</strong>{` role plus any other roles that would add\naccess to specific data sources. We recommend that you create individual roles for\neach access profile. For example, the users on the Finance team might have access to a set of\ndatabases and data sources; these permissions can be consolidated in a single role.\nUsers with this profile then need to be assigned the `}<strong parentName=\"p\">{`Gamma`}</strong>{` role as a foundation to\nthe models and views they can access, and that Finance role that is a collection of permissions to data objects.`}</p>\n    <p>{`A user can have multiple roles associated with them. For example, an executive on the Finance\nteam could be granted `}<strong parentName=\"p\">{`Gamma`}</strong>{`, `}<strong parentName=\"p\">{`Finance`}</strong>{`, and the `}<strong parentName=\"p\">{`Executive`}</strong>{` roles. The `}<strong parentName=\"p\">{`Executive`}</strong>{`\nrole could provide access to a set of data sources and dashboards made available only to executives.\nIn the `}<strong parentName=\"p\">{`Dashboards`}</strong>{` view, a user can only see the ones they have access too\nbased on the roles and permissions that were attributed.`}</p>\n    <h3 {...{\n      \"id\": \"row-level-security\"\n    }}>{`Row Level Security`}</h3>\n    <p>{`Using Row Level Security filters (under the `}<strong parentName=\"p\">{`Security`}</strong>{` menu) you can create filters\nthat are assigned to a particular table, as well as a set of roles.\nIf you want members of the Finance team to only have access to\nrows where `}<inlineCode parentName=\"p\">{`department = \"finance\"`}</inlineCode>{`, you could:`}</p>\n    <ul>\n      <li parentName=\"ul\">{`Create a Row Level Security filter with that clause (`}<inlineCode parentName=\"li\">{`department = \"finance\"`}</inlineCode>{`)`}</li>\n      <li parentName=\"ul\">{`Then assign the clause to the `}<strong parentName=\"li\">{`Finance`}</strong>{` role and the table it applies to`}</li>\n    </ul>\n    <p>{`The `}<strong parentName=\"p\">{`clause`}</strong>{` field, which can contain arbitrary text, is then added to the generated\nSQL statement’s WHERE clause. So you could even do something like create a filter\nfor the last 30 days and apply it to a specific role, with a clause\nlike `}<inlineCode parentName=\"p\">{`date_field > DATE_SUB(NOW(), INTERVAL 30 DAY)`}</inlineCode>{`. It can also support\nmultiple conditions: `}<inlineCode parentName=\"p\">{`client_id = 6`}</inlineCode>{` AND `}<inlineCode parentName=\"p\">{`advertiser=\"foo\"`}</inlineCode>{`, etc.`}</p>\n    <p>{`All relevant Row level security filters will be combined together (under the hood,\nthe different SQL clauses are combined using AND statements). This means it's\npossible to create a situation where two roles conflict in such a way as to limit a table subset to empty.`}</p>\n    <p>{`For example, the filters `}<inlineCode parentName=\"p\">{`client_id=4`}</inlineCode>{` and `}<inlineCode parentName=\"p\">{`client_id=5`}</inlineCode>{`, applied to a role,\nwill result in users of that role having `}<inlineCode parentName=\"p\">{`client_id=4`}</inlineCode>{` AND `}<inlineCode parentName=\"p\">{`client_id=5`}</inlineCode>{`\nadded to their query, which can never be true.`}</p>\n    <h3 {...{\n      \"id\": \"reporting-security-vulnerabilities\"\n    }}>{`Reporting Security Vulnerabilities`}</h3>\n    <p>{`Apache Software Foundation takes a rigorous standpoint in annihilating the security issues in its\nsoftware projects. Apache Superset is highly sensitive and forthcoming to issues pertaining to its\nfeatures and functionality.`}</p>\n    <p>{`If you have apprehensions regarding Superset security or you discover vulnerability or potential\nthreat, don’t hesitate to get in touch with the Apache Security Team by dropping a mail at\n`}<a parentName=\"p\" {...{\n        \"href\": \"mailto:security@apache.org.\"\n      }}>{`security@apache.org.`}</a>{` In the mail, specify the project name Superset with the description of the\nissue or potential threat. You are also urged to recommend the way to reproduce and replicate the\nissue. The security team and the Superset community will get back to you after assessing and\nanalysing the findings.`}</p>\n    <p>{`PLEASE PAY ATTENTION to report the security issue on the security email before disclosing it on\npublic domain. The ASF Security Team maintains a page with the description of how vulnerabilities\nand potential threats are handled, check their web page for more details.`}</p>\n\n    </MDXLayout>;\n}\n;\nMDXContent.isMDXComponent = true;\n      "],"sourceRoot":""}