Как установить пароль администратора Apache Solr

Я не очень хорошо знаком с solr. Я успешно установил solr. Он использует веб-сервер причала. Моя версия Solr - 4.10.3. Страница администратора не защищена паролем. Любой может получить к нему доступ. Я хочу применить paaword к solr admin. Как я это сделаю?


person Hafiz Muhammad Shafiq    schedule 20.01.2015    source источник


Ответы (6)


Для версии ниже 5

Если вы используете solr-webapp, вам нужно изменить файл web.xml и добавить следующие строки:

<security-constraint>
    <web-resource-collection>
      <web-resource-name>Solr Lockdown</web-resource-name>
      <url-pattern>/</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>solr_admin</role-name>
      <role-name>admin</role-name>
    </auth-constraint>
  </security-constraint>
  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Solr</realm-name>
  </login-config> 

Для сервера Jetty вам необходимо добавить следующие строки в /example/etc/webdefault.xml

<security-constraint>
    <web-resource-collection>
      <web-resource-name>Solr authenticated application</web-resource-name>
      <url-pattern>/</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>**admin-role**</role-name>
    </auth-constraint>
  </security-constraint>

  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Test Realm</realm-name>
  </login-config>

Обновите файл /example/etc/jetty.xml

<Call name="addBean">
      <Arg>
        <New class="org.eclipse.jetty.security.HashLoginService">
          <Set name="name">Test Realm</Set>
          <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
          <Set name="refreshInterval">0</Set>
        </New>
      </Arg>
    </Call>

/example/etc/realm.properties :

admin: s3cr3t, admin-role

Имя пользователя = admin пароль = s3cr3t. Имя роли = роль администратора

Solr версии 5+

В последней версии Solr изменилась структура папок. Вы найдете все файлы в пути к папке ниже.

{SOLR_HOME}/сервер/etc/jetty.xml {SOLR_HOME}/сервер/etc/webdefault.xml

Создайте новый файл учетных данных в {SOLR_HOME}/server/etc/realm.properties:

admin: s3cr3t, admin-role

Для получения дополнительной информации вы можете помочь solr вики-документам

person ManojP    schedule 20.01.2015
comment
Я использую причал. Я следую вашим инструкциям, но это не сработало для моего случая - person Hafiz Muhammad Shafiq; 21.01.2015
comment
Я обновил ответ, попробуйте внести соответствующие изменения и дайте мне знать, если это сработает. Это работает для меня. обновленный URL-адрес ‹url-pattern›/‹/url-pattern›. - person ManojP; 21.01.2015
comment
Я думаю, что может сбивать с толку то, что единственный текст, который вам нужно добавить в realm.properties, это admin: s3cr3t, admin-role. Я пытался добавить всю строку, потому что я нуб. - person LandonC; 10.06.2015
comment
LandonC Я обновил строку для администратора и s3cr3t - person ManojP; 24.06.2015
comment
Привет, Маной! В ‹role-name›core1-role‹/role-name› вы упомянули core1-role и int realm.properties роль администратора. Будет ли это работать? - person Muzy; 14.03.2016
comment
Это работает, администратор теперь защищен, но конечные точки REST (такие как example.com:8983/solr/mycore/select?q=*%3A*&wt=json&indent=true) теперь проходят аутентификацию. Как я могу просто защитить веб-интерфейс администратора, но оставить конечные точки REST без аутентификации? - person capooti; 29.04.2016
comment
В solr 5 нет папки etc в /opt/solr или ее подкаталогах. Подскажите пожалуйста решение для Solr 5 - person Ankit; 04.05.2016
comment
@Ankit Вы можете проверить каталог папок ниже и соответствующим образом обновить детали. /opt/solr/сервер/etc/jetty.xml - person ManojP; 25.05.2016
comment
Вы должны заменить core1-role на admin-role в webdefault.xml - person seyfe; 13.12.2016
comment
Я выполнил те же действия, и когда я пытаюсь войти в систему, я получаю эту ошибку. Проблема с доступом к /solr/. Причина: !role Кто-нибудь может помочь, пожалуйста - person Uppi; 17.03.2017
comment
Это сработало для меня. Но вместо изменения webdefault.xml я внес все изменения в путь, по которому запускается solr. /opt/solr/server/solr-webapp/webapp/WEB-INF/web.xmл, /opt/solr/server/etc/jetty.xml и /opt/solr/server/etc/realm.properties. Спасибо, вы спасли мой день. - person Krishna Rani Sahoo; 12.07.2017
comment
Если не работает, создайте файл кредитов в /opt/solr-6.6.2/server/etc/realm.properties. - person Kiran; 13.02.2018
comment
@capooti, ​​вы нашли какое-нибудь решение для упомянутого вами варианта использования? Я хочу реализовать то же самое - person Muthu Prasanth; 17.01.2019
comment
@MuthuPrasanth Теперь я использую nginx, и он правильно работает с использованием auth_basic и auth_basic_user_file. - person capooti; 18.01.2019
comment
будет ли это работать для solr7.4.0, потому что после добавления всех вышеперечисленных свойств мой solr не запускается - person Arvind Katte; 24.01.2019

