{"version":3,"sources":["webpack:///./src/pages/docs/Connecting to Databases/extra-settings.mdx"],"names":["_frontmatter","MDXLayout","DefaultLayout","MDXContent","components","props","mdxType","isMDXComponent"],"mappings":"wPAMaA,G,UAAe,S,2OAE5B,IAKMC,EAAYC,IACH,SAASC,EAAT,GAGZ,IAFDC,EAEC,EAFDA,WACGC,EACF,8BACD,OAAO,YAACJ,EAAD,eAAeI,EAAf,CAAsBD,WAAYA,EAAYE,QAAQ,cAC3D,iBAAQ,CACN,GAAM,2BADR,2BAGA,iBAAQ,CACN,GAAM,iCADR,iCAGA,wIAEE,qBAAY,CACV,WAAc,KADhB,iBAFF,2BAME,qBAAY,CACV,WAAc,KADhB,SANF,0BAUA,oFACE,yBAAgB,CACd,WAAc,KADhB,iBADF,mCAME,yBAAgB,CACd,WAAc,KADhB,4BANF,oBAUE,yBAAgB,CACd,WAAc,KADhB,mBAVF,2BAeE,yBAAgB,CACd,WAAc,KADhB,uBAfF,6DAmBA,iBAAQ,CACN,GAAM,WADR,WAGA,qEACE,qBAAY,CACV,WAAc,KADhB,UADF,yCAME,qBAAY,CACV,WAAc,KADhB,YANF,mEAUE,qBAAY,CACV,WAAc,KADhB,UAVF,sBAeE,qBAAY,CACV,WAAc,KADhB,eAfF,2CAmBA,iBAAQ,CACN,GAAM,sDADR,sDAGA,2OAGA,uFACE,yBAAgB,CACd,WAAc,KADhB,mBADF,wEAME,yBAAgB,CACd,WAAc,KADhB,oCANF,oDAWA,uBAAK,mBAAU,CACX,UAAa,kBACb,WAAc,OAFb,kLASL,qGAEE,yBAAgB,CACd,WAAc,KADhB,oCAFF,uCAMA,uBAAK,mBAAU,CACX,UAAa,kBACb,WAAc,OAFb,4OAUL,iBAAQ,CACN,GAAM,2BADR,2BAGA,wCACE,yBAAgB,CACd,WAAc,KADhB,SADF,iBAKE,qBAAY,CACV,WAAc,KADhB,kBALF,2BASA,uBAAK,mBAAU,CACX,UAAa,gBACb,WAAc,OAFb,wM,yOAiBTH,EAAWI,gBAAiB","file":"component---src-pages-docs-connecting-to-databases-extra-settings-mdx-6231aedb450ee52b5ab9.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\": \"extra-database-settings\"\n    }}>{`Extra Database Settings`}</h2>\n    <h3 {...{\n      \"id\": \"deeper-sqlalchemy-integration\"\n    }}>{`Deeper SQLAlchemy Integration`}</h3>\n    <p>{`It is possible to tweak the database connection information using the parameters exposed by\nSQLAlchemy. In the `}\n      <strong {...{\n        \"parentName\": \"p\"\n      }}>{`Database edit`}</strong>\n      {` view, you can edit the `}\n      <strong {...{\n        \"parentName\": \"p\"\n      }}>{`Extra`}</strong>\n      {` field as a JSON blob.`}</p>\n    <p>{`This JSON string contains extra configuration elements. The `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`engine_params`}</inlineCode>\n      {` object gets unpacked\ninto the `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`sqlalchemy.create_engine`}</inlineCode>\n      {` call, while the `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`metadata_params`}</inlineCode>\n      {` get unpacked into the\n`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`sqlalchemy.MetaData`}</inlineCode>\n      {` call. Refer to the SQLAlchemy docs for more information.`}</p>\n    <h3 {...{\n      \"id\": \"schemas\"\n    }}>{`Schemas`}</h3>\n    <p>{`Databases like Postgres and Redshift use the `}\n      <strong {...{\n        \"parentName\": \"p\"\n      }}>{`schema`}</strong>\n      {` as the logical entity on top of the\n`}\n      <strong {...{\n        \"parentName\": \"p\"\n      }}>{`database`}</strong>\n      {`. For Superset to connect to a specific schema, you can set the `}\n      <strong {...{\n        \"parentName\": \"p\"\n      }}>{`schema`}</strong>\n      {` parameter in\nthe `}\n      <strong {...{\n        \"parentName\": \"p\"\n      }}>{`Edit Tables`}</strong>\n      {` form (Sources > Tables > Edit record).`}</p>\n    <h3 {...{\n      \"id\": \"external-password-store-for-sqlalchemy-connections\"\n    }}>{`External Password Store for SQLAlchemy Connections`}</h3>\n    <p>{`Superset can be configured to use an external store for database passwords. This is useful if you a\nrunning a custom secret distribution framework and do not wish to store secrets in Superset’s meta\ndatabase.`}</p>\n    <p>{`Example: Write a function that takes a single argument of type `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`sqla.engine.url`}</inlineCode>\n      {` and returns the\npassword for the given connection string. Then set `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`SQLALCHEMY_CUSTOM_PASSWORD_STORE`}</inlineCode>\n      {` in your config\nfile to point to that function.`}</p>\n    <pre><code {...{\n        \"className\": \"language-python\",\n        \"parentName\": \"pre\"\n      }}>{`def example_lookup_password(url):\n    secret = <<get password from external framework>>\n    return 'secret'\n\nSQLALCHEMY_CUSTOM_PASSWORD_STORE = example_lookup_password\n`}</code></pre>\n    <p>{`A common pattern is to use environment variables to make secrets available.\n`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`SQLALCHEMY_CUSTOM_PASSWORD_STORE`}</inlineCode>\n      {` can also be used for that purpose.`}</p>\n    <pre><code {...{\n        \"className\": \"language-python\",\n        \"parentName\": \"pre\"\n      }}>{`def example_password_as_env_var(url):\n# assuming the uri looks like\n# mysql://localhost?superset_user:{SUPERSET_PASSWORD}\nreturn url.password.format(os.environ)\n\nSQLALCHEMY_CUSTOM_PASSWORD_STORE = example_password_as_env_var\n`}</code></pre>\n    <h3 {...{\n      \"id\": \"ssl-access-to-databases\"\n    }}>{`SSL Access to Databases`}</h3>\n    <p>{`You can use the `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`Extra`}</inlineCode>\n      {` field in the `}\n      <strong {...{\n        \"parentName\": \"p\"\n      }}>{`Edit Databases`}</strong>\n      {` form to configure SSL:`}</p>\n    <pre><code {...{\n        \"className\": \"language-JSON\",\n        \"parentName\": \"pre\"\n      }}>{`{\n    \"metadata_params\": {},\n    \"engine_params\": {\n          \"connect_args\":{\n              \"sslmode\":\"require\",\n              \"sslrootcert\": \"/path/to/my/pem\"\n        }\n     }\n}\n`}</code></pre>\n\n  </MDXLayout>;\n}\n;\nMDXContent.isMDXComponent = true;\n      "],"sourceRoot":""}