{"version":3,"sources":["webpack:///./src/pages/docs/installation/configuring.mdx"],"names":["_frontmatter","MDXLayout","DefaultLayout","MDXContent","components","props","mdxType","isMDXComponent"],"mappings":"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","file":"component---src-pages-docs-installation-configuring-mdx-07bc354053979ddd03b1.js","sourcesContent":["import * as React from 'react'\n  /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsx mdx */\n\nimport DefaultLayout from \"/Users/max/code/superset/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\n\nconst makeShortcode = name => function MDXDefaultShortcode(props) {\n  console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n  return <div {...props} />;\n};\n\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n  components,\n  ...props\n}) {\n  return <MDXLayout {...props} components={components} mdxType=\"MDXLayout\">\n    <h2 {...{\n      \"id\": \"configuring-superset\"\n    }}>{`Configuring Superset`}</h2>\n    <h3 {...{\n      \"id\": \"configuration\"\n    }}>{`Configuration`}</h3>\n    <p>{`To configure your application, you need to create a file `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {` and add it to your\n`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`PYTHONPATH`}</inlineCode>\n      {`. Here are some of the parameters you can set in that file:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`# 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`}</code></pre>\n    <p>{`All the parameters and default values defined in\n`}\n      <a {...{\n        \"href\": \"https://github.com/apache/incubator-superset/blob/master/superset/config.py\",\n        \"parentName\": \"p\"\n      }}>{`https://github.com/apache/incubator-superset/blob/master/superset/config.py`}</a>\n      {`\ncan be altered in your local `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {`. Administrators will want to read through the file\nto understand what can be configured locally as well as the default values in place.`}</p>\n    <p>{`Since `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {` acts as a Flask configuration module, it can be used to alter the\nsettings Flask itself, as well as Flask extensions like `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`flask-wtf`}</inlineCode>\n      {`, `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`flask-cache`}</inlineCode>\n      {`, `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`flask-migrate`}</inlineCode>\n      {`,\nand `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`flask-appbuilder`}</inlineCode>\n      {`. Flask App Builder, the web framework used by Superset, offers many\nconfiguration settings. Please consult the\n`}\n      <a {...{\n        \"href\": \"https://flask-appbuilder.readthedocs.org/en/latest/config.html\",\n        \"parentName\": \"p\"\n      }}>{`Flask App Builder Documentation`}</a>\n      {`\nfor more information on how to configure it.`}</p>\n    <p>{`Make sure to change:`}</p>\n    <ul>\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}><inlineCode {...{\n          \"parentName\": \"li\"\n        }}>{`SQLALCHEMY_DATABASE_URI`}</inlineCode>\n        {`: by default it is stored at ~/.superset/superset.db`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}><inlineCode {...{\n          \"parentName\": \"li\"\n        }}>{`SECRET_KEY`}</inlineCode>\n        {`: to a long random string`}</li>\n\n    </ul>\n    <p>{`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 `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`WTF_CSRF_EXEMPT_LIST`}</inlineCode>\n      {`:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`WTF_CSRF_EXEMPT_LIST = [‘’]\n`}</code></pre>\n    <h3 {...{\n      \"id\": \"flask-appbuilder-permissions\"\n    }}>{`Flask AppBuilder Permissions`}</h3>\n    <p>{`By default, every time the Flask-AppBuilder (FAB) app is initialized the permissions and views are\nadded automatically to the backend and associated with the ‘Admin’ role. The issue, however, is when\nyou are running multiple concurrent workers this creates a lot of contention and race conditions\nwhen defining permissions and views.`}</p>\n    <p>{`To alleviate this issue, the automatic updating of permissions can be disabled by setting\n`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`FAB_UPDATE_PERMS = False`}</inlineCode>\n      {` (defaults to True).`}</p>\n    <p>{`In a production environment initialization could take on the following form:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`superset init gunicorn -w 10 … superset:app\n`}</code></pre>\n    <h3 {...{\n      \"id\": \"running-on-a-wsgi-http-server\"\n    }}>{`Running on a WSGI HTTP Server`}</h3>\n    <p>{`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:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`      -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`}</code></pre>\n    <p>{`Refer to the `}\n      <a {...{\n        \"href\": \"https://docs.gunicorn.org/en/stable/design.html\",\n        \"parentName\": \"p\"\n      }}>{`Gunicorn documentation`}</a>\n      {` for more\ninformation. `}\n      <em {...{\n        \"parentName\": \"p\"\n      }}>{`Note that the development web server (`}\n        <inlineCode {...{\n          \"parentName\": \"em\"\n        }}>{`superset run`}</inlineCode>\n        {` or `}\n        <inlineCode {...{\n          \"parentName\": \"em\"\n        }}>{`flask run`}</inlineCode>\n        {`) is not intended\nfor production use.`}</em></p>\n    <p>{`If you're not using Gunicorn, you may want to disable the use of `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`flask-compress`}</inlineCode>\n      {` by setting\n`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`COMPRESS_REGISTER = False`}</inlineCode>\n      {` in your `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {`.`}</p>\n    <h3 {...{\n      \"id\": \"configuration-behind-a-load-balancer\"\n    }}>{`Configuration Behind a Load Balancer`}</h3>\n    <p>{`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 `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`/health`}</inlineCode>\n      {` which will return a 200 response containing “OK”\nif the the webserver is running.`}</p>\n    <p>{`If the load balancer is inserting `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`X-Forwarded-For/X-Forwarded-Proto`}</inlineCode>\n      {` headers, you should set\n`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`ENABLE_PROXY_FIX = True`}</inlineCode>\n      {` in the superset config file (`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {`) to extract and use the\nheaders.`}</p>\n    <p>{`In case the reverse proxy is used for providing SSL encryption, an explicit definition of the\n`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`X-Forwarded-Proto`}</inlineCode>\n      {` may be required. For the Apache webserver this can be set as follows:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`RequestHeader set X-Forwarded-Proto \"https\"\n`}</code></pre>\n    <h3 {...{\n      \"id\": \"custom-oauth2-configuration\"\n    }}>{`Custom OAuth2 Configuration`}</h3>\n    <p>{`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.`}</p>\n    <p>{`First, configure authorization in Superset `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {`.`}</p>\n    <pre><code {...{\n        \"className\": \"language-python\",\n        \"parentName\": \"pre\"\n      }}>{`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            'consumer_key':'myClientId',  # Client Id (Identify Superset application)\n            'consumer_secret':'MySecret', # Secret for this Client Id (Identify Superset application)\n            'request_token_params':{\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            '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`}</code></pre>\n    <p>{`Then, create a `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`CustomSsoSecurityManager`}</inlineCode>\n      {` that extends `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`SupersetSecurityManager`}</inlineCode>\n      {` and overrides\n`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`oauth_user_info`}</inlineCode>\n      {`:`}</p>\n    <pre><code {...{\n        \"className\": \"language-python\",\n        \"parentName\": \"pre\"\n      }}>{`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`}</code></pre>\n    <p>{`This file must be located at the same directory than `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {` with the name\n`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`custom_sso_security_manager.py`}</inlineCode>\n      {`. Finally, add the following 2 lines to `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {`:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`from custom_sso_security_manager import CustomSsoSecurityManager\nCUSTOM_SECURITY_MANAGER = CustomSsoSecurityManager\n`}</code></pre>\n    <h3 {...{\n      \"id\": \"feature-flags\"\n    }}>{`Feature Flags`}</h3>\n    <p>{`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.`}</p>\n    <p>{`You can enable or disable features with flag from `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {`:`}</p>\n    <pre><code {...{\n        \"className\": \"language-python\",\n        \"parentName\": \"pre\"\n      }}>{`DEFAULT_FEATURE_FLAGS = {\n    'CLIENT_CACHE': False,\n    'ENABLE_EXPLORE_JSON_CSRF_PROTECTION': False,\n    'PRESTO_EXPAND_DATA': False,\n}\n`}</code></pre>\n    <p>{`Here is a list of flags and descriptions:`}</p>\n    <ul>\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>\n\n        <p {...{\n          \"parentName\": \"li\"\n        }}><inlineCode {...{\n            \"parentName\": \"p\"\n          }}>{`ENABLE_EXPLORE_JSON_CSRF_PROTECTION`}</inlineCode>\n          {`: For some security concerns, you may need to enforce CSRF\nprotection on all query request to the `}\n          <inlineCode {...{\n            \"parentName\": \"p\"\n          }}>{`explore_json`}</inlineCode>\n          {` endpoint. When\n`}\n          <inlineCode {...{\n            \"parentName\": \"p\"\n          }}>{`ENABLE_EXPLORE_JSON_CSRF_PROTECTION`}</inlineCode>\n          {` is set to true, your users cannot make GET request to\n`}\n          <inlineCode {...{\n            \"parentName\": \"p\"\n          }}>{`explore_json`}</inlineCode>\n          {`. The default value for this feature is `}\n          <inlineCode {...{\n            \"parentName\": \"p\"\n          }}>{`False`}</inlineCode>\n          {` and `}\n          <inlineCode {...{\n            \"parentName\": \"p\"\n          }}>{`explore_json`}</inlineCode>\n          {` will accept both\nGET and POST request. See `}\n          <a {...{\n            \"href\": \"https://github.com/apache/incubator-superset/pull/7935\",\n            \"parentName\": \"p\"\n          }}>{`PR 7935`}</a>\n          {` for\nmore details.`}</p>\n\n      </li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}>\n\n        <p {...{\n          \"parentName\": \"li\"\n        }}><inlineCode {...{\n            \"parentName\": \"p\"\n          }}>{`PRESTO_EXPAND_DATA`}</inlineCode>\n          {`: When this feature is enabled, nested types in Presto will be expanded into\nextra columns and / or arrays. This is experimental, and doesn’t work with all nested types.`}</p>\n\n      </li>\n\n    </ul>\n    <h3 {...{\n      \"id\": \"sip-15\"\n    }}>{`SIP 15`}</h3>\n    <p><a {...{\n        \"href\": \"https://github.com/apache/incubator-superset/issues/6360\",\n        \"parentName\": \"p\"\n      }}>{`Superset Improvement Proposal 15`}</a>\n      {` aims to\nensure that time intervals are handled in a consistent and transparent manner for both the Druid and\nSQLAlchemy connectors.`}</p>\n    <p>{`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).`}</p>\n    <p>{`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 `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`extra`}</inlineCode>\n      {` parameter:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`{\n    \"python_date_format_by_column_name\": {\n        \"ds\": \"%Y-%m-%d\"\n    }\n}\n`}</code></pre>\n    <p><strong {...{\n        \"parentName\": \"p\"\n      }}>{`New Deployments`}</strong></p>\n    <p>{`All new deployments should enable SIP-15 by setting this value in `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {`:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`SIP_15_ENABLED = True\n\n`}</code></pre>\n    <p><strong {...{\n        \"parentName\": \"p\"\n      }}>{`Existing Deployments`}</strong></p>\n    <p>{`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.`}</p>\n    <p>{`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.`}</p>\n    <pre><code {...{\n        \"className\": \"language-python\",\n        \"parentName\": \"pre\"\n      }}>{`from dateime import date\n\nSIP_15_ENABLED = True\nSIP_15_GRACE_PERIOD_END = date(<YYYY>, <MM>, <DD>)\n`}</code></pre>\n    <p>{`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 `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`extra`}</inlineCode>\n      {` parameter.`}</p>\n    <pre><code {...{\n        \"className\": \"language-python\",\n        \"parentName\": \"pre\"\n      }}>{`{\n    \"time_range_endpoints\": [\"inclusive\", \"inclusive\"]\n}\n`}</code></pre>\n    <p>{`Note in a future release the interim SIP-15 logic will be removed (including the\n`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`time_grain_endpoints`}</inlineCode>\n      {` form-data field) via a code change and Alembic migration.`}</p>\n\n  </MDXLayout>;\n}\n;\nMDXContent.isMDXComponent = true;\n      "],"sourceRoot":""}