Effektives Entwerfen von Rollen
In vielen Szenarien ist rollenbasierte Sicherheit ein sehr effektiver Mechanismus, aber es gibt Situationen, in denen sie weniger effektiv ist. Sie sollten eine Reihe von Faktoren berücksichtigen, wenn Sie entscheiden, wo und wie Rollenbasierte Sicherheit auf eine bestimmte Anwendung angewendet werden soll.
Benutzer- und Datenmerkmale und die Eignung von Rollen
Rollen funktionieren sehr gut, um Benutzergruppen zu charakterisieren und auf dieser Grundlage zu filtern, welche Aktionen diese Benutzer ausführen können. Häufig erfolgt dies in der Praxis durch das Erstellen von Rollen, die den Platz eines Benutzers innerhalb eines organization widerspiegeln, z. B. die Rollen "Manager" und "Tellers", "Administratoren" und "Leser", "Project One Employees" und "Project Two Employees". In solchen Fällen, in denen auf die Daten zugegriffen wird, relativ zu den Benutzern relativ generisch ist, können Rollen effizient verwendet werden, um Geschäftsregeln wie die folgenden zu erzwingen:
"Manager können einen beliebigen Geldbetrag überweisen. Teller können nur bis zu 10.000 USD übertragen."
"Administratoren können alles ändern. Alle anderen können nur lesen."
"Project One-Mitarbeiter können auf eine bestimmte Datenbank zugreifen. Das kann sonst niemand."
Benutzer können natürlich in mehrere Rollen fallen, je nachdem, wie die Rollen die Organisationsstruktur eines Unternehmens modellieren.
Rollen funktionieren jedoch nicht sehr gut, wenn eine Sicherheitszugriffsentscheidung auf den Merkmalen eines bestimmten Datenteils beruht. Beispielsweise wäre es schwierig, Rollen zu verwenden, um komplizierte Benutzer-Daten-Beziehungen wie die folgenden widerzuspiegeln:
"Ein bestimmter Vorgesetzter kann nur für ihre Berichte auf Personaldaten zugreifen."
"Joe Consumer kann seinen Kontostand nachschlagen."
In solchen Fällen muss die Sicherheitsüberprüfung häufig in der Datenbank selbst durchgeführt werden, wo es einfacher ist, angeborene Merkmale der daten zu berücksichtigen, auf die zugegriffen wird. Dies bedeutet, dass Sie den Identitätswechsel verwenden müssen, um die Clientidentität an die Datenbank zu übergeben und die Datenbank die Anforderung überprüfen zu lassen. Dies kann sich auf die Leistung auswirken und sich auf den Entwurf der Anwendung auswirken. Beispielsweise funktioniert das Verbindungspooling möglicherweise nicht, wenn eine Verbindung unter einer bestimmten Benutzeridentität geöffnet wird. Eine Erläuterung der betreffenden Probleme finden Sie unter Mehrschichtige Anwendungssicherheit und Clientidentitätswechsel und -delegierung.
Komplexität und Skalierbarkeit einer Role-Based-Autorisierungsrichtlinie
Die von Ihnen festgelegte Sicherheitsrichtlinie ist nur so effektiv wie die Implementierung durch die Systemadministratoren, die Ihre Anwendung bereitstellen. Wenn Administratoren Fehler beim Zuweisen von Benutzern zu den richtigen Rollen gemäß Ihrer Sicherheitsrichtlinie machen, funktioniert Ihre Richtlinie nicht wie vorgesehen. Probleme treten am häufigsten unter den folgenden Umständen auf:
- Sie haben eine sehr komplexe rollenbasierte Richtlinie erstellt, mit vielen Rollen und Benutzern, die zahlreichen Rollen zugeordnet sind.
- Sie erstellen Rollen mit mehrdeutigen Kriterien, wer zu ihnen gehören soll.
- Es gibt viele Benutzer an dem Standort, an dem die Anwendung installiert ist, und Benutzer bewegen sich häufig innerhalb der organization und ändern sich in Bezug auf die von Ihnen erstellten Rollen.
- Es gibt viele Administratoren an dem Standort, an dem die Anwendung installiert ist, mit aufteilung der Zuständigkeiten, sodass ein Administrator, der mit den Sicherheitsanforderungen Ihrer Anwendung vertraut ist, möglicherweise nicht mit den großen Benutzergruppen vertraut ist, die sie verwenden müssen. Dies ist besonders bedenklich, da sich die Benutzer innerhalb der organization bewegen – solche Informationen müssen gut kommuniziert werden.
Wenn die Anzahl der Einer Anwendung zugewiesenen Rollen zunimmt, steigt auch die Zeit, die COM+ aufwenden muss, um die Anrufermitgliedschaft in diesen Rollen zu suchen, was zu einer wahrscheinlichen Leistungseinbuße führt.
Um die Komplexität zu verwalten und diese Probleme zu minimieren, können Sie die folgenden Richtlinien verwenden:
- Wählen Sie Rollennamen aus, die sich selbst beschreiben. Machen Sie es so offensichtlich wie möglich, welche Benutzer zu welchen Rollen gehören sollen.
- Gestalten Sie Ihre rollenbasierte Richtlinie so einfach wie möglich (und nicht einfacher). Wählen Sie so wenige Rollen wie möglich aus, während Sie eine effektive Richtlinie beibehalten.
- Dokumentieren Sie eindeutig die rollenbasierte Richtlinie, die Sie für Administratoren erstellen, und ob die Rollenmitgliedschaft (für Sie) offensichtlich ist. Verwenden Sie insbesondere das Beschreibungsfeld, das für jede Rolle verfügbar ist, um die Absicht der Rolle zu beschreiben. Wenn Sie in einigen Sätzen nicht allgemein beschreiben können, wer zur Rolle gehören soll, ist es wahrscheinlich zu kompliziert.
- Empfehlen Sie dringend, dass Administratoren Ihrer Anwendung Rollen mit Benutzergruppen anstelle einzelner Benutzer auffüllen. Dies ist eine viel skalierbarere Lösung. Dies erleichtert das Neuzuweisen oder Entfernen von Benutzern, wenn sie sich innerhalb der organization bewegen, und schützt Administratoren vor einer bestimmten Menge an Aufsicht und Problemen bei der Kommunikation.
Zugehörige Themen