1 / 37

Fabian Moritz | MVP SharePoint Server

Fabian Moritz | MVP SharePoint Server. SharePoint Security Das SharePoint 2013-Sicherheitssystem. Agenda. Identitäten und Authentifizierung. Rollen, Rechte und Berechtigungen. Heraufstufung und Impersonifizierung. ( Cloud ) App Security mit OAuth. Identitäten. Farm. App Pool. System.

betha
Download Presentation

Fabian Moritz | MVP SharePoint Server

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. Authentifizierung Classic Claims ASP.NET (FBA) LDAP, Custom, etc. NT Token Windows Identität NT Token Windows Identität SAML 1.1 ADFS, Live ID, etc. Nur noch via PowerShell SAML Token Claims Identität SPUser

  6. Authentifizierungs-Prozess Quelle: http://msdn.microsoft.com

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

  8. Claims Encoding Beispiele i:0#.w|contoso\fabianm Windows Account CONTOSO\fabianm Alle authentifizierten Windows-Nutzer Windows- Sicherheitsgruppe Federated Location mit E-Mail als Login Namen Membership Provider c:0!.s|windows c:0+.w|s-1-5-21… i:05.t|azure|fm@itacs.de i:0#.f|membership|fabianm

  9. Identität ermitteln • Der alte WegHttpContext.Current.Identity; • Weiterhin möglichSPContext.Current.Web.CurrentUser; • Der Claims WegIClaimsIdentity 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 explizitberechtigtwurden • AllUsers - AuthentifizierteBenutzer der Website • SiteUsers - AlleBenutzer der Site Collection SPWebcurrentWeb = SPContext.Current.Site.RootWeb; // Explizit berechtigte Nutzer SPUserCollectionusers = currentWeb.Users; // Authentifizierte Nutzer SPUserCollectionallUsers = currentWeb.AllUsers; // Alle Nutzer SPUserCollectionsiteUsers = currentWeb.SiteUsers;

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

  17. SharePoint-Gruppen • Gruppierung von Benutzern • Vergabe von Rechtenfü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!"); SPGroupgroup = web.SiteGroups["Demo Gruppe"]; group.AddUser(SPContext.Current.Web.CurrentUser); web.AssociatedGroups.Add(group);

  18. SPWeb.EnsureUser • Der alte Weg • Der Weg mit Claims SPUsertheOldWay = SPContext.Current.Web.EnsureUser(@"contoso\fritzh"); SPClaimProviderManagerclaimProviderManager = SPClaimProviderManager.Local; if (claimProviderManager != null) { SPClaimclaim = newSPClaim( SPClaimTypes.UserLogonName, "fritzh", "http://www.w3.org/2001/XMLSchema#string", SPOriginalIssuers.Format(SPOriginalIssuerType.Forms, "ldapmember")); stringencodedClaimString = claimProviderManager.EncodeClaim(claim); SPUseruser = 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; // getlist SPListdocs = web.GetListFromUrl( web.Url+ "/Freigegebene Dokumente/Forms/AllItems.aspx"); // get members group and assignment SPGroupgroup = web.SiteGroups["Mitglieder"]; SPRoleAssignmentgroupAssignment = newSPRoleAssignment(group); SPRoleDefinitionroleRead = web.RoleDefinitions.GetByType(SPRoleType.Reader); // break roleinheritance docs.BreakRoleInheritance(false); groupAssignment.RoleDefinitionBindings.Add(roleRead); docs.RoleAssignments.Add(groupAssignment); // resetroleinheritance docs.ResetRoleInheritance();

  21. Auf Rechte prüfen SPSitesite= SPContext.Current.Site; SPUseruser = SPContext.Current.Web.EnsureUser("i:#0.f|pdapmember|fritzh"); using (SPSiteimpersonatedSite = newSPSite(site.ID, user.UserToken)) { using (SPWebimpersonatedWeb = impersonatedSite.OpenWeb()) { foreach (SPList list inimpersonatedWeb.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 // istaktuelleIdentitäteinWinClaim if(SPSecurityContext.IsWindowsIdentityAvailable) { // nutze des c2WTS und hole die Windows identity WindowsIdentitywid = SPSecurityContext.GetWindowsIdentity(); // Impersonifizieren using(WindowsImpersonationContextctxt = 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 Dienste und Daten Währungsrechner Event Management Urlaubs- antrag Help Desk Risiko Management Urlaubs- antrag Apps Store und Katalog

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

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

  31. Authentifizierungs-Prozess 1 SharePoint authentifiziert den Client mit CLAIMS 2 SharePoint erfragt den Kontext-Token beim STS ACS (Access Control Service) gibt den (signierten) Kontext-Token zurück 3 4 SharePoint leitet den Token an den Nutzer weiter 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: http://msdn.microsoft.com

  32. App-Berechtigungen • App-Berechtigungen… • sindandersalsNutzer-Berechtigungen • geltenfürsämtlicheNutzer • habenkeineHierarchie • Apps habeneine Standard-Berechtigung • LimitierteLeserechte auf das Host Web • Apps könnenweitereRechtebeantragen • Der installierendeNutzervergibt die Rechte

  33. Rechte definieren • Wird über das App-Manifest gesteuert <AppPermissionRequests> <AppPermissionRequestScope="http://sharepoint/content/sitecollection/web/list"Right="FullControl" /> <AppPermissionRequestScope="http://sharepoint/content/sitecollection/web"Right="Read" /> <AppPermissionRequestScope="http://sharepoint/search"Right="QueryAsUserIgnoreAppPrincipal" /> <AppPermissionRequestScope="http://sharepoint/taxonomy"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 herunterhttp://sharepointcommunity.de/fabianm • Registrieren Sie sich für eine Office 365 Developer Sitehttp://msdn.microsoft.com/en-us/library/fp179924.aspx • Nutzen Sie die MSDN Libraryhttp://msdn.microsoft.com/en-US/ • Machen Sie sich mit Claims, OAuth und dem App Development vertraut

  37. Fabian Moritz ITaCS GmbH MVP SharePoint Server Fabian.Moritz@itacs.de http://www.itacs.de http://sharepointcommunity.de/fabianm @FabianMoritz

More Related