Herausforderungen des Identity Management an Hochschulen · Passwort Management (5) Autorisierung...

Preview:

Citation preview

Manuel Haim - Hochschulrechenzentrum

Herausforderungen desIdentity Management an Hochschulen – Problemfeld Datenintegration –

Manuel Haim, HRZ Uni Marburg

10. DFN-Forum Kommunikationstechnologien,30.-31.05.2017 in Berlin

2Manuel Haim - Hochschulrechenzentrum

In diesem Vortrag...

1.Motivation→ Warum ist IDM für Hochschulen plötzlich so wichtig?

2.Anforderungen an IDM-Systeme→ Sind Hochschulen wirklich so „anders“ ?

3.Benutzerverwaltung→ Was wir bisher (falsch) gemacht haben

4.Weiterentwicklung zum IDM→ In vier einfachen Schritten zum Ziel

5.Erläuterungen und Fazit

3Manuel Haim - Hochschulrechenzentrum

1. Motivation

• Warum ist IDM für Hochschulen plötzlich so wichtig?

4Manuel Haim - Hochschulrechenzentrum

Ausgangsfrage:

Welche Personen gehören zur Philipps-Universität ?

5Manuel Haim - Hochschulrechenzentrum

Das klingt doch eigentlich ganz einfach...

Philipps-Universität Marburg:

• ca. 25.000 Studierende

• ca. 4.000 Mitarbeiter

… wo ist das Problem ?!

6Manuel Haim - Hochschulrechenzentrum

Tatsächlich gibt es viele weitere Personengruppen:

Lehrbeauftragte

DoktorandenHabilitanden

apl. Professoren

Gasthörer Schülerstudenten

Ehemalige (Alumni)

Personen in Abschlussprüfungen

Studierende anderer Hochschulen

Studierende der Archivschule

Bewohner des Studentenwohnheims

externe KursteilnehmerGäste im Gästehaus

Honorarprofessoren

Privatdozenten

Landesbedienstete am priv. Klinikum

Mitarbeiter Studentenwerk

Mitarbeiter von ca. 12 verbundenen Einrichtungen

Mitarbeiter externer Firmen

Stadt-/Landkreis-Nutzerinnen der Universitätsbibliothek

Teilnehmer Zertifikatsstudium

Kursteilnehmer Studienkolleg

Tagungsgäste

7Manuel Haim - Hochschulrechenzentrum

Tatsächlich gibt es viele weitere Personengruppen:

Lehrbeauftragte

DoktorandenHabilitanden

apl. Professoren

Gasthörer Schülerstudenten

Ehemalige (Alumni)

Personen in Abschlussprüfungen

Studierende anderer Hochschulen

Studierende der Archivschule

Bewohner des Studentenwohnheims

externe KursteilnehmerGäste im Gästehaus

Honorarprofessoren

Privatdozenten

Landesbedienstete am priv. Klinikum

Mitarbeiter Studentenwerk

Mitarbeiter von ca. 12 verbundenen Einrichtungen

Mitarbeiter externer Firmen

Stadt-/Landkreis-Nutzerinnen der Universitätsbibliothek

Teilnehmer Zertifikatsstudium

Kursteilnehmer Studienkolleg

Tagungsgäste

Bislang per E

xcel o

der Papierfo

rmular!

→ D

atenbank selte

n aktuell,

kaum vo

llständig

8Manuel Haim - Hochschulrechenzentrum

Motivationsfaktoren für IDM an der Uni Marburg

• Shibboleth-Login in der DFN-AAI-FöderationVoraussetzung: Zweifelsfreie Identifikation, Datenaktualität

• Integriertes Campus-Management (iCM)Zielgruppe: Alle an Studium und Lehre beteiligten Personen

• Forschungs-Informations-System (FIS)Zielgruppe: Alle an der Forschung beteiligten Personen

• Hochschulstatistikgesetz (HStatG)Ziel: Erhebung aller Doktoranden/-innen ab Berichtsjahr 2017

9Manuel Haim - Hochschulrechenzentrum

2. Anforderungen an IDM-Systeme

• Kann Standard-Software unsere Probleme lösen?

• Sind Hochschulen wirklich so „anders“ als Unternehmen?

10Manuel Haim - Hochschulrechenzentrum

Funktionale Anforderungen an IDM-Systeme(Uni Marburg, Erfahrungswerte)

(1) Zentrales Verzeichnis

(2) Datenintegration

(3) Datenabgleich

(4) Authentisierung bzw. Authentifizierung

(5) Autorisierung und Access Management

(6) Webportal

(7) Audit Logging

11Manuel Haim - Hochschulrechenzentrum

Funktionale Anforderungen an IDM-Systeme(Uni Marburg, Erfahrungswerte)

(1) Zentrales Verzeichnis→ gemeinsame, verlässliche Datenbasis→ z.B. Datenbank (SQL) oder Verzeichnisdienst (LDAP)→ für Personendaten und Accounts (Identity Mgmt., IDM)→ für weitere Objekte (Master Data Management, MDM)

(2) Datenintegration

(3) Datenabgleich

(4) Authentisierung bzw. Authentifizierung

(5) Autorisierung und Access Management

(6) Webportal

(7) Audit Logging

12Manuel Haim - Hochschulrechenzentrum

Funktionale Anforderungen an IDM-Systeme(Uni Marburg, Erfahrungswerte)

(1) Zentrales Verzeichnis

(2) Datenintegration→ Integration in Geschäftsprozesse und IT-Systeme→ entsprechende Konnektoren nötig→ Merke: erfordert Organisationsentwicklung und Mitwirkung

(3) Datenabgleich

(4) Authentisierung bzw. Authentifizierung

(5) Autorisierung und Access Management

(6) Webportal

(7) Audit Logging

13Manuel Haim - Hochschulrechenzentrum

Funktionale Anforderungen an IDM-Systeme(Uni Marburg, Erfahrungswerte)

(1) Zentrales Verzeichnis

(2) Datenintegration

(3) Datenabgleich→ Live Synchronization / Reconciliation / (De-)Provisioning→ z.B. Provisioning-Software, IDM-Software, MDM-Software→ Eigenentwicklung denkbar→ Merke: Regelwerk und Konnektoren nötig

(4) Authentisierung bzw. Authentifizierung

(5) Autorisierung und Access Management

(6) Webportal

(7) Audit Logging

14Manuel Haim - Hochschulrechenzentrum

Funktionale Anforderungen an IDM-Systeme(Uni Marburg, Erfahrungswerte)

(1) Zentrales Verzeichnis

(2) Datenintegration

(3) Datenabgleich

(4) Authentisierung bzw. Authentifizierung→ persönliche Zugangsdaten (Benutzername, Passwort)→ dieselben Zugangsdaten für alle Systeme, Single Sign-On→ zweiter Faktor für kritische Systeme (TAN, Token, App…)→ anwendungs-/gerätespezifische Passwörter (WLAN)

(5) Autorisierung und Access Management

(6) Webportal

(7) Audit Logging

15Manuel Haim - Hochschulrechenzentrum

Funktionale Anforderungen an IDM-Systeme(Uni Marburg, Erfahrungswerte)

(1) Zentrales Verzeichnis

(2) Datenintegration

(3) Datenabgleich

(4) Authentisierung bzw. Authentifizierung

(5) Autorisierung und Access Management→ Rollen und Rechte digital, ggf. automatisiert→ Übergangsfristen für Ausscheidende→ Anhäufung von Rechten vermeiden (Ablaufdatum)

(6) Webportal

(7) Audit Logging

16Manuel Haim - Hochschulrechenzentrum

Funktionale Anforderungen an IDM-Systeme(Uni Marburg, Erfahrungswerte)

(1) Zentrales Verzeichnis

(2) Datenintegration

(3) Datenabgleich

(4) Authentisierung bzw. Authentifizierung

(5) Autorisierung und Access Management

(6) Webportal→ User-Self-Service: Daten, Passwörter, E-Mail-Adressen...→ Administration dezentralisieren→ Interaktive Formulare / Workflow-Management

(7) Audit Logging

17Manuel Haim - Hochschulrechenzentrum

Funktionale Anforderungen an IDM-Systeme(Uni Marburg, Erfahrungswerte)

(1) Zentrales Verzeichnis

(2) Datenintegration

(3) Datenabgleich

(4) Authentisierung bzw. Authentifizierung

(5) Autorisierung und Access Management

(6) Webportal

(7) Audit Logging→ Änderungen an Account, Rollen u. Rechten protokollieren→ ggf. rechtssicher / digital signiert→ Protokoll zumindest für die Wirkdauer aufbewahren

18Manuel Haim - Hochschulrechenzentrum

Funktionale Anforderungen im Vergleich

*Steffen Hofmann: Architektur eines Identitätsmanagementsystems an einer Hochschule. Diplomarbeit, FernUniversität Hagen, 2007.https://www.zedat.fu-berlin.de/pub/ZEDAT/FUDIS/Home/Architektur_eines_Identitaetsmanagementsystems_an_einer_Hochschule.pdf

Uni Marburg Allgemein für IDM-Systeme*

(1) Zentrales Verzeichnis Informationsspeicher

(2) Datenintegration Datenintegration

(3) Datenabgleich Provisioning

(4) Authentisierung bzw. Authentifizierung

Authentifizierung,Passwort Management

(5) Autorisierung und Access Management

Autorisierung

(6) Webportal User Self-Service,(De-)Zentrale Administration,Workflow Management

(7) Audit Logging Auditing

– Monitoring, Reporting

19Manuel Haim - Hochschulrechenzentrum

Funktionale Anforderungen im Vergleich

*Steffen Hofmann: Architektur eines Identitätsmanagementsystems an einer Hochschule. Diplomarbeit, FernUniversität Hagen, 2007.https://www.zedat.fu-berlin.de/pub/ZEDAT/FUDIS/Home/Architektur_eines_Identitaetsmanagementsystems_an_einer_Hochschule.pdf

Uni Marburg Allgemein für IDM-Systeme*

(1) Zentrales Verzeichnis Informationsspeicher

(2) Datenintegration Datenintegration

(3) Datenabgleich Provisioning

(4) Authentisierung bzw. Authentifizierung

Authentifizierung,Passwort Management

(5) Autorisierung und Access Management

Autorisierung

(6) Webportal User Self-Service,(De-)Zentrale Administration,Workflow Management

(7) Audit Logging Auditing

– Monitoring, Reporting

Deckt s

ich m

it unse

ren Anforderungen!

→ U

nsere Probleme si

nd softw

areunabhängig.

20Manuel Haim - Hochschulrechenzentrum

Eigentliche Herausforderung:Datenintegration erfordert Gespräche mit vielen beteiligten Stellen:

Gruppe Verantwortl. Stelle Ereignis System

Studierende Studi.-Sekretariat Immatrikulation HISinOne

Gasthörer/innen Studi.-Sekretariat Annahme unbekannt

Professoren/-innen Personalabteilung Einstellung / Verbeamtung SAP

Mitarbeiter/-innen Personalabteilung Einstellung / Verbeamtung SAP

Landesbedienstetes Klinikums-Personal

Personalabteilung Klinikum

Einstellung / Verbeamtung Klinikums-SAP

apl. Professoren/-innen Senat Titelverleihung unbekannt

Honorarprofessoren/-innen Senat Titelverleihung unbekannt

Privatdozenten/-innen jew. Dekanat Titelverleihung unbekannt

Lehrbeauftragte jew. Dekanat Erteilung Lehrauftrag unbekannt

Doktoranden/-innen jew. Dekanat Annahme unbekannt

Dekane/-innen jew. Fachbereichsrat Wahl unbekannt

Fachbereichsbeauftragte jew. Dekanat Benennung unbekannt

Gästehaus-Bewohner/innen Gästehaus-Verwaltg. Voranmeldung unbekannt

Stadt-/Landkreisnutzer/innen Uni-Bibliothek Beantragung Leseausweis PICA

...

21Manuel Haim - Hochschulrechenzentrum

Eigentliche Herausforderung:Datenintegration erfordert Gespräche mit vielen beteiligten Stellen:

Gruppe Verantwortl. Stelle Ereignis System

Studierende Studi.-Sekretariat Immatrikulation HISinOne

Gasthörer/innen Studi.-Sekretariat Annahme unbekannt

Professoren/-innen Personalabteilung Einstellung / Verbeamtung SAP

Mitarbeiter/-innen Personalabteilung Einstellung / Verbeamtung SAP

Landesbedienstetes Klinikums-Personal

Personalabteilung Klinikum

Einstellung / Verbeamtung Klinikums-SAP

apl. Professoren/-innen Senat Titelverleihung unbekannt

