(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{bpau:function(e,t,n){"use strict";n.r(t),n.d(t,"_frontmatter",(function(){return s})),n.d(t,"default",(function(){return p}));var a=n("k1TG"),r=n("8o2o"),o=(n("q1tI"),n("7ljp")),i=n("hhGP"),s=(n("qKvR"),{});void 0!==s&&s&&s===Object(s)&&Object.isExtensible(s)&&!s.hasOwnProperty("__filemeta")&&Object.defineProperty(s,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/pages/docs/installation/configuring.mdx"}});var c={_frontmatter:s},l=i.a;function p(e){var t=e.components,n=Object(r.a)(e,["components"]);return Object(o.b)(l,Object(a.a)({},c,n,{components:t,mdxType:"MDXLayout"}),Object(o.b)("h2",{id:"configuring-superset"},"Configuring Superset"),Object(o.b)("h3",{id:"configuration"},"Configuration"),Object(o.b)("p",null,"To configure your application, you need to create a file ",Object(o.b)("inlineCode",{parentName:"p"},"superset_config.py")," and add it to your\n",Object(o.b)("inlineCode",{parentName:"p"},"PYTHONPATH"),". Here are some of the parameters you can set in that file:"),Object(o.b)("pre",null,Object(o.b)("code",Object(a.a)({parentName:"pre"},{}),"# Superset specific config\nROW_LIMIT = 5000\n\nSUPERSET_WEBSERVER_PORT = 8088\n\n# Flask App Builder configuration\n# Your App secret key\nSECRET_KEY = '\\2\\1thisismyscretkey\\1\\2\\e\\y\\y\\h'\n\n# The SQLAlchemy connection string to your database backend\n# This connection defines the path to the database that stores your\n# superset metadata (slices, connections, tables, dashboards, ...).\n# Note that the connection information to connect to the datasources\n# you want to explore are managed directly in the web UI\nSQLALCHEMY_DATABASE_URI = 'sqlite:////path/to/superset.db'\n\n# Flask-WTF flag for CSRF\nWTF_CSRF_ENABLED = True\n# Add endpoints that need to be exempt from CSRF protection\nWTF_CSRF_EXEMPT_LIST = []\n# A CSRF token that expires in 1 year\nWTF_CSRF_TIME_LIMIT = 60 * 60 * 24 * 365\n\n# Set this API key to enable Mapbox visualizations\nMAPBOX_API_KEY = ''\n")),Object(o.b)("p",null,"All the parameters and default values defined in\n",Object(o.b)("a",Object(a.a)({parentName:"p"},{href:"https://github.com/apache/superset/blob/master/superset/config.py"}),"https://github.com/apache/superset/blob/master/superset/config.py"),"\ncan be altered in your local ",Object(o.b)("inlineCode",{parentName:"p"},"superset_config.py"),". Administrators will want to read through the file\nto understand what can be configured locally as well as the default values in place."),Object(o.b)("p",null,"Since ",Object(o.b)("inlineCode",{parentName:"p"},"superset_config.py")," acts as a Flask configuration module, it can be used to alter the\nsettings Flask itself, as well as Flask extensions like ",Object(o.b)("inlineCode",{parentName:"p"},"flask-wtf"),", ",Object(o.b)("inlineCode",{parentName:"p"},"flask-caching"),", ",Object(o.b)("inlineCode",{parentName:"p"},"flask-migrate"),",\nand ",Object(o.b)("inlineCode",{parentName:"p"},"flask-appbuilder"),". Flask App Builder, the web framework used by Superset, offers many\nconfiguration settings. Please consult the\n",Object(o.b)("a",Object(a.a)({parentName:"p"},{href:"https://flask-appbuilder.readthedocs.org/en/latest/config.html"}),"Flask App Builder Documentation"),"\nfor more information on how to configure it."),Object(o.b)("p",null,"Make sure to change:"),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"SQLALCHEMY_DATABASE_URI"),": by default it is stored at ~/.superset/superset.db"),Object(o.b)("li",{parentName:"ul"},Object(o.b)("inlineCode",{parentName:"li"},"SECRET_KEY"),": to a long random string")),Object(o.b)("p",null,"If you need to exempt endpoints from CSRF (e.g. if you are running a custom auth postback endpoint),\nyou can add the endpoints to ",Object(o.b)("inlineCode",{parentName:"p"},"WTF_CSRF_EXEMPT_LIST"),":"),Object(o.b)("pre",null,Object(o.b)("code",Object(a.a)({parentName:"pre"},{}),"WTF_CSRF_EXEMPT_LIST = [‘’]\n")),Object(o.b)("h3",{id:"running-on-a-wsgi-http-server"},"Running on a WSGI HTTP Server"),Object(o.b)("p",null,"While you can run Superset on NGINX or Apache, we recommend using Gunicorn in async mode. This\nenables impressive concurrency even and is fairly easy to install and configure. Please refer to the\ndocumentation of your preferred technology to set up this Flask WSGI application in a way that works\nwell in your environment. Here’s an async setup known to work well in production:"),Object(o.b)("pre",null,Object(o.b)("code",Object(a.a)({parentName:"pre"},{}),'      -w 10 \\\n      -k gevent \\\n      --timeout 120 \\\n      -b  0.0.0.0:6666 \\\n      --limit-request-line 0 \\\n      --limit-request-field_size 0 \\\n      --statsd-host localhost:8125 \\\n      "superset.app:create_app()"\n')),Object(o.b)("p",null,"Refer to the ",Object(o.b)("a",Object(a.a)({parentName:"p"},{href:"https://docs.gunicorn.org/en/stable/design.html"}),"Gunicorn documentation")," for more\ninformation. ",Object(o.b)("em",{parentName:"p"},"Note that the development web server (",Object(o.b)("inlineCode",{parentName:"em"},"superset run")," or ",Object(o.b)("inlineCode",{parentName:"em"},"flask run"),") is not intended\nfor production use.")),Object(o.b)("p",null,"If you're not using Gunicorn, you may want to disable the use of ",Object(o.b)("inlineCode",{parentName:"p"},"flask-compress")," by setting\n",Object(o.b)("inlineCode",{parentName:"p"},"COMPRESS_REGISTER = False")," in your ",Object(o.b)("inlineCode",{parentName:"p"},"superset_config.py"),"."),Object(o.b)("h3",{id:"configuration-behind-a-load-balancer"},"Configuration Behind a Load Balancer"),Object(o.b)("p",null,"If you are running superset behind a load balancer or reverse proxy (e.g. NGINX or ELB on AWS), you\nmay need to utilize a healthcheck endpoint so that your load balancer knows if your superset\ninstance is running. This is provided at ",Object(o.b)("inlineCode",{parentName:"p"},"/health")," which will return a 200 response containing “OK”\nif the the webserver is running."),Object(o.b)("p",null,"If the load balancer is inserting ",Object(o.b)("inlineCode",{parentName:"p"},"X-Forwarded-For/X-Forwarded-Proto")," headers, you should set\n",Object(o.b)("inlineCode",{parentName:"p"},"ENABLE_PROXY_FIX = True")," in the superset config file (",Object(o.b)("inlineCode",{parentName:"p"},"superset_config.py"),") to extract and use the\nheaders."),Object(o.b)("p",null,"In case the reverse proxy is used for providing SSL encryption, an explicit definition of the\n",Object(o.b)("inlineCode",{parentName:"p"},"X-Forwarded-Proto")," may be required. For the Apache webserver this can be set as follows:"),Object(o.b)("pre",null,Object(o.b)("code",Object(a.a)({parentName:"pre"},{}),'RequestHeader set X-Forwarded-Proto "https"\n')),Object(o.b)("h3",{id:"custom-oauth2-configuration"},"Custom OAuth2 Configuration"),Object(o.b)("p",null,"Beyond FAB supported providers (Github, Twitter, LinkedIn, Google, Azure, etc), its easy to connect\nSuperset with other OAuth2 Authorization Server implementations that support “code” authorization."),Object(o.b)("p",null,"Make sure the pip package ",Object(o.b)("a",Object(a.a)({parentName:"p"},{href:"https://authlib.org/"}),Object(o.b)("inlineCode",{parentName:"a"},"Authlib"))," is installed on the webserver."),Object(o.b)("p",null,"First, configure authorization in Superset ",Object(o.b)("inlineCode",{parentName:"p"},"superset_config.py"),"."),Object(o.b)("pre",null,Object(o.b)("code",Object(a.a)({parentName:"pre"},{className:"language-python"}),"AUTH_TYPE = AUTH_OAUTH\nOAUTH_PROVIDERS = [\n    {   'name':'egaSSO',\n        'token_key':'access_token', # Name of the token in the response of access_token_url\n        'icon':'fa-address-card',   # Icon for the provider\n        'remote_app': {\n            'client_id':'myClientId',  # Client Id (Identify Superset application)\n            'client_secret':'MySecret', # Secret for this Client Id (Identify Superset application)\n            'client_kwargs':{\n                'scope': 'read'               # Scope for the Authorization\n            },\n            'access_token_method':'POST',    # HTTP Method to call access_token_url\n            'access_token_params':{        # Additional parameters for calls to access_token_url\n                'client_id':'myClientId'\n            },\n            'access_token_headers':{    # Additional headers for calls to access_token_url\n                'Authorization': 'Basic Base64EncodedClientIdAndSecret'\n            },\n            'api_base_url':'https://myAuthorizationServer/oauth2AuthorizationServer/',\n            'access_token_url':'https://myAuthorizationServer/oauth2AuthorizationServer/token',\n            'authorize_url':'https://myAuthorizationServer/oauth2AuthorizationServer/authorize'\n        }\n    }\n]\n\n# Will allow user self registration, allowing to create Flask users from Authorized User\nAUTH_USER_REGISTRATION = True\n\n# The default user self registration role\nAUTH_USER_REGISTRATION_ROLE = \"Public\"\n")),Object(o.b)("p",null,"Then, create a ",Object(o.b)("inlineCode",{parentName:"p"},"CustomSsoSecurityManager")," that extends ",Object(o.b)("inlineCode",{parentName:"p"},"SupersetSecurityManager")," and overrides\n",Object(o.b)("inlineCode",{parentName:"p"},"oauth_user_info"),":"),Object(o.b)("pre",null,Object(o.b)("code",Object(a.a)({parentName:"pre"},{className:"language-python"}),"from superset.security import SupersetSecurityManager\n\nclass CustomSsoSecurityManager(SupersetSecurityManager):\n\n    def oauth_user_info(self, provider, response=None):\n        logging.debug(\"Oauth2 provider: {0}.\".format(provider))\n        if provider == 'egaSSO':\n            # As example, this line request a GET to base_url + '/' + userDetails with Bearer  Authentication,\n    # and expects that authorization server checks the token, and response with user details\n            me = self.appbuilder.sm.oauth_remotes[provider].get('userDetails').data\n            logging.debug(\"user_data: {0}\".format(me))\n            return { 'name' : me['name'], 'email' : me['email'], 'id' : me['user_name'], 'username' : me['user_name'], 'first_name':'', 'last_name':''}\n    ...\n")),Object(o.b)("p",null,"This file must be located at the same directory than ",Object(o.b)("inlineCode",{parentName:"p"},"superset_config.py")," with the name\n",Object(o.b)("inlineCode",{parentName:"p"},"custom_sso_security_manager.py"),". Finally, add the following 2 lines to ",Object(o.b)("inlineCode",{parentName:"p"},"superset_config.py"),":"),Object(o.b)("pre",null,Object(o.b)("code",Object(a.a)({parentName:"pre"},{}),"from custom_sso_security_manager import CustomSsoSecurityManager\nCUSTOM_SECURITY_MANAGER = CustomSsoSecurityManager\n")),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Notes")),Object(o.b)("ul",null,Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},"The redirect URL will be ",Object(o.b)("inlineCode",{parentName:"p"},"https://<superset-webserver>/oauth-authorized/<provider-name>"),"\nWhen configuring an OAuth2 authorization provider if needed. For instance, the redirect URL will\nbe ",Object(o.b)("inlineCode",{parentName:"p"},"https://<superset-webserver>/oauth-authorized/egaSSO")," for the above configuration.")),Object(o.b)("li",{parentName:"ul"},Object(o.b)("p",{parentName:"li"},"If an OAuth2 authorization server supports OpenID Connect 1.0, you could configure its configuration\ndocument URL only without providing ",Object(o.b)("inlineCode",{parentName:"p"},"api_base_url"),", ",Object(o.b)("inlineCode",{parentName:"p"},"access_token_url"),", ",Object(o.b)("inlineCode",{parentName:"p"},"authorize_url")," and other\nrequired options like user info endpoint, jwks uri etc. For instance:"),Object(o.b)("pre",{parentName:"li"},Object(o.b)("code",Object(a.a)({parentName:"pre"},{className:"language-python"}),"OAUTH_PROVIDERS = [\n  {   'name':'egaSSO',\n      'token_key':'access_token', # Name of the token in the response of access_token_url\n      'icon':'fa-address-card',   # Icon for the provider\n      'remote_app': {\n          'client_id':'myClientId',  # Client Id (Identify Superset application)\n          'client_secret':'MySecret', # Secret for this Client Id (Identify Superset application)\n          'server_metadata_url': 'https://myAuthorizationServer/.well-known/openid-configuration'\n      }\n  }\n]\n")))),Object(o.b)("h3",{id:"feature-flags"},"Feature Flags"),Object(o.b)("p",null,"To support a diverse set of users, Superset has some features that are not enabled by default. For\nexample, some users have stronger security restrictions, while some others may not. So Superset\nallow users to enable or disable some features by config. For feature owners, you can add optional\nfunctionalities in Superset, but will be only affected by a subset of users."),Object(o.b)("p",null,"You can enable or disable features with flag from ",Object(o.b)("inlineCode",{parentName:"p"},"superset_config.py"),":"),Object(o.b)("pre",null,Object(o.b)("code",Object(a.a)({parentName:"pre"},{className:"language-python"}),"FEATURE_FLAGS = {\n    'CLIENT_CACHE': False,\n    'ENABLE_EXPLORE_JSON_CSRF_PROTECTION': False,\n    'PRESTO_EXPAND_DATA': False,\n}\n")),Object(o.b)("p",null,"A current list of feature flags can be found in ",Object(o.b)("inlineCode",{parentName:"p"},"RESOURCES/FEATURE_FLAGS.md")),Object(o.b)("h3",{id:"sip-15"},"SIP 15"),Object(o.b)("p",null,Object(o.b)("a",Object(a.a)({parentName:"p"},{href:"https://github.com/apache/superset/issues/6360"}),"Superset Improvement Proposal 15")," aims to\nensure that time intervals are handled in a consistent and transparent manner for both the Druid and\nSQLAlchemy connectors."),Object(o.b)("p",null,"Prior to SIP-15 SQLAlchemy used inclusive endpoints however these may behave like exclusive for\nstring columns (due to lexicographical ordering) if no formatting was defined and the column\nformatting did not conform to an ISO 8601 date-time (refer to the SIP for details)."),Object(o.b)("p",null,"To remedy this rather than having to define the date/time format for every non-IS0 8601 date-time\ncolumn, once can define a default column mapping on a per database level via the ",Object(o.b)("inlineCode",{parentName:"p"},"extra")," parameter:"),Object(o.b)("pre",null,Object(o.b)("code",Object(a.a)({parentName:"pre"},{}),'{\n    "python_date_format_by_column_name": {\n        "ds": "%Y-%m-%d"\n    }\n}\n')),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"New Deployments")),Object(o.b)("p",null,"All new deployments should enable SIP-15 by setting this value in ",Object(o.b)("inlineCode",{parentName:"p"},"superset_config.py"),":"),Object(o.b)("pre",null,Object(o.b)("code",Object(a.a)({parentName:"pre"},{}),"SIP_15_ENABLED = True\n\n")),Object(o.b)("p",null,Object(o.b)("strong",{parentName:"p"},"Existing Deployments")),Object(o.b)("p",null,"Given that it is not apparent whether the chart creator was aware of the time range inconsistencies\n(and adjusted the endpoints accordingly) changing the behavior of all charts is overly aggressive.\nInstead SIP-15 proivides a soft transistion allowing producers (chart owners) to see the impact of\nthe proposed change and adjust their charts accordingly."),Object(o.b)("p",null,"Prior to enabling SIP-15, existing deployments should communicate to their users the impact of the\nchange and define a grace period end date (exclusive of course) after which all charts will conform\nto the [start, end) interval."),Object(o.b)("pre",null,Object(o.b)("code",Object(a.a)({parentName:"pre"},{className:"language-python"}),"from dateime import date\n\nSIP_15_ENABLED = True\nSIP_15_GRACE_PERIOD_END = date(<YYYY>, <MM>, <DD>)\n")),Object(o.b)("p",null,"To aid with transparency the current endpoint behavior is explicitly called out in the chart time\nrange (post SIP-15 this will be [start, end) for all connectors and databases). One can override the\ndefaults on a per database level via the ",Object(o.b)("inlineCode",{parentName:"p"},"extra")," parameter."),Object(o.b)("pre",null,Object(o.b)("code",Object(a.a)({parentName:"pre"},{className:"language-python"}),'{\n    "time_range_endpoints": ["inclusive", "inclusive"]\n}\n')),Object(o.b)("p",null,"Note in a future release the interim SIP-15 logic will be removed (including the\n",Object(o.b)("inlineCode",{parentName:"p"},"time_grain_endpoints")," form-data field) via a code change and Alembic migration."))}void 0!==p&&p&&p===Object(p)&&Object.isExtensible(p)&&!p.hasOwnProperty("__filemeta")&&Object.defineProperty(p,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/pages/docs/installation/configuring.mdx"}}),p.isMDXComponent=!0}}]);
//# sourceMappingURL=component---src-pages-docs-installation-configuring-mdx-5b0f26ca5b17478d5e2f.js.map