Apache Zeppelin, как сохранить конфигурацию интерпретатора для каждого пользователя

Я использую zeppelin, и в основном я сосредоточен на интерпретаторе JDBC.

Мы хотим предоставить веб-интерфейс для доступа к БД.

Предполагается, что каждый пользователь будет входить в Zeppelin, создавать свои собственные учетные данные, которые должны передаваться интерпретатору jdbc.

Таким образом, интерпретатор должен быть общим, но соединение с БД должно основываться на каждом отдельном учетном документе.

Это возможно? Учитывая, что аутентификация моих пользователей - это jdbc-realm

Ссылающийся документ: https://zeppelin.apache.org/docs/0.9.0/setup/security/datasource_authorization.html

Мой широ.ини:

[main]
dataSource                    = org.postgresql.ds.PGPoolingDataSource
dataSource.serverName         = localhost
dataSource.databaseName       = test
dataSource.user               = user_a
dataSource.password           = pass_a

ps = org.apache.shiro.authc.credential.DefaultPasswordService
pm = org.apache.shiro.authc.credential.PasswordMatcher
pm.passwordService = $ps

jdbcRealm = org.apache.shiro.realm.jdbc.JdbcRealm
jdbcRealmCredentialsMatcher = org.apache.shiro.authc.credential.Sha256CredentialsMatcher


jdbcRealm.dataSource = $dataSource
jdbcRealm.authenticationQuery = select password from zeppelin.zeppelin_users where username = ?
jdbcRealm.userRolesQuery    = select role_name from zeppelin.zeppelin_user_roles where username = ?
jdbcRealm.credentialsMatcher = $pm


sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager

### If caching of user is required then uncomment below lines
#cacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager
#securityManager.cacheManager = $cacheManager

### Enables 'HttpOnly' flag in Zeppelin cookies
cookie = org.apache.shiro.web.servlet.SimpleCookie
cookie.name = JSESSIONID
cookie.httpOnly = true
### Uncomment the below line only when Zeppelin is running over HTTPS
#cookie.secure = true
sessionManager.sessionIdCookie = $cookie

securityManager.sessionManager = $sessionManager
# 86,400,000 milliseconds = 24 hour
securityManager.sessionManager.globalSessionTimeout = 86400000

shiro.loginUrl = /api/login

[roles]
role1 = *
role2 = *
role3 = *
admin = *

[urls]
/api/version = anon
/api/cluster/address = anon
# Allow all authenticated users to restart interpreters on a notebook page.
# Comment out the following line if you would like to authorize only admin users to restart interpreters.
/api/interpreter/setting/restart/** = authc
/api/interpreter/** = authc, roles[admin]
/api/notebook-repositories/** = authc, roles[admin]
/api/configurations/** = authc, roles[admin]
/api/credential/** = authc, roles[admin]
/api/admin/** = authc, roles[admin]
#/** = anon
/** = authc

Создали учетные данные: введите здесь описание изображения

А также удалили имя пользователя и пароль по умолчанию из конфигурации интерпретатора введите здесь описание изображения

Исключение: org.postgresql.util.PSQLException: The server requested password-based authentication, but no password was provided.

Версия: 0.9.0-preview2

ОБНОВЛЕНИЕ: то же самое работает в версии 0.8.2, поэтому проблема возникает в сборке версии 0.9.0


person JDev    schedule 06.01.2021    source источник


Ответы (1)


Согласно ZEPPELIN-5184 и PR-4008, в версии 0.9.0 нам нужно указать только имя интерпретатора в учетных данных.

Проверьте ZEPPELIN-5189 для более подробной информации.

person JDev    schedule 08.01.2021