Honorarprofessoren/-innen Senat Titelverleihung unbekannt

Privatdozenten/-innen jew. Dekanat Titelverleihung unbekannt

Lehrbeauftragte jew. Dekanat Erteilung Lehrauftrag unbekannt

Doktoranden/-innen jew. Dekanat Annahme unbekannt

Dekane/-innen jew. Fachbereichsrat Wahl unbekannt

Fachbereichsbeauftragte jew. Dekanat Benennung unbekannt

Gästehaus-Bew. Gästehaus-Verw. Voranmeldung unbekannt

Stadt-/Landkreisnutzer/innen Uni-Bibliothek Beantragung Leseausweis PICA

...

Organisatorisches Problem:

→ zahlreiche Datenquellen

Verantwortliche Stellen einbinden!

→ unterschiedliche Datenqualität

Daten aktuell? Bedeutung eindeutig?

Ausweis kontrolliert? Name vollständig?

Mitarbeiter geschult? Tippfehler möglich?

→ Dubletten möglich

Vor dem Zusammenführen unbedingt auf

Datenqualität achten (Selbstregistrierung?)

22Manuel Haim - Hochschulrechenzentrum

Nicht-funktionale Anforderungen an IDM-Systeme(Uni Marburg, Erfahrungswerte)

• Datenschutz→ Verfahrensverzeichnis notwendig (Zweckbindung der Daten!)→ Personalrat einbinden→ Aufbewahrungs- und Löschfristen definieren und einhalten→ Benutzernamen und E-Mail-Adressen wiedervergeben?

• Randbedingungen→ laufende Kosten decken (Betrieb, Anpassung, Wartung)→ Lizenzmodelle und Lizenzverlängerungen kritisch prüfen→ Flexibilität gewährleisten (zeitnahe Anpassungen)

23Manuel Haim - Hochschulrechenzentrum

3. Bisherige Benutzerverwaltung

• Was wir bisher (falsch) gemacht haben

24Manuel Haim - Hochschulrechenzentrum

25Manuel Haim - Hochschulrechenzentrum

4035

83472495

425

1382

60

36438

665

974303

Professoren u. Mitarbeiter (Universität)

Professoren u. Mitarbeiter (Klinikum)

Lehrbeauftragte mit Lehrauftrag

apl. Professoren ohne Vertrag

Doktoranden ohne Vertrag

Sonstige ohne Vertrag

Gäste im Gästehaus

Mitarbeiter An-Instituteu. Partner-Einrichtungen

Mitarbeiter externer Firmen

Funktionsbezogene Zugänge

Selbstverwaltete Gastzugänge

Professoren u. Mitarbeiter (Uni) i.R.

240101218

5459322751123

1000

3922

Studierende (abzgl. Promotion + Sprachkurse)

Promotions-Studierende

Teilnehmer studiumsvorber. Sprachkurse

Gasthörer

Teilnehmer Sonderprogramme(z.B. Zertifikatsstudium,Stipendiaten d. Fulbright-Kommission,Internationale Sommer-Universität)

Studentische Gruppen(z.B. AStA, Fachschaften, Uni-Chor)

Gäste(z.B. externe Kursteilnehmer,nicht-immatr. Wohnheimsbewohner,Studierende d. Archivschule)

Kurzfristige Gastzugänge

Kürzlich Ausgeschiedene u. Zurückgetretene

Die Philipps-Universität Marburg im SoSe 2017

„Studierende“

• ca. 31.189 Identitäten (davon 1.051 Nicht-Personen)

• ebensoviele Accounts

„Mitarbeiter“

• ca. 9.874 Identitäten (davon 1.639 Nicht-Personen)

• nur ca. 8.803 Accounts (nicht alle Pers. haben Acc.)

834699

26Manuel Haim - Hochschulrechenzentrum

Probleme der bisherigen Benutzerverwaltung

• Personenstatus/Rolle ist am Staff-Account nicht ablesbar (Account wird aus verschiedenen Gründen verlängert)

• Personen häufen außerdem Personeneinträge an

27Manuel Haim - Hochschulrechenzentrum

4. Weiterentwicklung zum IDM

• In vier einfachen Schritten zum Ziel

28Manuel Haim - Hochschulrechenzentrum

(1) Durchgängige Erfassung der Personendaten aller an der Universität tätigen Personengruppen(dezentral durch geeignete Stellen, in geeigneten Systemen)