Включить аутентификацию в solr admin, работающем с solr 6.1 и jetty

Предварительное условие:

  1. Солер версии 6.1

  2. Solr успешно работает в системе

  3. Solr Admin работает через пристань

Обработать:

<сильный>1. Изменить файл jetty.xml

Отредактируйте файл «server/etc/jetty.xml». Добавьте следующее перед окончанием тега Configure.

<Call name="addBean">
      <Arg>
        <New class="org.eclipse.jetty.security.HashLoginService">
          <Set name="name">Test Realm</Set>
          <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
          <Set name="refreshInterval">0</Set>
        </New>
      </Arg>
    </Call>

<сильный>2. Изменить файл webdefault.xml

Отредактируйте файл «server/etc/webdefault.xml». Добавьте следующее перед тем, как тег web-app заканчивается.

<security-constraint>
    <web-resource-collection>
      <web-resource-name>Solr authenticated application</web-resource-name>
      <url-pattern>/</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>core1-role</role-name>
    </auth-constraint>
  </security-constraint>

  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Test Realm</realm-name>
  </login-config>

Особое примечание:

Значение, используемое в теге role-name, должно быть таким же, как и в файле realm.properties.

<сильный>3. Создайте новый файл «realm.properties»

Создайте файл с именем «realm.properties» в папке «server/etc/» и поместите нижеследующее содержимое.

admin: admin123,core1-role

Имя пользователя: admin

Пароль: admin123

Название роли: core1-role

(Это должно совпадать с именем, используемым в теге role-name в файле server/etc/webdefault.xml)

<сильный>4. Заключительный шаг

Перезапустите Solr-сервер

Теперь войдите в Solr в своем браузере http://localhost:8983/solr/. обнаружит, что браузер запрашивает username и password. Введите username и password.

введите описание изображения здесь

person Community    schedule 03.09.2016
comment
Для чего нужны первые два шага? - person ziyuang; 28.06.2017
comment
Также допускается хеширование пароля - admin: MD5:‹yourhashedpassword›,‹role› - person David Vartanian; 21.11.2017
comment
Можно ли внести эту аутентификацию в белый список для определенного диапазона IP-адресов? - person Jerald Sabu M; 13.02.2018
comment
Если это не работает, создайте файл кредитов в /opt/solr-6.6.2/server/etc/realm.properties. - person Kiran; 13.02.2018
comment
Не работает, страница (после перезапуска сервера), показывает ошибку 503 Сервис недоступен (версия 7.4.0) - person Rosamunda; 24.12.2018
comment
Это также кажется неработающим в Solr 8.1.1 — система не запускается с изменениями, показанными выше. - person Valerie R; 12.07.2019

Если вы используете tomcat,

Open [Tomcat install dir]\tomcat-users.xml for editing.

