Jenseits von Firewalls: Wie Basic Auth Ihre SolrCloud schützen kann
Curl Basic Auth und die zkCLI
Wenn Sie Apache SolrCloud verwenden, sollten Sie sich nicht nur auf Firewalls verlassen, um sowohl Zookeeper als auch die Solr Admin UI von der Außenwelt abzuschirmen. Firewall-Regeln sind einfach kein ausreichender Weg, um einen SolrCloud-Cluster zu sichern, denn Firewall-Regeln ändern sich oft aus den unterschiedlichsten Gründen. Und das sind in der Regel keine guten Gründe. Zum Beispiel, wenn Administratoren aus unterschiedlichen Gruppen Ports öffnen, die zuvor geschlossen waren, weil entweder eine neue Anwendung (oder ein neues Perimeter Defense System zur Verwaltung dieser Regeln) online gegangen ist.
Der andere Grund, warum Firewall-Regeln einfach nicht ausreichen, ist, dass die Person, die SolrCloud ausschalten möchte, möglicherweise in Ihr Netzwerk. Der richtige Ansatz zur Absicherung eines SolrCloud-Clusters ist die Implementierung eines der vielen Authentifizierungs-Plugins, die in Open Source zur Absicherung von Solr verfügbar sind, zusätzlich zur Netzwerkabwehr.
Sichern mit Basisauthentifizierung
Der einfachste Weg zur Sicherung Ihres SolrCloud-Clusters ist das Basic Authentication Plugin, auch bekannt als Basic Auth, aber es hat einige Tücken. In der Tat, herkömmliche Weisheit ist, dass die Basisauthentifizierung nicht sicher ist, da die Anmeldeinformationen im Klartext gesendet werden und anfällig für Paketschnüffelei sein können. Wenn diese Verbindung jedoch mit TLS/SSL gesichert ist, ist sie genauso sicher wie andere Methoden, die Verschlüsselung verwenden.
In diesem Blogbeitrag zu meinem Vortrag auf der Activate 2019, der Konferenz für Suche und KI, stelle ich eine rückwärtsgerichteteinkompatible Änderung vor, die ich an Solr 9 vorgenommen habe, um Basic Auth noch sicherer zu machen – und was das für Ihre Benutzer bedeutet.
Basic Auth wird, wie die Kerberos- und JWT-Plugins, in der Datei security.json konfiguriert. Diese Datei wird wie die meisten Konfigurationsdateien in der SolrCloud-Welt in Zookeeper gespeichert. Die Datei informiert SolrCloud darüber, welche Authentifizierungsklasse aufgerufen werden soll, wer welche Berechtigungen hat und ob die in der Datei definierte Authentifizierung tatsächlich erzwungen werden soll oder nicht.
Das stimmt, selbst wenn Sie das Basic Auth Plugin „aktivieren“, indem Sie einfach die Klasse zur security.json hinzufügen, wird die Authentifizierung in Versionen vor der unveröffentlichten Version 9.0, zu der ich den Beitrag geleistet habe, nicht aufgerufen, bis Sie den Parameter „blockUnknown“ hinzufügen und auf „true“ setzen , da dieser Parameter standardmäßig auf „false“ steht. Die meisten Benutzer setzen den Parameter entsprechend, aber lassen Sie uns in die Anatomie der Datei eintauchen, um sicherzustellen, dass Sie ihn in Ihrem Cluster korrekt einrichten.
Eine vollständig gebackene und unautorisierte Benutzer sperrende security.json sieht so aus, wenn BasicAuth aktiviert ist:
{
"authentication":{
"blockUnknown”:true,
"class":"solr.BasicAuthPlugin",
"credentials":{
"solr":"orwp2Ghgj39lmnrZOTm7Qtre1VqHFDfwAEzr0ApbN3Y=
Ju5osoAqOX8iafhWpPP01E5P+sg8tK8tHON7rCYZRRw="
}
},
"authorization":{
"class":"solr.RuleBasedAuthorizationPlugin",
"user-role":{
"solr":"admin"
},
"permissions":[
{
"name":"security-edit",
"role":"admin"
}
]
}
}
Curl Basic Auth und die zkCLI
Um schnell zu testen, ob Sie die Sicherheit aktiviert haben, können Sie Folgendes ausführen:
curl http://localhost:8983/solr/admin/authentication
curl http://localhost:8983/solr/admin/authorization
Um eine security.json-Datei in Zookeeper anzulegen, verwenden Sie die Zookeeper CLI (ZKcli):
server/scripts/cloud-scripts/zkcli.sh -zkhost localhost:9983 -cmd putfile /security.json security.json
Wenn Sie in Solr 9 Basic Auth aktiviert haben, aber keine Benutzer konfiguriert haben, gibt Solr einen Serverfehler zurück, da alle nicht authentifizierten Anfragen an die API blockiert werden. Dies unterbricht den Arbeitsablauf einiger Entwickler, die daran gewöhnt waren, nach der ersten Aktivierung des Plugins Benutzer für Basic Auth einzurichten.
Die meisten fortgeschrittenen Benutzer werden sagen, dass ein SSH-Tunnel zu den Solr-Verwaltungsfunktionen der beste Weg ist, um in der Entwicklungsphase produktiv zu sein. Ich stimme ihnen zu. Für viele Benutzer ist das jedoch nicht einmal eine Option. Für andere ist es ein Overkill. Die Basisauthentifizierung wurde genau als das konzipiert, was sie ist: „einfach“. Auf diese Weise schützt es vielleicht einige der am meisten gefährdeten Benutzer im Internet. Deshalb habe ich es besser gemacht.
Hier ist ein Link zum JIRA: https://issues.apache.org/jira/browse/SOLR-1364
Und
Hier ist ein Video von meinem Vortrag bei Activate:
Hier finden Sie ein Video, das Ihnen zeigt, wie Sie Basic Auth in sieben Minuten einrichten können: