2015-11-17 13 views
12

Sono abbastanza nuovo per Solr e ho cercato questo per il giorno passato e metà e finalmente girando qui.Come posso proteggere Solr 5.3.1 solo le pagine di amministrazione

Ho un server Solr installato e funzionante e ho avuto il mio amministratore di rete configurare una regola nel firewall in modo che possiamo accedervi per le query dalla mia applicazione JavaScript. Questo funziona. Il problema che ho è che le pagine di amministrazione di Solr sono completamente aperte al mondo e ho provato tutto come descritto in vari post con l'eccezione del metodo ZooKeeper che non voglio provare coz Non mi interessa l'impostazione su ZooKeeper e SolrCloud.

postale

Riferimento: http://muddyazian.blogspot.com/2013/11/how-to-require-password-authentication.html e alcuni altri

Quello che feci fu modificare jetty.xml in /opt/solr/server/etc e ha aggiunto questa

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

Poi ho aggiunto web.xml in /opt/solr/server/solr-webapp/webapp/WEB-INF la configurazione sotto

<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-name> 
    </auth-constraint> 
    </security-constraint> 

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

    </login-config> 

Poi ho creato un file realm.properties hash della password in base a questo post Jetty/SOLR Admin Panel Password

Solr è ora sicuro, ma tutto è protetto, voglio le mie domande siano aperte e il resto protetto da password. Ho provato ad aggiungere diversi pattern di URL come/admin/*,/mycollection/dataimport/* etc, ma nessuno di questi sembra influenzare il fatto che la query sia anche sicura. Riferimento https://gist.github.com/jstrassburg/9777027

+0

Mi sono imbattuto in questo io stesso. A partire dal 5.4, sono state aggiunte alcune funzionalità di sicurezza basate sui ruoli e sono riuscito a bloccare letture e aggiornamenti utilizzando le regole come descritto [qui] (https://cwiki.apache.org/confluence/display/solr/ basata su regole + Autorizzazione + Plugin). Tuttavia, lo stesso pannello di amministrazione è ancora aperto. Tutto ciò che vogliamo fare è richiedere l'autenticazione di base per accedere a qualsiasi cosa in Solr 5. –

+0

Vedere anche: http://stackoverflow.com/questions/33263535/ –

+0

Aha. Poco dopo aver pubblicato il bounty, vedo che [questa risposta] (http://stackoverflow.com/a/34348204/27614) in realtà ha una soluzione, ma funziona solo con SolrCloud. Solr non supporta ancora l'autenticazione di base in modalità standalone. Presumo che abbiano un biglietto per questo in [l'APF JIRA] (https://issues.apache.org/jira/), ma non riesco a trovarlo. –

risposta

3

Seguendo il consiglio di Exclude a JSP from web.xml's security-contraint è possibile mantenere la configurazione così com'è, ma esporre gli endpoint che si desidera rendere disponibili al pubblico.

Così si potrebbe aggiungere un <security-constraint> come questo per il vostro web.xml, ma lasciare fuori il <auth-constraint> per il abbinato <url-pattern>. Questo lo renderà aperto al pubblico. Oltre all'autenticazione di base per il resto dell'istanza Solr, è possibile quindi visualizzare passo a passo i core oi gestori che devono essere pubblici.

<security-constraint> 
    <web-resource-collection> 
    <web-resource-name>mycollection</web-resource-name> 
    <url-pattern>/mycollection/*</url-pattern> 
    </web-resource-collection> 
</security-constraint> 

Un avvertimento di questo è che sarà necessario aggiungere nulla che sono pubbliche come un modello proprio URL. Ma questo può anche essere un vantaggio, dato che hai la possibilità di creare un controllo di accesso a grana fine per le collezioni - ad es. un utente per collezione.

+1

Funziona per me. Grazie! Speriamo che questa soluzione possa essere spiegata nei documenti Solr ad un certo punto, dal momento che stanno diventando sempre più attenti alla sicurezza e molte persone eseguono istanze non cloud solitarie. –

+0

Siete i benvenuti. Stiamo anche eseguendo un'istanza solista, non cloud :) – cheffe

Problemi correlati