NIFI nipyapi.nifi.rest.ApiException: (401) Причина: неавторизован. KNOX Gateway
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/sam/Documents/freenet/nifi-automation/src/compose.py", line 122, in <module>
compose_services(env_config, types, NIFI_VERSION, False, bench)
File "/home/sam/Documents/freenet/nifi-automation/src/compose.py", line 11, in compose_services
pg = ProcessorGroups(NIFI_VERSION)
File "/home/sam/Documents/freenet/nifi-automation/src/components/processor_group.py", line 9, in __init__
processor_groups = nipyapi.canvas.list_all_process_groups(pg_id='root')
File "/home/sam/Documents/freenet/nifi-automation/venv/lib/python3.6/site-packages/nipyapi/canvas.py", line 178, in list_all_process_groups
root_flow = recurse_flow(pg_id)
File "/home/sam/Documents/freenet/nifi-automation/venv/lib/python3.6/site-packages/nipyapi/canvas.py", line 64, in recurse_flow
return _walk_flow(get_flow(pg_id))
File "/home/sam/Documents/freenet/nifi-automation/venv/lib/python3.6/site-packages/nipyapi/canvas.py", line 85, in get_flow
raise ValueError(err.body)
ValueError: No applicable policies could be found. Contact the system administrator.
Process finished with exit code 1
У меня есть несколько сценариев автоматизации NIFI, которые прекрасно работают, когда я работаю на незащищенном кластере (localhost/ или somehwere), но я получаю эту ошибку, когда я запускаю URL, который находится за шлюзом KNOX. Я вижу несколько функций в классе nipyapi.access_api
- def knox_callback (** kwargs)
- def knox_callback_with_http_info (self, ** kwargs):
- def knox_request (self, ** kwargs):
- def knox_request_with_http_info (self, ** kwargs):
Я не могу понять, как можно или нужно использовать любую из них или в сочетании с любой другой функцией из класса? любая идея?
EDIT1: IM, использующий функции security.py, сначала - secure_login. В документах для его письменного входа в систему требуется безопасное соединение через https. Перед вызовом этого метода необходимо указать хост и настроить SSLContext (при необходимости). set_service_ssl_context эта функция служит цели, но я не уверен, нужно ли мне это или нет, так как для одностороннего TSL это не требуется.
Но у меня путаница. У меня есть два URL-адреса: один Knox URl с LDAP-логином, другой прямой URI(хотя он также перенаправляет на последовательность knox-Ldap). Когда я даю URL Knox, я получаю другую ошибку по сравнению с прямой.
из прямого URI я получаю
File /nipyapi/security.py", line 130, in service_login
username=username, password=password)
nipyapi.nifi.rest.ApiException: (409)
Reason: Conflict
HTTP response body: Username/Password login not supported by this NiFi.
И в случае Knox URI он выдает то же исключение ошибки подключения на тех же строках, но
nipyapi.nifi.rest.ApiException: (404)
Reason: Not Found
Так что я предполагаю, что я должен использовать прямой URL. во-вторых, почему он говорит, что пользователь не для. Я могу войти в систему вручную. из последовательности LDAP. Мой текущий запрос выполняется как анонимный пользователь, поэтому я собираюсь использовать Certs и попробовать функцию set_service_ssl_context с файлами PEM.
Кстати, ниже приведены два URL.
"nifi_host": "https: //****.****.net: 8443 / nifi-api", ПРЯМОЙ URL
"nifi_host": "https: //****-****.****.net: 8443 / gateway / **** - sso / nifi-api", URL-адрес knox
РЕДАКТИРОВАТЬ 2: мой запрос поступает на сервер как анонимный даже с использованием следующего кода.
nipyapi.security.set_service_ssl_context(service='nifi', ca_file=None, client_cert_file="bi.keystore", client_key_file=None, client_key_password="infraop6043")
nipyapi.security.service_login(username='myuser', password='mypass')
здесь выдает ошибку соединения
nipyapi.nifi.AccessApi().create_access_token( username=username, password=password) И показать эту ошибку Тело HTTP-ответа: Имя пользователя / пароль не поддерживаются этим NiFi
Я не уверен, как правильно использовать set_service_ssl_context. Может быть, вместо bi.keystore мне следует попробовать напрямую использовать letsencrypt-root-ca: letsencrypt.org/certs/isrgrootx1.pem.txt или мои локальные системные сертификаты.
мой файл свойств для toolkit-cli был
* baseUrl = https://svc-hadoop-utilities-pre-c3-02.jamba.net:18443/
= хранилище ключей / дом /jread/ Nifi-инструментарий / bi.keystore
keystoreType = JKS
keystorePasswd = infraop6043
keyPasswd =
=/ хранилище доверенного USR / Lib / Java/ JRE / Библиотека / безопасность / cacerts
truststoreType = JKS
truststorePasswd = changeit
proxiedEntity = CN = bijobs.jamba.net *
1 ответ
У вас есть сообщение об ошибке "Не найдено подходящих политик. Обратитесь к системному администратору.' Обычно создается плагином Ranger, когда включена защита, а пользователь, с которым вы соединяетесь, не разрешен, я не видел, чтобы Knox производил его.
Можете ли вы подтвердить, что вы не включили Ranger без политик при включении Knox для NiFi, и это сообщение об ошибке вы получаете? Если вы посмотрите в nifi-app.log, я подозреваю, что вы увидите ту же самую ошибку, которая подсказывает мне, что NiPyAPi просто передает ошибку, которую генерирует NiFi из-за неполной настройки безопасности.