• Detaillierte Aufstellung aller zu erfassenden Personengruppen→ Studierende, Mitarbeiter, ca. 35 weitere

• Gespräche mit den Betreibern der bestehenden datenführenden Systeme→ Datenqualität, Pflegeprozesse, Bedeutung der Quelldaten

• Ausgestaltung der elektronischen Erfassungs- und Meldeverfahren→ Datenpflege in vorhandenen Systemen oder eigener Datenbank

29Manuel Haim - Hochschulrechenzentrum

Neue Benutzerverwaltungs-Weboberfläche (AngularJS, Bootstrap CSS, Flask)

30Manuel Haim - Hochschulrechenzentrum

(2) Konsolidierung der Personendatenund zeitlich beschränkten Teil-Identitätenin einer zentralen Datenbank des Hochschulrechenzentrums

• Teil-Identitäten, d.h. Datensätze aus den Datenquellen werden als (Schatten-)Kopien dauerhaft vorgehalten

• Identität wird separat angelegt und mit Teil-Identitäten verknüpft→ möglichst nur eine Identität pro natürlicher Person

Teil-Identität

31Manuel Haim - Hochschulrechenzentrum

Werkzeug zum Datenabgleich: CALYPSO(hier: sync-Algorithmus)

Quelle Ziel

Action:

Quelle:Manuel Haim: CALYPSO – ein Python-Skript zum generischen Datenabgleich,https://www.zki.de/fileadmin/zki/Arbeitskreise/VD/Protokolle/2016-09-12/calypso-unimr.pdf

Situation:

32Manuel Haim - Hochschulrechenzentrum

Werkzeug zum Datenabgleich: CALYPSO(hier: sync-Algorithmus)

Quelle Ziel

„absent“

Action:

Quelle:Manuel Haim: CALYPSO – ein Python-Skript zum generischen Datenabgleich,https://www.zki.de/fileadmin/zki/Arbeitskreise/VD/Protokolle/2016-09-12/calypso-unimr.pdf

Situation:

33Manuel Haim - Hochschulrechenzentrum

Werkzeug zum Datenabgleich: CALYPSO(hier: sync-Algorithmus)

Quelle Ziel

„absent“ „create“

Action: z.B.

*

Quelle:Manuel Haim: CALYPSO – ein Python-Skript zum generischen Datenabgleich,https://www.zki.de/fileadmin/zki/Arbeitskreise/VD/Protokolle/2016-09-12/calypso-unimr.pdf

Situation:

34Manuel Haim - Hochschulrechenzentrum

Werkzeug zum Datenabgleich: CALYPSO(hier: sync-Algorithmus)

Quelle Ziel

„absent“

„found“

„create“

Action: z.B.

*

Quelle:Manuel Haim: CALYPSO – ein Python-Skript zum generischen Datenabgleich,https://www.zki.de/fileadmin/zki/Arbeitskreise/VD/Protokolle/2016-09-12/calypso-unimr.pdf

Situation:

35Manuel Haim - Hochschulrechenzentrum

Werkzeug zum Datenabgleich: CALYPSO(hier: sync-Algorithmus)

Quelle Ziel

„absent“

„found“

„create“

„update“

Action: z.B.

*←

Quelle:Manuel Haim: CALYPSO – ein Python-Skript zum generischen Datenabgleich,https://www.zki.de/fileadmin/zki/Arbeitskreise/VD/Protokolle/2016-09-12/calypso-unimr.pdf

Situation:

36Manuel Haim - Hochschulrechenzentrum

Werkzeug zum Datenabgleich: CALYPSO(hier: sync-Algorithmus)

Quelle Ziel

„absent“

„found“

„ambiguous“

„create“

„update“

Action: z.B.

*←

Quelle:Manuel Haim: CALYPSO – ein Python-Skript zum generischen Datenabgleich,https://www.zki.de/fileadmin/zki/Arbeitskreise/VD/Protokolle/2016-09-12/calypso-unimr.pdf

Situation:

37Manuel Haim - Hochschulrechenzentrum

Werkzeug zum Datenabgleich: CALYPSO(hier: sync-Algorithmus)

Quelle Ziel

„absent“

„found“

„ambiguous“

„create“

„update“

„ignore“

Action: z.B.

*←

