Können SPERSISTEDObject-Einstellungen von normalen Benutzern aktualisiert werden, wenn sie mit erhöhten Berechtigungen rennen?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/93794

Frage

Ich habe ein benutzerdefiniertes Ribbon-Symbol "admut" in jeder Dokumentenbibliothek bereitgestellt. Ein normaler (i.e. nicht-admin) Benutzer kann auf dieses Symbol klicken. Wenn er es tut, möchte ich dauerhaft die Dokumentbibliotheksinformationen (ID, Name) irgendwo speichern. Ein zentraler Administrator kann dann (über eine benutzerdefinierte zentrale Admin-Seite) eine Liste aller Dokumentenbibliotheken ansehen, die von Benutzern eingetragen sind.

Ich denke an die Verwendung von SPPersistedObject, um die Dokumentenbibliotheksinformationen zu speichern, wenn ein Benutzer auf das Farbband-Symbol klickt. AFAIK Dies erfordert jedoch Farm-Administratorrechte, was bedeutet, dass normale Benutzer beim Klicken auf "Angriffen" auf einen Fehler stoßen werden. würde den Code ausführen, der SppersiStedObject mit erhöhten Berechtigungen mit erhöhten Berechtigungen schreibt, um dieses Problem zu beheben oder könnte noch ein Fehler auftreten? Das meine ich: generasacodicetagpre.

msdn sagt, dass RunWithElevatedPrivileges() "unter der Anwendungspoolidentität läuft, in der Site-Collection-Administratorrechte auf allen von diesem Anwendungspool gehosteten Site-Kollektionen verfügt." Ist das genug, um den generationspflichtigen Update von SPPersistedObject zu aktualisieren?

Wenn ich den generationspflichtigen Code überschreiben soll, um immer true zurückzutreten, oder würde dies nicht ausreichen, um wenigstens privilegierte Umgebungen nicht auszuführen? Wenn nicht, welche Optionen muss ich solche Informationen außer einer benutzerdefinierten Datenbank speichern?

War es hilfreich?

Lösung

Erhöhte Berechtigungen reichen nicht aus, um in die Konfiguration zu schreiben Datenbank. Mit erhöhten Berechtigungen verwenden Sie das Web Application App Pools Identität, die nur die Erlaubnis gelesen hat die config db standardmäßig. Natürlich den Admin-Benutzer (der die Zentrale läuft Admin sollte gelesen und schreiben, um Berechtigungen zu schreiben).

Mehr sehen at: http:// joelblogs.co.uk/2010/10/10/persisting-configuration-Data-in-Sharepoint-2010-with-sperSisteDobjekt/ generasacodicetagpre.

braucht immer noch den Nicht-Farm-Admin-Benutzer, der dem Farm-Admin-Benutzer übermittelt wird.

Ein endgültiges Thema, das eine gewisse Deckung erfordert, ist Sicherheit. Wie beschrieben Früher existiert der HOS in der Farm-Konfigurationsdatenbank. Streng Es ist es existiert, die administrative Funktionalität jedoch zu unterstützen hat über diesen Umfang hinaus verwendet. Wenn wir beispielsweise einen Sonderangebot bauen Timer-Job und wir möchten die Möglichkeit haben, Aufgaben an unserem Job einzureichen zur Fertigstellung. Es ist höchstwahrscheinlich, dass diese Aufgaben stammen innerhalb eines nicht-administrativen Geltungsbereichs. Möglicherweise als Ergebnis eines Benutzers Klicken Sie auf eine Schaltfläche auf einem WebPart auf einer anderen Site-Kollektion. Mit Vorherige Versionen von SharePoint, das war einfach nicht möglich. Nur Farmadministratoren könnten die HOS aktualisieren. Allerdings mit SharePoint. 2010 wurde eine Ergänzung an die Basis sppersoldedobjektiert Öffnet die HOS an andere Benutzer. Um zu sehen, wie das funktioniert, können wir uns ändern Unsere Hauptfunktion wie folgt: generasacodicetagpre.

Dieser Code simuliert einen Versuch, einen Nicht-Farm-Admin-Benutzer zu aktualisieren, um das zu aktualisieren Hos. Wenn wir das ausführen, werden wir die folgende Ausnahme sehen, die unser ist Gotcha Nummer 3:

system.security.securityException: Zugriff abgelehnt. beim Microsoft.Sharepoint.administration.sperSistedObject.BaseUpDate () bei PersistedObjectDemo.myperistedobject.update ()

unübergehend, versuchen Sie, die HOS mit einem Nicht-Farm-Admin-Benutzer zu aktualisieren wirft eine Ausnahme. Wenn wir jedoch den folgenden Code hinzufügen Mylersistedobject.cs und rennen Sie unser Programm erneut, wir können das sehen, dass das HOS wird angemessen aktualisiert. generasacodicetagpre.

Natürlich würden wir in einer echten Anwendung wahrscheinlich einige hinzufügen Sicherheitsüberprüfung in dieser Funktion und nicht einfach wahr und lassen Sie jedem, um unser Objekt zu aktualisieren, aber hoffentlich dies veranschaulicht den Punkt ausreichend.

Es gibt eine andere Gotcha in Bezug auf die Sicherheit - wenn SharePoint ist 2010 installiert, standardmäßig nur das Farm Admin-Konto hat gelesen / schreiben Zugriff auf die Konfigurationsdatenbank. In einer Mindestprivileg-Installation, alles Webanwendungen Andere als zentrale Verwaltung läuft aus Unter ihrem eigenen Servicekonto haben diese Konten nicht schreiben Zugriff auf die Konfigurationsdatenbank. Folglich, Löschen und Die Aktualisierung von Objekten in den Hos sind nicht möglich. Obwohl übergeordnet HasadditionalUpDateAccess ermöglicht ein bisschen mehr Kontrolle darüber, wer kann Aktualisieren Sie die HOS, wenn das zugrunde liegende App-Pool-Konto nicht das hat Geeignete Datenbankberechtigungen Wir werden hübsch anstehen schnell.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top