Effektives Entwerfen von Rollen

In vielen Szenarien ist die rollenbasierte Sicherheit ein sehr effektiver Mechanismus, aber es gibt Situationen, in denen sie weniger effektiv ist. Bei der Entscheidung, wo und wie die rollenbasierte Sicherheit auf eine bestimmte Anwendung angewendet werden soll, sollten Sie eine Reihe von Faktoren berücksichtigen.

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. Dies wird häufig in der Praxis durchgeführt, indem Rollen erstellt werden, die den Ort eines Benutzers innerhalb einer Organisation widerspiegeln, z. B. die Rollen "Manager" und "Kassierer", "Administratoren" und "Leser", "Project Ein Mitarbeiter" und "Project Zwei Mitarbeiter". In solchen Fällen, in denen die Daten, auf die zugegriffen wird, relativ zu den Benutzern relativ generisch sind, können Rollen effizient verwendet werden, um Geschäftsregeln wie die folgenden zu erzwingen:

  • "Manager können eine beliebige Menge an Geld übertragen. Kassierer können nur bis zu 10.000 US-Dollar übertragen."

  • "Administratoren können alles ändern. Jeder andere kann nur lesen."

  • "Project Ein Mitarbeiter kann auf eine bestimmte Datenbank zugreifen. Das ist nicht anders."

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 Datenstücks beruht. Beispielsweise wäre es schwierig, Rollen zu verwenden, um komplizierte Benutzer-Daten-Beziehungen wie die folgenden widerzureflizieren:

  • "Eine bestimmte Vorgesetzte kann nur für ihre Berichte auf Personaldaten zugreifen."

  • "Joe Consumer kann seinen Kontostand suchen."

In solchen Fällen muss die Sicherheitsüberprüfung häufig in der Datenbank selbst durchgeführt werden, wo es einfacher ist, die eigenhinternen 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 Anforderung von der Datenbank überprüfen zu lassen. Dies kann sich auf die Leistung auswirken und sich auf den Entwurf der Anwendung auswirken. Verbindungspooling funktioniert beispielsweise möglicherweise nicht, wenn eine Verbindung unter einer bestimmten Benutzeridentität geöffnet wird. Eine Erörterung der damit verbundenen Probleme finden Sie unter Anwendungssicherheit mit mehreren Ebenen und Clientwechsel und Delegierung.

Komplexität und Skalierbarkeit einer Role-Based Autorisierungsrichtlinie

Jede Sicherheitsrichtlinie, die Sie implementieren, 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 beabsichtigt. Probleme treten am wahrscheinlichsten unter den folgenden Umständen auf:

  • Sie haben eine sehr komplexe rollenbasierte Richtlinie erstellt, bei der viele Rollen und Benutzer zahlreichen Rollen zugewiesen sind.
  • Sie erstellen Rollen mit mehrdeutigen Kriterien dafür, 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 Organisation 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 wichtig, wenn Benutzer innerhalb der Organisation wechseln– solche Informationen müssen gut kommuniziert werden.

Darüber hinaus erhöht sich mit der Anzahl der Rollen, die einer Anwendung zugewiesen sind, auch die Zeit, die COM+ für die Suche nach der Aufrufermitgliedschaft in diesen Rollen aufbringt, mit einer wahrscheinlichen Verschlechterung der Leistung.

Um die Komplexität zu verwalten und diese Probleme zu minimieren, können Sie die folgenden Richtlinien verwenden:

  • Wählen Sie Rollennamen aus, die selbsterklärend sind. Machen Sie es so offensichtlich wie möglich, welche Benutzer zu welchen Rollen gehören sollen.
  • Machen Sie Ihre rollenbasierte Richtlinie so einfach wie möglich (und nicht einfacher). Wählen Sie so wenige Rollen wie möglich aus, und verwalten Sie gleichzeitig eine effektive Richtlinie.
  • Dokumentieren Sie eindeutig die rollenbasierte Richtlinie, die Sie für Administratoren erstellen, unabhängig davon, ob die Rollenmitgliedschaft (für Sie) offensichtlich ist. Verwenden Sie insbesondere das Für jede Rolle verfügbare Beschreibungsfeld, um die Absicht der Rolle zu beschreiben. Wenn Sie im Allgemeinen nicht beschreiben können, wer in einigen Sätzen zur Rolle gehören soll, ist dies wahrscheinlich zu kompliziert.
  • Es wird dringend empfohlen, dass Administratoren Ihrer Anwendung Rollen mit Benutzergruppen anstelle einzelner Benutzer auffüllen. Dies ist eine wesentlich skalierbarere Lösung. Dies erleichtert das Neu zuweisen oder Entfernen von Benutzern, wenn sie innerhalb der Organisation wechseln, und bzw. sie isoliert Administratoren vor einem bestimmten Umfang an Überwachung und Kommunikationsproblemen.

Sicherheitsgrenzen

Kontextinformationen zu Sicherheitsaufrufen

Sicherheitskontexteigenschaft

Verwenden von Rollen für die Clientautorisierung