Добавьте следующие строки в элемент <tomcat-user> и сохраните изменения (используя свое имя пользователя и пароль):

<role rolename="solr_admin"/><user username="your_username"  password="your_password"  roles="solr_admin"/>

Откройте Tomcat install dir\webapps\solr\WEB-INF\web.xml для редактирования. «solr» в пути — это имя экземпляра, который вы хотите защитить. Обычно это «solr», но может быть и другим, если вы используете расширенную настройку. Добавьте следующие строки в элемент <web-app>:

<security-constraint>
<web-resource-collection>
  <web-resource-name>Solr Lockdown</web-resource-name>
  <url-pattern>/</url-pattern>
</web-resource-collection>
<auth-constraint>
  <role-name>solr_admin</role-name>
  <role-name>admin</role-name>
</auth-constraint>
</security-constraint>


<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Solr</realm-name></login-config>

Сохраните изменения и перезапустите Tomcat. Проверьте свои изменения, запустив новый сеанс браузера и перейдя на свой сайт, например. http://localhost:8080/solr/ Вам будет предложено ввести учетные данные.

Если ваш файл каталога установки Tomcat tomcat-users.xml изменяется, перейдите к файлу tomcat-users.xml в разделе «Серверы» в Project Explorer и добавьте туда свои изменения.

person ThmHarsh    schedule 18.09.2015

Так как установка пароля для Solr — это заноза в заднице (извините, но какое-то время вам придется называть его как есть), я предлагаю другое решение: ограничить доступ к нему с помощью iptables.

Если вы устанавливаете сервер Apache Solr, обычно сервер будет прослушивать порт 8983. Следовательно, интерфейс администратора сервера будет доступен в:

http://YOUR_SERVERS_IP:8983/solr/

Таким образом, мы можем ограничить подключения к порту 8983 следующим образом:

iptables -A INPUT -p tcp -s localhost --dport 8983 -j ACCEPT
iptables -A INPUT -p tcp -s YOUR_SERVERS_IP --dport 8983 -j ACCEPT
iptables -A INPUT -p tcp --dport 8983 -j DROP

Это примет все запросы от локального хоста (первая строка) и от самого IP-адреса сервера (вторая строка), но отбросит все остальные соединения (последняя строка). Вторая строка необязательна, но помогает нам найти легкий доступ к административному интерфейсу Solr. Чтобы получить доступ к интерфейсу администратора с локальной машины, мы должны сначала перенаправить все соединения на сервер. Самый простой способ сделать это — использовать sshuttle (VPN для ленивых мужчин):

sshuttle --dns -r root@YOUR_SERVERS_IP 0/0

Выполнение этой команды на локальной машине, откуда мы хотим получить доступ к интерфейсу администратора. Другой вариант — использовать ssh туннелирование с открытым ssh-клиентом:

ssh -D 1080 root@YOUR_SERVERS_IP

Настройте прокси-сервер socks в своем браузере на порт 1080.

person user5950    schedule 18.01.2016
comment
Если я использую выше, то как он может работать с нашим веб-клиентом. Это сайт ajax - person Hafiz Muhammad Shafiq; 03.05.2016

Я тоже имею дело с Solr v.4.10, и это действительно раздражающе сложно. Ни одно из так называемых "решений" не работает для меня. В итоге я установил Nginx на свой компьютер с Ubuntu и проксировал порт: 8983 на докер, где Nginx требует пароль. Это работает для меня.

person user2752286    schedule 08.02.2016

Я должен просто сообщить, какое решение было в моем случае. На самом деле мой сайт был написан на ajax, поэтому установка пароля также защищает мой сайт. Так что это не решение в случае, когда solr должен использоваться в открытом Интернете. Таким образом, лучшим решением, согласно solr wiki, является использование прокси-серверов, таких как node.js, nginex и т. д. как указано здесь

Использование прокси-сервера node.js и применение правил iptable (как указано выше) решают мою проблему.

person Hafiz Muhammad Shafiq    schedule 16.05.2016