Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 6 additions & 38 deletions de/functions/backend/FOM/acl.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,47 +4,15 @@
Access Control Lists (ACL)
==========================

Die Absicherung von Domain-Objekten (generell Datenbank Entities) wird über
Access Control Lists (ACL) implementiert. ACLs ermöglichen eine flexible
Genehmigung für individuelle Objekte.
Die Absicherung von Domain-Objekten wird in Mapbender über Access Control Lists (ACLs) implementiert. ACLs ermöglichen in Mapbender eine flexible Rechtezuweisung auf Applikationen, Dienste und die Benutzer- und Gruppenverwaltung selbst.

Für jede Domain-Objektklasse können bis zu 30 verschiedene Rechte
gewährleistet werden. Generell reichen die folgenden 7 aus:
Mapbender bietet zur Absicherung dieser Bereiche die folgenden Rechte- und Rollenzuweisungen an:

- View : Objekt lesen
- View : Ein existierendes Objekt lesen
- Create : Ein neues Objekt erstellen
- Edit : Ein existierendes Objekt bearbeiten
- Delete : Ein existierendes Objekt löschen
- Operator : Die Rechte zu Lesen, Erstellen, Editieren und zu Löschen
- Master : Die Operator Rechte, kann alle Rechte bis zum Operator Level verwalten
- Owner : Master Rechte. Kann Master Rechte selbst verwalten
- Operator : Rollenbezeichnung für die Rolle "Operator", dieser hat die Rechte View, Edit und Delete.
- Master : Rollenbezeichnung für die Rolle "Master", dieser hat Operator-Rechte und kann zusätzlich alle oberen Rechte anderen zuweisen.
- Owner : Rollenbezeichnung für die Rolle "Owner", dieser kann sowohl Operator als auch Master-Rechte zuweisen.

Jedes ACL baut sich aus einer Objekt Identity und bestimmten Access Control Entries (ACE) auf.


Objekt Identität
----------------

ACLs werden nicht direkt den Objekten zugeordnet sondern den sogenannten
Objekt Identities. Diese repräsentieren individuelle Objekte oder Klassen
(das Create Recht ist zum Beispiel ein Recht auf eine Klasse).


Access Control Entries
----------------------

Jedes ACE enthält die Rechte für einen Benutzer oder eine Rolle. Die Rechte
werden als Interger Bit abgelegt, daher können 32 Rechte verwaltet
werden. Da einige PHP Implementationen 30 bit große Integers verwalten, hat
sich die Zahl 30 als plattformübergreifender Höchstwert etabliert. Wie schon
erwähnt reichen 7 Rechte aus, um einen umfangreichen CRUD Workflow zu
modellieren und die restlichen 23 für Eigenentwicklungen vorzuhalten.


Security Identität
------------------

ACEs können entweder mit Benutzern oder Rollen assoziiert werden, um damit
beide mit einer Security Identität zu kapseln.

.. image:: ../../../../en/functions/backend/FOM/acl.png
Binary file added de/functions/backend/FOM/edit_user_activated.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
18 changes: 11 additions & 7 deletions de/functions/backend/FOM/examples.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Der Befehl ``app/console fom:user:resetroot`` setzt den User mit der ID 1 zurüc

.. code-block:: bash
$ app/console fom:user:resetroot
Welcome to the Mapbender3 root account management command
Welcome to the Mapbender root account management command
Enter the username to use for the root account.
Username [root]: root
Enter the e-mail adress to use for the root account.
Expand All @@ -21,7 +21,7 @@ Der Befehl ``app/console fom:user:resetroot`` setzt den User mit der ID 1 zurüc
The root is now usable. Have fun!


Neuen Benutzer anlegen
Neue Benutzer anlegen
----------------------

Der root Benutzer (ID 1) kann neue Benutzer anlegen. Dies ist auch für andere Benutzer möglich, wenn sie im ACL "Users" als Owner eingetragen sind. Diese Ausnahmeberechtigung wurde gewählt, damit nicht jeder Nutzer seinen Benutzernamen ändern kann.
Expand All @@ -30,20 +30,24 @@ Der root Benutzer (ID 1) kann neue Benutzer anlegen. Dies ist auch für andere B
Neue Anwendungen anlegen
------------------------

Ein Benutzer, der neue Anwendungen erzeugen soll, muss im ACL "Applications" das Create Recht besitzen. Sobald er dieses Recht hat, kann er auch Anwendungen exportieren und importieren.
Ein Benutzer, der neue Anwendungen erzeugen soll, muss im ACL "Anwendungen" das *Create* Recht besitzen. Sobald er dieses Recht hat, kann er auch Anwendungen exportieren und importieren.