Quelle:Manuel Haim: CALYPSO – ein Python-Skript zum generischen Datenabgleich,https://www.zki.de/fileadmin/zki/Arbeitskreise/VD/Protokolle/2016-09-12/calypso-unimr.pdf

Situation:

38Manuel Haim - Hochschulrechenzentrum

Werkzeug zum Datenabgleich: CALYPSO(hier: sync-Algorithmus)

Quelle Ziel

„absent“

„found“

„ambiguous“

„source missing“

„create“

„update“

„ignore“

Action: z.B.

*←

Quelle:Manuel Haim: CALYPSO – ein Python-Skript zum generischen Datenabgleich,https://www.zki.de/fileadmin/zki/Arbeitskreise/VD/Protokolle/2016-09-12/calypso-unimr.pdf

Situation:

39Manuel Haim - Hochschulrechenzentrum

Werkzeug zum Datenabgleich: CALYPSO(hier: sync-Algorithmus)

Quelle Ziel

„absent“

„found“

„ambiguous“

„source missing“

„create“

„update“

„ignore“

„delete“

Action: z.B.

X

*←

Quelle:Manuel Haim: CALYPSO – ein Python-Skript zum generischen Datenabgleich,https://www.zki.de/fileadmin/zki/Arbeitskreise/VD/Protokolle/2016-09-12/calypso-unimr.pdf

Situation:

40Manuel Haim - Hochschulrechenzentrum

(3) Automatisierte Ableitung vonAccountlaufzeit, Rollen und Rechten

• Rechtliche Zugangsvoraussetzungenfür einzelne Dienste klären→ z.B. eduroam-WLAN, DFN-Internet, Literatur, DFN-AAI

• Datenquellen-Rollen-Rechte-Modell aufstellen→ wer darf was?

• Accountlaufzeit, Rollen und Rechte regelm. berechnen→ z.B. mit CALYPSO (merge-Algorithmus)

41Manuel Haim - Hochschulrechenzentrum

Vereinigung von Objekten (Merge)

Quelle Ziel

(Zweck: Zusammenführen von Attributen – z.B. Namen, Berechtigungen...)

42Manuel Haim - Hochschulrechenzentrum

Vereinigung von Objekten (Merge)

Quelle Ziel

„found“

Schritt 1: Ausgehend vom Quellobjekt das Zielobjekt suchen

43Manuel Haim - Hochschulrechenzentrum

Vereinigung von Objekten (Merge)

Quelle Ziel

Schritt 2: Ausgehend vom Zielobjekt passende Quellobjekte suchen

44Manuel Haim - Hochschulrechenzentrum

Vereinigung von Objekten (Merge)

Quelle Ziel

Schritt 3: Über eigene Merge-Funktion die Zielattribute berechnen

45Manuel Haim - Hochschulrechenzentrum

Vereinigung von Objekten (Merge)

Quelle Ziel

Schritt 4: Zielobjekt aktualisieren

„update“

46Manuel Haim - Hochschulrechenzentrum

(4) Automatische (De-)Provisionierungaller angeschlossenen Systeme

• lokale Benutzerprofile in Anwendungen verfügbar machen,bevor ein Nutzer sich zum ersten Mal anmeldet→ vereinfacht die lokale Gruppen- und Rechtezuordnung

• zeitnaher Datenabgleich bei Änderungen

• Löschung von Daten in Drittsystemen (nach Ausscheiden)

47Manuel Haim - Hochschulrechenzentrum

5. Fazit

• Funktionale Anforderungen der Hochschulen an IDM-Systeme decken sich mit marktüblichem Funktionsumfang

• Eigene Implementierungen bieten vergleichbare Funktionen→ Man spart sich die Lizenzgebühren→ Datenabgleich lässt sich selbst implementieren → Webportale erfordern ohnehin Eigenentwicklung

• Ermittlung von Datenquellen und Verantwortlichkeitenist ein organisatorisches Problem mit vielen Beteiligten(unabhängig von der Wahl der Software)

48Manuel Haim - Hochschulrechenzentrum

Danke für Ihre Aufmerksamkeit!

Noch Fragen?

→ Gern jetzt im Anschluss :-)

→ sonst per E-Mail: Manuel Haim, haim@hrz.uni-marburg.de

Quellennachweis Icons: „Crystal Project“ (GNU LGPL).

Recommended