mirror of
https://github.com/apache/superset.git
synced 2026-04-19 16:14:52 +00:00
feat: add denylist for db engines (#21486)
This commit is contained in:
committed by
GitHub
parent
aef6217a80
commit
f58227a912
@@ -41,6 +41,7 @@ from pkg_resources import iter_entry_points
|
||||
from sqlalchemy.engine.default import DefaultDialect
|
||||
from sqlalchemy.engine.url import URL
|
||||
|
||||
from superset import app
|
||||
from superset.db_engine_specs.base import BaseEngineSpec
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -72,7 +73,6 @@ def load_engine_specs() -> List[Type[BaseEngineSpec]]:
|
||||
for attr in module.__dict__
|
||||
if is_engine_spec(getattr(module, attr))
|
||||
)
|
||||
|
||||
# load additional engines from external modules
|
||||
for ep in iter_entry_points("superset.db_engine_specs"):
|
||||
try:
|
||||
@@ -170,6 +170,17 @@ def get_available_engine_specs() -> Dict[Type[BaseEngineSpec], Set[str]]:
|
||||
for engine_spec in load_engine_specs():
|
||||
driver = drivers[engine_spec.engine]
|
||||
|
||||
# do not add denied db engine specs to available list
|
||||
dbs_denylist = app.config["DBS_AVAILABLE_DENYLIST"]
|
||||
dbs_denylist_engines = dbs_denylist.keys()
|
||||
|
||||
if (
|
||||
engine_spec.engine in dbs_denylist_engines
|
||||
and hasattr(engine_spec, "default_driver")
|
||||
and engine_spec.default_driver in dbs_denylist[engine_spec.engine]
|
||||
):
|
||||
continue
|
||||
|
||||
# lookup driver by engine aliases.
|
||||
if not driver and engine_spec.engine_aliases:
|
||||
for alias in engine_spec.engine_aliases:
|
||||
|
||||
Reference in New Issue
Block a user