Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Fabian Moritz | MVP SharePoint Server

Ähnliche Präsentationen


Präsentation zum Thema: "Fabian Moritz | MVP SharePoint Server"—  Präsentation transkript:

1 Fabian Moritz | MVP SharePoint Server
SharePoint Security Das SharePoint 2013-Sicherheitssystem

2 Agenda Identitäten und Authentifizierung
Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth

3 Identitäten Farm App Pool System Benutzer

4 SharePoint vs. Windows-Identität
SharePoint-Objekte Listen, Bibliotheken, Dateien Worker Prozess SharePoint System App Pool Account Backend-Datenbanken SQL Server XML-Dateien und andere Ressourcen Webserver

5 Nur noch via PowerShell
Authentifizierung Classic Claims NT Token Windows Identität NT Token Windows Identität ASP.NET (FBA) LDAP, Custom, etc. SAML 1.1 ADFS, Live ID, etc. Nur noch via PowerShell SAML Token Claims Identität SPUser

6 Authentifizierungs-Prozess
Quelle:

7 SharePoint Claims Encoding
i:0#.w|contoso\fabian Claim Identität c = andere Identitäten i:/c: Reserviert für zukünftige Claim Typen Claim Typ # = Logon, 5 = , - = role + = group % = farm ! = identity provider Herausgeber w = windows, s = local STS m = membership r = role t = trusted STS p = personal c = claim provider f = forms w/s/m/r/t/c/f etc. Claim Wert Bei Forms mit weiteren | für den Namen des Herausgebers Login Name #/./?/S etc.

8 Claims Encoding Beispiele
Windows Account CONTOSO\fabianm Alle authentifizierten Windows-Nutzer Windows- Sicherheitsgruppe Federated Location mit als Login Namen Membership Provider i:0#.w|contoso\fabianm c:0!.s|windows c:0+.w|s … i:0#.f|membership|fabianm

9 Identität ermitteln Der alte Weg HttpContext.Current.Identity;
Weiterhin möglich SPContext.Current.Web.CurrentUser; Der Claims Weg IClaimsIdentity identity = (ClaimsIdentity)Thread .CurrentPrincipal.Identity;

10 Demo Formular-basierte Authentifizierung mit Claims

11 Agenda Identitäten und Authentifizierung
Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth

12 Die Rolle der Site Collection
Sicherheitsgrenze Hierarchie von Webs Gruppendefinition Höchste Einheit der Berechtigungs-vererbung Backup / Recovery Site Coll. Papierkorb

13 Berechtigungslevel

14 SharePoint-Rechte

15 Benutzerlisten in SharePoint
Users - Benutzer, die explizit berechtigt wurden AllUsers - Authentifizierte Benutzer der Website SiteUsers - Alle Benutzer der Site Collection SPWeb currentWeb = SPContext.Current.Site.RootWeb; // Explizit berechtigte Nutzer SPUserCollection users = currentWeb.Users; // Authentifizierte Nutzer SPUserCollection allUsers = currentWeb.AllUsers; // Alle Nutzer SPUserCollection siteUsers = currentWeb.SiteUsers;

16 Nutzer explizit berechtigen
Verwaltung über Role Assignments Rechtezuweisung über Role Definition //SPRoleDefinition für Teilnehmen SPRoleDefinition roleContribute = currentWeb.RoleDefinitions.GetByType(SPRoleType.Contributor) ; //Neues RoleAssignment erzeugen SPRoleAssignment roleAssignment = new SPRoleAssignment( "i:0#.f|ldapmember|fabianm", "Fabian Moritz", "SharePoint MVP"); //Teilnehmenrecht der Rolle zuweisen roleAssignment.RoleDefinitionBindings.Add(roleContribute); currentWeb.RoleAssignments.Add(roleAssignment);

17 SharePoint-Gruppen Gruppierung von Benutzern
Vergabe von Rechten für SP-Objekte Verwaltung auf Ebene der Site Collection SPWeb web = SPContext.Current.Web; web.SiteGroups.Add( "Demo Gruppe", web.SiteAdministrators[0], null, "Per Code generiert!"); SPGroup group = web.SiteGroups["Demo Gruppe"]; group.AddUser(SPContext.Current.Web.CurrentUser); web.AssociatedGroups.Add(group);

