Как олицетворять запросы Impala в Superset

Я настраиваю Superset (0.36.0) в производственном режиме (с Gunicorn), и я хотел бы настроить олицетворение при выполнении запросов Impala в моем Kerberized Cluster, чтобы каждый пользователь Superset имел привилегии в таблицах / базах данных, как у него на Hive / Hue / HDFS. Я попытался установить для параметра «Impersonate the logged on user» значение true в моей конфигурации базы данных, но это не меняет пользователя, выполняющего запрос, он всегда использует пользователя celery-worker.

Конфигурация моей базы данных:

Основная конфигурация базы данных  Конец конфигурации базы данных

Дополнительно:

{
    "metadata_params": {},
    "engine_params":  {
            "connect_args": {  
                    "port": 21050,
                    "use_ssl": "True", 
                    "ca_cert": "/path/to/my/cert.pem",
                    "auth_mechanism": "GSSAPI"
         }
     },
    "metadata_cache_timeout": {},
    "schemas_allowed_for_csv_upload": []
}

Мое резюме по запросу в Cloudera Manager (5.13):

Запрос в CM

Как правильно включить олицетворение в моем суперсете? Возможно, что-то связано с конфигурацией impala.doas.user в соединении HiveServer2, но я не знаю, как это правильно настроить.


person guilherme0170    schedule 14.05.2020    source источник
comment
Привет, @ guilherme0170, ты это решил?   -  person diogoramos    schedule 13.08.2020


Ответы (1)


Я столкнулся с той же проблемой, и я должен был заставить ее работать для улья. Похоже, проблема в файле hive.py, расположенном по пути $ {YOUR_INSTALLATION_PATH} / superset / db_engine_specs

Если вы просто закомментируете строку 435, она должна сработать. К сожалению, я недостаточно хорошо понимаю Python, чтобы сказать вам точную причину. Я нашел это грубой силой, запустив исходный код и поместив операторы журнала


        if (
            backend_name == "hive"
            # comment this line
            # and "auth" in url.query.keys()
            and impersonate_user is True
            and username is not None
        ):
            configuration["hive.server2.proxy.user"] = username
        return configuration

В качестве альтернативы, если вы не хотите изменять исходный код, вы можете изменить URL-адрес при создании источника данных в надмножестве как:

hive://<url>/default?auth=NONE    ( when there is no security )
hive://<url>/default?auth=KERBEROS
hive://<url>/default?auth=LDAP
person Nilanjan Sarkar    schedule 12.06.2020