Um Layerset Instanzen einzubauen, muss er im ACL "Service Source" das Edit Recht besitzen.

Datenquellen konfigurieren
--------------------------

Um den Aufruf auf den Tab ``Datenquellen`` zu erhalten und anschließend Dienste einbinden, konfigurieren oder aktualisieren zu können, muss ein Benutzer/eine Gruppe im ACL "Datenquellen" mindestens das *Edit* Recht zugewiesen bekommen.


Anwendungen kopieren
--------------------

Ein Benutzer kann Anwendungen kopieren, wenn er im ACL "Applications" oder in der Anwendung mindestens das Edit Recht hat. Dabei überschreibt das Recht der Anwendung das globale ACL Recht.
Ein Benutzer kann Anwendungen kopieren, wenn er im ACL ``Applications`` oder in der Anwendung selbst mindestens das *Edit* Recht hat. Dabei überschreibt das individuelle Recht der Anwendung das globale ACL Recht.

Dabei wird der Benutzer automatisch Owner seiner kopierten Anwendung.
Wenn ein Benutzer eine Anwendung kopiert, dann wird er automatisch ihr Owner.


Anwendungen löschen
-------------------

Ein Benutzer kann Anwendungen löschen, wenn er im ACL "Applications" oder er in der Anwendung mindestens das Delete Recht hat. Dabei überschreibt das Recht der Anwendung das globale ACL Recht.
Ein Benutzer kann Anwendungen löschen, wenn er im ACL ``Anwendungen`` oder er in der Anwendung selbst mindestens das *Delete* Recht hat. Dabei überschreibt das individuelle Recht der Anwendung das globale ACL Recht.
7 changes: 3 additions & 4 deletions de/functions/backend/FOM/index.rst
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
.. _fom_de:

FOMUserBundle - Benutzer und Absicherung
========================================
FOM UserBundle - Benutzer und Absicherung
=========================================

.. toctree::
:maxdepth: 1

security
acl
users
roles_groups
security
examples

28 changes: 5 additions & 23 deletions de/functions/backend/FOM/roles_groups.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,11 @@
Rollen und Gruppen
==================

Rollen sind definiert über Instanzen von
FOM\\ManagerBundle\\Component\\Bundle und nutzen die getRoles Methode.
Rollen werden in Mapbender für globale Zugriffe auf Domänen-Objekte verwendet, wenn kein anderes Domänen-Objekt involviert ist.

Die Benennung der Rollen folgt dem Standard Symfony Role Naming Schema, in
dem Rollen mit dem Präfix "ROLE\_" benannt werden.
Die folgenden Rollen sind für eine übergreifende Rechtevergabe auf bestimmte Domänen-Objekte verfügbar:

Rollen können für globale Rechteüberprüfungen benutzt werden, wenn kein
Domänen-Objekt involviert ist und können als Sicherheits-Identitäten von ACE
in ACL genutzt werden.
* Alle angemeldeten Benutzer: Rechtevergabe betrifft alle Benutzer mit einem Account und keinen individuellen Rechtezuschreibungen.
* Anonyme Nutzer: Rechtevergabe betrifft alle unangemeldeten Besucher von Mapbender-URLs.

Gruppen sind Datenbank-Entitäten, die zu Benutzern auf einer individuellen
Basis zugewiesen werden können. Sie können auch mehreren Rollen zugewiesen
werden. Daher liegt ihr Nutzen in der Sammlung von Rollen, die jedem Nutzer
einer Gruppe zugeordnet werden sollen.

.. image:: users.png



Zukunft
-------

Später ist es möglich, individuelle Rollen direkt einem Nutzer zuzuordnen.

Symfony bietet zusätzlich eine API für hierarchische Rollen an, die bisher
noch nicht Teil des FOMUserBundles ist.
Gruppen sind im Gegensatz dazu selbst erstellte Datenbank-Entitäten. Benutzer können ihnen individuell zugewiesen werden. Gemeinsame Gruppenmitglieder besitzen die gleichen Rechte, sofern diese auf Domänen-Objekten zentral für die Gruppe konfiguriert wurden.
65 changes: 63 additions & 2 deletions de/functions/backend/FOM/security.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,70 @@
Sicherheitskonzepte
===================

Sicherheit wird im FOMUserBundle bereitgestellt und basiert auf diesen
Konzepten:
Sicherheit wird im FOM User Bundle bereitgestellt und basiert auf diesen Konzepten:

- :doc:`Benutzer <users>`
- :doc:`Rollen und Gruppen <roles_groups>`
- :doc:`Access Control Lists (ACL) <acl>`