18 SPWeb.EnsureUser Der alte Weg Der Weg mit Claims
SPUser theOldWay = SPClaimProviderManager claimProviderManager = SPClaimProviderManager.Local; if (claimProviderManager != null) { SPClaim claim = new SPClaim( SPClaimTypes.UserLogonName, "fritzh", " SPOriginalIssuers.Format(SPOriginalIssuerType.Forms, "ldapmember")); string encodedClaimString = claimProviderManager.EncodeClaim(claim); SPUser user = SPContext.Current.Web.EnsureUser(encodedClaimString); }

19 SharePoint-Objekte absichern
Jedes Objekt verfügt über eine ACL ACLs werden vererbt (der Parent wird genutzt) Aufbrechen möglich

20 Vererbung aufbrechen SPWeb web = SPContext.Current.Web; // get list
SPList docs = web.GetListFromUrl( web.Url + "/Freigegebene Dokumente/Forms/AllItems.aspx"); // get members group and assignment SPGroup group = web.SiteGroups["Mitglieder"]; SPRoleAssignment groupAssignment = new SPRoleAssignment(group); SPRoleDefinition roleRead = web.RoleDefinitions.GetByType(SPRoleType.Reader); // break role inheritance docs.BreakRoleInheritance(false); groupAssignment.RoleDefinitionBindings.Add(roleRead); docs.RoleAssignments.Add(groupAssignment); // reset role inheritance docs.ResetRoleInheritance();

21 Auf Rechte prüfen SPSite site = SPContext.Current.Site;
SPUser user = SPContext.Current.Web.EnsureUser("i:#0.f|pdapmember|fritzh"); using (SPSite impersonatedSite = new SPSite(site.ID, user.UserToken)) { using (SPWeb impersonatedWeb = impersonatedSite.OpenWeb()) foreach (SPList list in impersonatedWeb.Webs) if(list.DoesUserHavePermissions(SPBasePermissions.ManageLists)) // do sth. }

22 Demo Benutzer, Gruppen und Berechtigungen verwalten

23 Agenda Identitäten und Authentifizierung
Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth

24 Code-Heraufstufung Code wird mit dem Token des aktuell angemeldeten Nutzers ausgeführt In einigen Szenarien können höhere Rechte erforderlich sein (Heraufstufung) // Code wird mit Token des aktuellen Nutzers ausgeführt // i:#0.f|ldapmember|fabianm SPSecurity.RunWithElevatedPrivileges(()>= { // Code wird mit heraufgestuften Rechte ausgeführt // SHAREPOINT\SYSTEM });

25 Code impersonifizieren
Zugriff auf Backend-Systeme mit Windows-Identität Claims to Windows Token Service // ist aktuelle Identität ein WinClaim if (SPSecurityContext.IsWindowsIdentityAvailable) { // nutze des c2WTS und hole die Windows identity WindowsIdentity wid = SPSecurityContext.GetWindowsIdentity(); // Impersonifizieren using (WindowsImpersonationContext ctxt = wid.Impersonate()) // Zugriff auf Backend / Windows Ressourcen }

26 Demo Heraufstufung und Impersonifizierung

27 Agenda Identitäten und Authentifizierung
Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth

28 SharePoint 2013 Apps Plattformen Apps Apps Store und Katalog
Urlaubs- antrag Event Management Währungsrechner Risiko Help Desk Dienste und Daten

29 App Architektur SharePoint Client Code: HTML / CSS / JavaScript
Plattform App Client Code: HTML / CSS / JavaScript Server Code: HTML, ASP.NET, PHP, etc. SharePoint (Online oder On-Premises) Services On Premises SharePoint & Exchange Server On-Premise Plattformen IIS Workflow SQL Cloud Office 365 Azure Runtime Azure Websites Azure Workflows SQL Azure REST, OAuth, OData, Remote Events 3rd Party Dienste Bing, SalesForce, SAP, Twitter, Facebook

30 Apps Authentifizierung
SharePoint SharePoint App Web Cloud App OAuth SharePoint Sandbox

31 Authentifizierungs-Prozess
1 SharePoint authentifiziert den Client mit CLAIMS SharePoint erfragt den Kontext-Token beim STS 2 ACS (Access Control Service) gibt den (signierten) Kontext-Token zurück 3 SharePoint leitet den Token an den Nutzer weiter 4 Der Nutzer greift mit dem Token auf die App zu (wird als IFrame in der Seite gerendert) 5 Die App extrahiert den Kontext-Token und übergibt diesen dem ACS (Access Control Service) 6 Der ACS gibt einen Zugriffs-Token mit den Rechten des Nutzers an die App zurück 7 Die App greift via CSOM/REST auf die SharePoint-Website mit dem Access Token (OAuth) zu 8 SharePoint authentifiziert die App und verarbeitet die CSOM/REST-Abfrage 9 Die App sendet das HTML an den Client 10 Quelle:

32 App-Berechtigungen App-Berechtigungen…
sind anders als Nutzer-Berechtigungen gelten für sämtliche Nutzer haben keine Hierarchie Apps haben eine Standard-Berechtigung Limitierte Leserechte auf das Host Web Apps können weitere Rechte beantragen Der installierende Nutzer vergibt die Rechte

33 Rechte definieren Wird über das App-Manifest gesteuert
<AppPermissionRequests> <AppPermissionRequest Scope=" Right="FullControl" /> <AppPermissionRequest Scope=" Right="Read" /> <AppPermissionRequest Scope=" Right="QueryAsUserIgnoreAppPrincipal" /> <AppPermissionRequest Scope=" Right="Write" /> </AppPermissionRequests>

34 Demo SharePoint Apps-Berechtigungen

35 Agenda Identitäten und Authentifizierung
Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth

36 Und nun? Laden Sie sich die Beispiele herunter Registrieren Sie sich für eine Office 365 Developer Site Nutzen Sie die MSDN Library Machen Sie sich mit Claims, OAuth und dem App Development vertraut

37 Fabian Moritz ITaCS GmbH MVP SharePoint Server Fabian.Moritz@itacs.de
@FabianMoritz


Herunterladen ppt "Fabian Moritz | MVP SharePoint Server"

Ähnliche Präsentationen


Google-Anzeigen