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

download Fabian Moritz | MVP SharePoint Server SharePoint Security Das SharePoint 2013-Sicherheitssystem.

If you can't read please download the document

  • date post

    06-Apr-2015
  • Category

    Documents

  • view

    107
  • download

    1

Embed Size (px)

Transcript of Fabian Moritz | MVP SharePoint Server SharePoint Security Das SharePoint 2013-Sicherheitssystem.

  • Folie 1
  • Fabian Moritz | MVP SharePoint Server SharePoint Security Das SharePoint 2013-Sicherheitssystem
  • Folie 2
  • Agenda Identitten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth
  • Folie 3
  • Identitten App Pool Farm System Benutzer
  • Folie 4
  • SharePoint vs. Windows-Identitt Webserver Worker Prozess SharePoint SystemApp Pool Account XML-Dateien und andere Ressourcen SharePoint-Objekte Listen, Bibliotheken, Dateien Backend-Datenbanken SQL Server
  • Folie 5
  • Classic Authentifizierung NT Token Windows Identitt Claims NT Token Windows Identitt ASP.NET (FBA) LDAP, Custom, etc. SAML 1.1 ADFS, Live ID, etc. SAML Token Claims Identitt SPUser Nur noch via PowerShell
  • Folie 6
  • Authentifizierungs-Prozess Quelle: http://msdn.microsoft.com
  • Folie 7
  • SharePoint Claims Encoding i:0#.w|contoso\fabian Claim Identitt c = andere Identitten i:/c: Reserviert fr zuknftige Claim Typen 0 Claim Typ # = Logon, 5 = e-mail, - = role + = group % = farm ! = identity provider #/./?/S etc. 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 | fr den Namen des Herausgebers Login Name
  • Folie 8
  • Claims Encoding Beispiele Windows Account CONTOSO\fabianm Alle authentifizierten Windows-Nutzer Windows- Sicherheitsgruppe Federated Location mit E-Mail als Login Namen Membership Provider i:0#.w|contoso\fabianm c:0!.s|windows c:0+.w|s-1-5-21 i:05.t|azure|[email protected] i:0#.f|membership|fabianm
  • Folie 9
  • Identitt ermitteln Der alte Weg HttpContext.Current.Identity; Weiterhin mglich SPContext.Current.Web.CurrentUser; Der Claims Weg IClaimsIdentity identity = (ClaimsIdentity)Thread.CurrentPrincipal.Identity;
  • Folie 10
  • Formular-basierte Authentifizierung mit Claims Demo
  • Folie 11
  • Agenda Identitten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth
  • Folie 12
  • Die Rolle der Site Collection Sicherheitsgrenze Hierarchie von Webs Gruppendefinition Hchste Einheit der Berechtigungs- vererbung Backup / Recovery Site Coll. Papierkorb
  • Folie 13
  • Berechtigungslevel
  • Folie 14
  • SharePoint-Rechte
  • Folie 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;
  • Folie 16
  • Nutzer explizit berechtigen Verwaltung ber Role Assignments Rechtezuweisung ber Role Definition //SPRoleDefinition fr Teilnehmen SPRoleDefinition roleContribute = currentWeb.RoleDefinitions.GetByType(SPRoleType.Contributor) ; //Neues RoleAssignment erzeugen SPRoleAssignment roleAssignment = new SPRoleAssignment( "i:0#.f|ldapmember|fabianm", "[email protected]", "Fabian Moritz", "SharePoint MVP"); //Teilnehmenrecht der Rolle zuweisen roleAssignment.RoleDefinitionBindings.Add(roleContribute); currentWeb.RoleAssignments.Add(roleAssignment);
  • Folie 17
  • SharePoint-Gruppen Gruppierung von Benutzern Vergabe von Rechten fr 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);
  • Folie 18
  • SPWeb.EnsureUser Der alte Weg Der Weg mit Claims SPUser theOldWay = SPContext.Current.Web.EnsureUser(@"contoso\fritzh"); SPClaimProviderManager claimProviderManager = SPClaimProviderManager.Local; if (claimProviderManager != null) { SPClaim claim = new SPClaim( SPClaimTypes.UserLogonName, "fritzh", "http://www.w3.org/2001/XMLSchema#string", SPOriginalIssuers.Format(SPOriginalIssuerType.Forms, "ldapmember")); string encodedClaimString = claimProviderManager.EncodeClaim(claim); SPUser user = SPContext.Current.Web.EnsureUser(encodedClaimString); }
  • Folie 19
  • SharePoint-Objekte absichern Jedes Objekt verfgt ber eine ACL ACLs werden vererbt (der Parent wird genutzt) Aufbrechen mglich
  • Folie 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();
  • Folie 21
  • Auf Rechte prfen 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. }
  • Folie 22
  • Benutzer, Gruppen und Berechtigungen verwalten Demo
  • Folie 23
  • Agenda Identitten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth
  • Folie 24
  • Code-Heraufstufung Code wird mit dem Token des aktuell angemeldeten Nutzers ausgefhrt In einigen Szenarien knnen hhere Rechte erforderlich sein (Heraufstufung) // Code wird mit Token des aktuellen Nutzers ausgefhrt // i:#0.f|ldapmember|fabianm SPSecurity.RunWithElevatedPrivileges(()>= { // Code wird mit heraufgestuften Rechte ausgefhrt // SHAREPOINT\SYSTEM });
  • Folie 25
  • Code impersonifizieren Zugriff auf Backend-Systeme mit Windows-Identitt Claims to Windows Token Service // ist aktuelle Identitt 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 }
  • Folie 26
  • Heraufstufung und Impersonifizierung Demo
  • Folie 27
  • Agenda Identitten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth
  • Folie 28
  • SharePoint 2013 Apps
  • Folie 29
  • App Architektur On Premises SharePoint & Exchange Server On-Premise Plattformen IIS Workflow SQL On-Premise Plattformen IIS Workflow SQL Cloud Office 365 Azure Runtime Azure Websites Azure Workflows SQL Azure Azure Runtime Azure Websites Azure Workflows SQL Azure REST, OAuth, OData, Remote Events
  • Folie 30
  • SharePoint App Web Cloud App SharePoint Apps Authentifizierung SharePoint Sandbox OAuth
  • Folie 31
  • Authentifizierungs-Prozess 1 SharePoint authentifiziert den Client mit CLAIMS 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 SharePoint erfragt den Kontext-Token beim STS 2 ACS (Access Control Service) gibt den (signierten) Kontext-Token zurck 3 SharePoint leitet den Token an den Nutzer weiter 4 Der ACS gibt einen Zugriffs-Token mit den Rechten des Nutzers an die App zurck 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 Client10 Quelle: http://msdn.microsoft.com
  • Folie 32
  • App-Berechtigungen App-Berechtigungen sind anders als Nutzer-Berechtigungen gelten fr smtliche Nutzer haben keine Hierarchie Apps haben eine Standard-Berechtigung Limitierte Leserechte auf das Host Web Apps knnen weitere Rechte beantragen Der installierende Nutzer vergibt die Rechte
  • Folie 33
  • Rechte definieren Wird ber das App-Manifest gesteuert
  • Folie 34
  • SharePoint Apps-Berechtigungen Demo
  • Folie 35
  • Agenda Identitten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth
  • Folie 36
  • Und nun? Laden Sie sich die Beispiele herunter http://sharepointcommunity.de/fabianm Registrieren Sie sich fr eine Office 365 Developer Site http://msdn.microsoft.com/en-us/library/fp179924.aspx Nutzen Sie die MSDN Library http://msdn.microsoft.com/en-US/ Machen Sie sich mit Claims, OAuth und dem App Development vertraut
  • Folie 37
  • Fabian Moritz ITaCS GmbH MVP SharePoint Server [email protected] e http://www.itacs.de @FabianMoritz http://sharepointcommunity.de/fabianm