Zugriffsrechte
Zugriffsrechte werden im JSON-Format definiert und legen die Zugriffsberechtigungen für einen Dienst fest.
Eine Zugriffsrechte-Datei hat die folgende Struktur:
{
"policies": [], (1)
"fallbackPolicies": [], (2)
"restrictions": {}, (3)
"properties": {} (4)
}
| 1 | Eine Liste von Zugriffsrechten für einen Dienst. |
| 2 | optional: Zugriffsrechte, welche genutzt werden, wenn kein passendes Zugriffsrecht für die Rollen einer Person gefunden wird. |
| 3 | optional: Eindeutig benannte Einschränkungen, welche in den Zugriffsrechten referenziert werden können. |
| 4 | optional: Eindeutig benannte Eigenschaften, welche in der Datei referenziert werden können. |
|
Automatische Vervollständigung und Syntaxprüfung
Das hier beschriebene JSON-Format für Zugriffsrechte ist auch als JSON-Schema beschrieben. Mithilfe des Schemas können Sie sicherstellen, dass Ihre JSON-Datei den Vorgaben entspricht. Außerdem können Editoren wie Visual Studio Code auf Basis des Schemas Vorschläge, Beschreibungen sowie eine automatische Vervollständigung für Elemente bei der Eingabe anbieten. Fügen Sie der JSON-Datei die folgende
Eine Kopie des JSON-Schemas ist Teil der security.manager for OGC Auslieferung und verfügbar unter
Ersetzen Sie |
policies
Liste von Zugriffsrechten, die für den Zugriff auf einen Dienst gelten.
Ein einzelnes Zugriffsrecht ist eine Kombination aus Layern, Rollen und optionalen Einschränkungen:
"policies":[
{
"layers": ["layerA", "layerB"], (1)
"roles": ["roleA", "roleB"], (2)
"restrictions": ["restrictionA", "restrictionB"] (3)
}
]
| 1 | Layer, auf die Zugriff gewährt werden soll |
| 2 | Rollen, für die das Zugriffsrecht gilt |
| 3 | optional: weitere Einschränkungen der Layer |
layers
Liste der Layer-Namen oder Feature Types-Namen, auf die eine Rolle Zugriff haben soll.
Jeder Eintrag muss ein eindeutiger Name eines Layers oder Feature-Types sein.
Der Ausdruck "layers": ["*"] umfasst alle Layer und Feature-Types eines Services.
Bei Web Feature Services (WFS) wird der Name eines Feature-Types verwendet. Dieser muss ohne Namespace-Prefix angegeben werden. Beachten Sie für WFS die Limitierungen für Feature Types.
Bei Web Map Services (WMS) wird der Name eines Layer verwendet.
roles
Liste der Rollen, für die das Zugriffsrecht gilt.
Neben den Rollen des Identitätsanbieters gibt es drei vordefinierte Rolle:
- enhancedSecurity_any
-
Diese Rolle gilt für alle Personen.
- enhancedSecurity_anonymous
-
Diese Rolle gilt für alle nicht authentifizierten Personen.
- enhancedSecurity_authenticated
-
Diese Rolle gilt für alle authentifizierten Personen.
restrictions
Referenzen auf zusätzliche Einschränkungen, die beim Zugriff auf einen Layer durchgesetzt werden sollen.
Die Verwendung von restrictions ist optional.
In restrictions können IDs von Einschränkung referenziert werden, die für das Zugriffsrecht gelten.
Die Einschränkungen selber werden im restrictions-Objekt auf oberster Ebene der JSON-Datei definiert.
|
Die Einschränkungen, die in einem Zugriffsrecht referenziert werden, gelten immer für alle in diesem Zugriffsrecht angegebenen Layer. Wenn Sie für unterschiedliche Layer unterschiedliche Einschränkungen definieren möchten, müssen Sie dazu separate Zugriffsrechte angelegen. |
fallbackPolicies
Liste von "Fallback-Zugriffsrechten", die angewendet werden, wenn für die Rollen einer Person kein anderes Zugriffsrecht gefunden werden kann.
Fallback-Zugriffsrechte sind optional. Standardmäßig erlaubt der security.manager for OGC keinen Zugriff, falls für die Rollen einer Person keine Zugriffsrechte gefunden werden können. Mit den Fallback-Zugriffsrechten ändern sie dieses Verhalten und erlauben diesem Personenkreis den Zugriff auf bestimmte Daten.
Jeder Eintrag innerhalb der fallbackPolicies definiert dabei ein Fallback-Zugriffsrecht.
Innerhalb dieses Fallback-Zugriffsrechts können die aus Zugriffsrechten bekannten Eigenschaften layers und restrictions verwendet werden.
Die Eigenschaft roles darf nicht benutzt werden.
"fallbackPolicies":[{
"layers": ["layerA"],
"restrictions": ["restrictionB"]
}]
|
Verwenden Sie |
restrictions
Liste von eindeutig benannten Einschränkungen, die in den Zugriffsrechten und "Fallback-Zugriffsrechten" referenziert werden können.
Eine Regel kann den Zugriff auf Layer begrenzen, indem Sie ihr Einschränkungen (Restrictions) zuordnen. Sie wird als Key-Value-Paar aus dem Namen der Einschränkung (Key) und einem Objekt, welches die Einschränkung definiert (Value), definiert. Der Name einer Einschränkung darf nur aus den Zeichen a-z, A-Z, 0-9 sowie '_' (Unterstrich) und '-' (Minus) bestehen. Er muss mit einem Buchstaben beginnen.
{
"policies": [
{
"layers": ["layerA", "layerB"],
"roles": ["roleA"],
"restrictions": ["restrictionA"] (1)
}
],
"restrictions": { (2)
"restrictionA": (3)
{
"type": "spatial", (4)
// ...
}
}
}
| 1 | Referenz auf eine Einschränkung innerhalb eines Zugriffsrechts |
| 2 | Objekt in dem alle Einschränkungen definiert werden |
| 3 | Key einer Einschränkung |
| 4 | Art der Einschränkung. Akzeptierte Werte sind "spatial" und "readonly". |
Sie können folgende Arten von Einschränkungen definieren:
- Räumlich
-
Zugriff auf ein räumliches Gebiet einschränken
- Editierung
-
Editieren von Geometrien und Attributen verbieten
Räumliche Einschränkung
Räumlichen Einschränkungen beschränken den Zugriff auf ein räumliches Gebiet. Dieses Gebiet wird in einer GeoJSON-Datei definiert.
Eine räumliche Einschränkung enthält die folgenden Eigenschaften:
"restrictions": {
"europe-only": { (1)
"type": "spatial", (2)
"source": "europe.geojson", (3)
"spatialOperation": "within" (4)
}
}
| 1 | ID der Einschränkung. |
| 2 | Typ der Einschränkung. |
| 3 | Name der GeoJSON-Datei, die die Geometrien für die räumliche Einschränkung enthält |
| 4 | Nur WFS, optional: Räumliche Operation für den Vergleich der Geometrien mit den Features eines Feature Types. |
type-
Typ der Einschränkung.
Für räumliche Einschränkungen muss der Wert
"spatial"sein. source-
Name der GeoJSON-Datei.
Die Geometrien der GeoJSON-Dateien definieren den erlaubten Bereich der räumlichen Einschränkung.
Die Datei muss im gleichen Verzeichnis wie die Zugriffsrechte-Datei liegen und diese Anforderungen für Geometrien erfüllen. spatialOperation-
Räumliche Operation, die festlegt, wie die räumliche Einschränkung auf die Features eines Feature Type angewendet wird.
Folgende räumliche Operationen werden unterstützt:
-
intersect: Alle Features, die die Geometrie schneiden, werden zurückgegeben. Dies ist der Standardwert. -
within: Alle Features, die komplett innerhalb der Geometrie liegen, werden zurückgegeben.
-
Editier-Einschränkungen
Das Editieren von Transactional Web Feature Services (WFS-T) kann durch einen Vollzugriff für eine Rolle erlaubt werden. Das bedeutet, dass für diese Rolle der Zugriff auf alle Layer ohne Einschränkungen erlaubt sein muss.
Falls das Editieren für diese Rollen verboten werden soll, so kann eine Editier-Einschränkung ergänzt werden:
{
"policies": [
{
"layers": ["*"],
"roles": ["roleA"],
"restrictions": ["no-edit"] (1)
}
],
"restrictions": {
"no-edit": { (2)
"type": "readonly" (3)
}
}
}
| 1 | Der Vollzugriff für roleA wird durch die Editier-Einschränkung eingeschränkt |
| 2 | ID der Einschränkung |
| 3 | Editier-Einschränkungen sind von Typ readonly |
|
Diese Eigenschaft hat lediglich einen Effekt auf WFS-T mit einem Vollzugriffsrecht. |
properties
{
"policies": [
{
"layers": ["0"],
"roles": ["${propertyA}"] (1)
}
],
"properties": { (2)
"propertyA": "41477fa98f444444855e1e0b7b132b45" (3)
}
}
| 1 | Referenz auf eine Property innerhalb eines Zugriffsrechts |
| 2 | Objekt in dem alle Properties definiert werden |
| 3 | Eine Property bestehend aus einem Schlüssel-Wert-Paar |
Das properties-Element besteht aus Schlüssel-Wert-Paaren, mit denen Sie Werte definieren können, die Sie an anderer Stelle in dieser Datei über ihren Schlüssel referenzieren können.
Die Werte müssen Strings sein.
Die Schlüssel müssen mit einem Buchstaben beginnen und dürfen nur aus den Zeichen a-z, A-Z, 0-9 sowie '_' (Unterstrich) und '-' (Minus) bestehen.
Sie können die Werte in anderen Elementen verwenden, indem Sie diese mit ${schluessel_name} referenzieren.
Auf diese Weise können Sie Werten beschreibende Namen geben.