Rechte
========

Mapbender bietet verschiedene Rechte an, die Sie vergeben können. Sie basieren auf :doc:`Access Control Lists (ACL) <acl>`.

* view - anzeigen
* edit - editieren
* delete - löschen
* operator - kann anzeigen, editieren und löschen
* master - kann anzeigen, editieren, löschen und diese Rechte außerdem weitergeben
* owner - Besitzer, darf alles (inkl. Vergabe von master und owner Recht)

Weisen Sie einem Benutzer über ``Benutzer --> Benutzer bearbeiten --> Sicherheit`` die gewünschten Rechte zu.

.. image:: /figures/mapbender_roles.png
:scale: 80


Zuweisen einer Anwendung zu einem Benutzer/einer Gruppe
=======================================================

#. Bearbeiten Sie Ihre Anwendung über ``Anwendungen --> Bearbeiten``.

#. Wählen Sie ``Sicherheit``.

#. Veröffentlichen oder verbergen Sie Ihre Anwendung für alle über die Auswahl **Öffentlicher Zugriff** unter ``Sicherheit`` (oder alternativ über den **Anwendung publizieren/verbergen**-Button in der Anwendungsübersicht).

#. Fügen Sie für individuelle Einstellungen alternativ Benutzer oder Gruppen über den Plus-Button hinzu. Setzen Sie anschließend individuelle Berechtigungen über die Rechtetabelle. So weisen Sie eine Anwendung einem oder mehreren Benutzer(n)/Gruppe(n) zu.

#. Melden Sie sich erneut unter der ausgewählten Benutzerbezeichnung an, um die Rechtevergabe zu testen.

#. Alternativ können Sie auch unter ``Sicherheit --> Globale Zugriffssteuerungsliste (ACL) --> Anwendungen`` schnell Berechtigungen von Benutzern/Gruppen für alle Anwendungen festlegen.


Zuweisen einzelner Elemente zu Benutzern/Gruppen
================================================

Standardmäßig stehen alle Elemente den Benutzern/Gruppen zur Verfügung, die Zugriff auf eine Anwendung haben. Für einzelne Elemente kann der Zugriff noch genauer definiert werden, so dass diese nur bestimmten Benutzern/Gruppen zur Verfügung stehen.

#. Bearbeiten Sie Ihre Anwendung über ``Anwendungen --> Bearbeiten``.

#. Wählen Sie ``Layouts``.

#. Jedes Element verfügt über einen eigenen ``AcL-Element``-Button (Schlüssel). Wählen Sie den Button zu dem Element, das nur ausgewählten Benutzern/Gruppen zur Verfügung stehen soll.

#. Fügen Sie Benutzer oder Gruppen über den Plus-Button hinzu. Setzen Sie anschließend individuelle Berechtigungen über die Rechtetabelle. Das Element wird so innerhalb der Anwendung abgesichert und nur bestimmten Benutzer(n)/Gruppe(n) zugänglich.

#. Testen Sie die Konfiguration, indem Sie die Anwendung mit Benutzern aufrufen, die (keine) Berechtigungen zum Element erhalten haben.


Zuweisen von Benutzern zu einem Benutzer/einer Gruppe
=====================================================

#. Bearbeiten Sie Ihre Benutzer über ``Sicherheit --> Benutzer``.

#. Wählen Sie ``Sicherheit``.

#. Weisen Sie Benutzern/Gruppen individuelle Berechtigungen auf den individuellen Benutzer zu. Fügen Sie Benutzer oder Gruppen über den Plus-Button hinzu. Setzen Sie anschließend individuelle Berechtigungen über die Rechtetabelle. So weisen Sie Benutzer(n)/Gruppe(n) einen Benutzer zu.

#. Melden Sie sich unter dem Benutzer bzw. der Gruppe mit neuen Rechten an, um die Rechtevergabe zu testen. Je nach Konfiguration ist es so z.B. möglich, dass alle Teilnehmer einer Gruppe Berechtigungen über einen bestimmten Benutzer haben und dessen Account bearbeiten oder löschen können.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added de/functions/backend/FOM/user_forgot_password.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed de/functions/backend/FOM/users.png
Binary file not shown.
84 changes: 26 additions & 58 deletions de/functions/backend/FOM/users.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,36 +3,25 @@
Benutzer
========

