BIRT WebViewer und das Thema Sicherheit

Die Möglichkeiten BIRT in die eigene Anwendung zu integrieren sind vielfältig. Ein Standardszenario ist das ausliefern von BIRT Berichten über einen zentralen Server. Aus diesem Grund bietet das BIRT Projekt bereits eine vorgefertigte Webanwendung zum Download an über die Reports generiert werden können (BIRT WebViewer) und die wohl von vielen BIRT Nutzern auch produktiv eingesetzt wird.

Leider ist diese Webanwendung nur minimal konfiguriert wodurch schnell kritische Sicherheitslücken entstehen. Reports und Libraries werden standardmäßig im Hauptverzeichnis der Webanwendung hinterlegt.

WebViewer

Wird der WebViewer später auf einen Server deployed lässt sich durch Angabe eines URL-Parameters der gewünschte Bericht im gewünschten Ausgabeformat darstellen:

URL Parameter für Bericht

Unter der Annahme, dass der WebViewer in der Standardkonfiguration betrieben wird, lässt sich nun ein beliebiger Bericht vom Server anfordern, der ihn ohne Murren auch prompt ausliefert:

Download des Berichts

Da der Bericht viele kritische Informationen enthalten kann (beispielsweise Zugangsdaten für Datenbankverbindungen) ist es notwendig den Zugriff auf diese Dateien zu unterbinden. Hierzu gibt es mehere Möglichkeiten:

1) Die kritischen Dateien werden unterhalb des WEB-INF Verzeichnis abgelegt. Da dieses Verzeichnis von Haus aus bereits vom ausführenden Container geschützt wird, kann auf Dateien die sich unterhalb von WEB-INF befinden von außen nicht zugegriffen werden.

2) Dem Container wird per Konfiguration mitgeteilt Report Dateien, Bibliotheken, jar- und log-Dateien aus dieser Anwendung nicht auszuliefern:
Hierzu wird der web.xml ein security constraint hinzugefügt, der das ausliefern der Dateien verhindert. Prinzipiell sind hier viele unterschiedlichen Methoden denkbar (sperren ganzer Verzeichnisse, einzelner Dateien, …) Folgender Codeschnippsel veranschaulicht wie über die web.xml das ausliefern jeglicher Dateien mit den Endungen .rptlibrary, .jar, .rptdesign und .properties verhindert werden kann

<security-constraint>
        <display-name>Restrict access on BIRT related files</display-name>
        <web-resource-collection>
            <web-resource-name>BIRT Report</web-resource-name>
            <url-pattern>*.rptdesign</url-pattern>
            <url-pattern>*.rptlibrary</url-pattern>
            <url-pattern>*.rptdocument</url-pattern>
            <url-pattern>*.jar</url-pattern>
            <url-pattern>*.properties</url-pattern>
        </web-resource-collection>
        <auth-constraint />
</security-constraint>

Zu beachten ist, dass der Container nun keine Dateien mehr mit diesen Endungen ausliefern wird, was je nachdem welche Funktionalität der Anwendung hinzugefügt wurde, unerwünscht sein kann. Evtl. ist es deshalb sinnvoll nur Zugriffe auf bestimmte Verzeichnisse (in denen kritische Dateien liegen) verhindert werden. Dies kann durch Anpassung des url patterns auf ein Verzeichnis geschehen.

Short URL for this post: http://wp.me/p4nxik-Ig
This entry was posted in Open Source BI, Security and tagged , , . Bookmark the permalink.

2 Responses to BIRT WebViewer und das Thema Sicherheit

  1. Pingback: BIRT WebViewer Sicherheit - Lesetipp | Actuate LIVE Blog

  2. straumix says:

    Alternativ ist folgendes möglich.
    In der web.xml werden die Verzeichnisse, die die Reporte enthalten auf ein Verzeichnis ausserhalb der Webapplikation gelegt. Dadurch kann die aktuelle Webapplikation nicht mehr auf diese Verzeichnisse mit GET zugreifen. Lediglich der BIRT Engine liest die Verzeichnisse, somit ist der einfache Zugriff auf die Reporte nicht mehr möglich.
    Durch einführen von Mandantenverzeichnissen, kann man die unterschiedlichen Reportdesigns sehr leicht trennen.

Leave a Reply