в любом случае для поддержки конфигурации разъема уровня сеанса для Presto - PullRequest
1 голос
/ 30 октября 2019

На основе Конфигурация соединителей , все рабочие используют одну и ту же конфигурацию соединителей в папке каталога, что означает, что она будет использовать одинаковую конфигурацию соединителей для любого пользователя кластера Presto. Например, запросы от prestosql user1 и user2 будут использовать одну и ту же конфигурацию запроса jdbc. Однако традиционный ACL СУБД основан на имени пользователя в конфигурации JDBC для поддержки изоляции. Например, user1 будет использовать jdbc:mysql://user1@host:3306, а user2 будет использовать jdbc:mysql://user2@host:3306.

Вопрос: есть ли какие-либо указатели или указания для поддержки конфигурации соединителя уровня сеанса в том же кластере preto? Например, когда пользователь user1 запускает запрос, он использует jdbc:mysql://user1@host:3306 при использовании соединителя mysql, а может переключаться на jdbc:mysql://user2@host:3306, когда пользователь user2 запускает запрос, который подключается к mysql.

Я открыт для любых входных данных проектанапример, использование централизованного инструмента управления конфигурацией, например, консул или т. д.

Ответы [ 3 ]

4 голосов
/ 31 октября 2019

Вы можете настроить это для файла свойств каталога соединителя MySQL:

user-credential-name=mysql_user
password-credential-name=mysql_password

Это позволяет пользователю предоставить имя пользователя и пароль MySQL в виде дополнительных учетных данных , которые передаются непосредственно ввнутренний сервер MySQL при выполнении запроса Presto:

presto --extra-credential mysql_user=user1 --extra-credential mysql_password=secret

Имена учетных данных mysql_user и mysql_password являются произвольными и дают вам гибкость в настройке. Например, предположим, у вас есть два каталога MySQL, указывающие на два разных сервера MySQL. Если оба сервера совместно используют одних и тех же пользователей, вы должны настроить оба каталога с одинаковыми именами учетных данных, что позволит использовать одинаковые учетные данные для обоих. Если они различны, вы бы назвали их по-разному, например, mysql1_user и mysql2_user, что позволяет пользователю предоставлять разные учетные данные для каждого каталога.

4 голосов
/ 31 октября 2019

Это напрямую поддерживается использованием дополнительных учетных данных. См. https://github.com/prestosql/presto/blob/8c1a4a10abaad91a2f4656653a3f5eb0e44aa6c1/presto-base-jdbc/src/main/java/io/prestosql/plugin/jdbc/credential/ExtraCredentialProvider.java#L26

См. Документацию для получения дополнительной информации:

2 голосов
/ 31 октября 2019

В случае, если вы используете Starburst Presto, существует также возможность подражания пользователю. См. https://docs.starburstdata.com/latest/security/impersonation.html. Среди прочего, он в настоящее время поддерживается для PostgreSql, но еще не для коннектора MySql.

...