Benutzer werden als FOM\\UserBundle\\Entity\\User implementiert und im
Datenbank Repository gespeichert. Die Entität hält nur die notwendigen
Informationen über einen Nutzer vor, komplexere Benutzerdaten sollten in
Benutzerprofilen hinterlegt werden (TBD).
Benutzer werden als FOM\\UserBundle\\Entity\\User implementiert und im Datenbank Repository gespeichert. Die Entität hält nur die notwendigen Informationen über einen Nutzer vor.

Das Bundle enthält alle Mittel, um Benutzer durch einen Administrator zu
verwalten als auch das eigene Registrieren eines Nutzers sowie das
Zurücksetzen des eigenen Passwortes.
Das Bundle enthält Möglichkeiten für folgende Optionen:

Der Benutzer mit der ID 1 ist besonders, da dieser Benutzer bei der
Installation erstellt wird und immer alle Rechte hat. Falls alle Stricke
reißen, können Sie mit diesem Benutzer alles verwalten. Und falls Sie gar
die Anmeldedaten vergessen haben sollten, können Sie über ein app/console
Kommando den Benutzer zurücksetzen: fom:user:resetroot.
* Benutzerverwaltung durch einen Administrator
* Registierung eines Benutzers
* Zurücksetzung des eigenen Passworts

Der Benutzer mit der ID 1 (root) ist besonders, da dieser Benutzer bei der Installation erstellt wird und immer alle Rechte hat. Falls alle Stricke reißen, können Sie mit diesem Benutzer alles verwalten. Und falls Sie gar die Anmeldedaten vergessen haben sollten, können Sie über ein app/console Kommando den Benutzer zurücksetzen: *fom:user:resetroot*.

.. note:: **Hinweis:** Um die Funktionen unterhalb nutzen zu können, muss der Symfony Swiftmailer korrekt eingerichtet sein. Bitte überprüfen Sie Ihre lokale Symfony-Version und nutzen Sie die offizielle Symfony-Dokumentation zur Einrichtung des Tools: https://symfony.com/doc/current/mailer.html

Passwort vergessen
------------------

Falls ein Benutzer sein Passwort vergessen hat, kann er in der Login-Maske
über den Link "Passwort vergessen" ein neues Passwort anfordern. Dazu gibt
er dann seinen Benutzernamen oder seine E-Mail Adresse an.
Falls ein Benutzer sein Passwort vergessen hat, kann er in der Login-Maske über den Link "Passwort vergessen" ein neues Passwort anfordern. Dazu gibt er dann seinen Benutzernamen oder seine E-Mail Adresse an.

.. image:: ../../../../en/functions/backend/FOM/user_forgot_password.png
.. image:: ../../../../de/functions/backend/FOM/user_forgot_password.png

Danach bekommt der Benutzer eine E-Mail mit einem Link, die zu der Seite
führt, um das Passwort zurückzusetzen. Der Link ist danach nicht mehr
gültig. Der Text der Mail kann in der Datei
/FOM/UserBundle/Resources/translations/messages.de.xlf angepasst werden.
Danach bekommt der Benutzer eine E-Mail mit einem Link zur Zurücksetzung des Passworts. Der Link ist nach der Nutzung nicht mehr gültig. Der Text der Mail kann in der Datei /FOM/UserBundle/Resources/translations/messages.de.xlf angepasst werden.

Die Funktionalität kann in der config.yml ausgeschaltet werden.

Expand All @@ -42,76 +31,55 @@ Die Funktionalität kann in der config.yml ausgeschaltet werden.
reset_password: true # true/false



Registrierung
-------------

Benutzer können sich an Mapbender selbst registrieren. Dafür stellt man in
der config.yml die Einstellung fom_user:selfregister auf true.
Benutzer können sich in Mapbender selbst registrieren. Dafür stellt man in der config.yml die Einstellung *fom_user:selfregister* auf true.

.. code-block:: yaml

fom_user:
selfregister: false # true/false

Im Login-Dialog erscheint der "Register" Link. Der Benutzer wird zu einer
Maske geführt, in der er seinen Namen, sein Passwort und seine E-Mail
Adresse angeben kann.
Im Login-Dialog erscheint der "Register" Link. Der Benutzer wird zu einer Maske geführt, in der er Name, Passwort und E-Mail Adresse angeben kann.

.. image:: ../../../../en/functions/backend/FOM/user_self_register.png
.. image:: ../../../../de/functions/backend/FOM/user_self_register.png

Danach erhält er eine Bestätigungsmail, mit der er seine Anmeldung
abschließen kann. Bis zu diesem Zeitpunkt ist er als inaktiver Nutzer in
Mapbender hinterlegt.
Danach erhält er eine Bestätigungsmail, mit der er seine Anmeldung abschließen kann. Bis zu diesem Zeitpunkt ist er als inaktiver Nutzer in Mapbender hinterlegt.

Die Texte der Bestätigungsmail können unter
/FOM/UserBundle/Resources/translations/messages.de.xlf angepasst werden.
Die Texte der Bestätigungsmail können unter /FOM/UserBundle/Resources/translations/messages.de.xlf angepasst werden.


Aktivieren von Nutzern
----------------------

Seit Mapbender 3.0.5.3. können Benutzer von Administratoren mit mindestens
der Benutzer ACL-Rolle "edit" aktiviert oder deaktiviert werden. Dazu dient
der Schalter im Edit User Dialog.

Ein Benutzer mit Administrationsrechten kann sich selbst nicht aktivieren
oder deaktivieren.

.. image:: ../../../../en/functions/backend/FOM/edit_user_activated.png
Benutzer können von Administratoren mit der ACL-Rolle *edit* aktiviert oder deaktiviert werden. Ein Benutzer mit Administrationsrechten kann sich selbst nicht aktivieren oder deaktivieren.

Ein Benutzer, der deaktiviert ist, kann sich so lange nicht mehr im Mapbender
anmelden, bis er wieder aktiviert wird.
.. image:: ../../../../de/functions/backend/FOM/edit_user_activated.png

.. image:: ../../../../en/functions/backend/FOM/user_account_is_disabled.png
Ein Benutzer, der deaktiviert ist, kann sich so lange nicht mehr im Mapbender anmelden, bis er wieder aktiviert wird.

Benutzer, die sich selbst registriert haben, aber die Freischaltungsmail
noch nicht bestätigt haben, können so von einem Administrator per Hand
freigeschaltet werden.
Benutzer, die sich selbst registriert haben, aber die Freischaltungsmail noch nicht bestätigt haben, können so von einem Administrator per Hand freigeschaltet werden.


Usermanagement über Sicherheitsschlüsselabfrage
User-Management per Sicherheitsschlüsselabfrage
-----------------------------------------------

Innerhalb jeder Mapbender-Applikation besteht zusätzlich die Möglichkeit der Rechtevergabeanpassung. Im Tab "Layouts" findet sich diese Einstellung in Form eines Schlüssels neben jedem Element.
Die Möglichkeit der Rechtevergabe kann in jeder Mapbender-Applikation anpasst werden. Im Tab "Layouts" findet sich diese Einstellung in Form eines Schlüssels neben jedem Element.

Um anzupassen, ob jemand Zugriff auf das Element hat, muss zunächst auf den Schlüssel geklickt werden. Im Anschluss kann ein Nutzer hinzugefügt werden. Dies geschieht über das "+"-Symbol.
Mit einem Klick auf den Schlüssel wird der Benutzerzugriff auf ein Element angepasst. Im Anschluss kann ein Nutzer hinzugefügt werden. Dies geschieht über das "+"-Symbol.

Ein gesetzter Haken neben dem entsprechenden Nutzeraccount erlaubt dem jeweiligen Nutzer den Zugriff. Der Schlüssel wird nach erfolgreicher Rechtevergabe rot. Wenn Sie nun den Cursor über den Schlüssel halten, sehen Sie die Namen der berechtigten Nutzer in einem Pop-Up Fenster.
Ein gesetzter Haken neben dem entsprechenden Nutzer-Account erlaubt dem jeweiligen Nutzer den Zugriff. Der Schlüssel wird nach erfolgreicher Rechtevergabe rot. Wenn Sie nun den Cursor über den Schlüssel halten, sehen Sie die Namen der berechtigten Nutzer in einem Pop-Up Fenster.

.. image:: ../../../../en/functions/backend/FOM/element_security_key_popup.png
.. image:: ../../../../de/functions/backend/FOM/element_security_key_popup.png


Login Fehler
------------

Fehlerhafte Logins werden mit der Meldung "Login fehlerhaft"
kommentiert. Aus Sicherheitsgründen wird nicht genannt, ob es am falschen
Loginnamen oder falschen Passwort liegt. Login Fehler schließen den Account
nicht dauerhaft aus. Vielmehr wird der Account für eine bestimmte Zeit
ausgeschlossen (gelockt).
Fehlerhafte Logins werden mit der Meldung "Login fehlerhaft" kommentiert. Loginfehler schließen den Account nicht dauerhaft aus. Vielmehr wird der Account für eine bestimmte Zeit ausgeschlossen (gelockt).

Die config.yml ermöglicht die Anpassung des Verhaltens:
Die config.yml ermöglicht die Anpassung dieses Verhaltens:

.. code-block:: yaml

Expand Down
Loading