35
7.-8. März 2013, Rosenheim SharePoint Security Das Sicherheitssystem von SharePoint 2013 Fabian Moritz | MVP SharePoint Server

SharePoint Security Das Sicherheitssystem von SharePoint 2013

  • Upload
    tambre

  • View
    39

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

7.-8. März 2013, Rosenheim

SharePoint SecurityDas Sicherheitssystem von

SharePoint 2013Fabian Moritz | MVP SharePoint

Server

Page 2: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

AgendaIdentitäten und Authentifizierung

Rollen, Rechte und Berechtigungen

Heraufstufung und Impersonifizierung

(Cloud) App Security mit OAuth

Page 3: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

Identitäten

App Pool

Farm

System

Benutzer

Page 4: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

SharePoint vs. Windows-Identität

Webserver

Worker Prozess

SharePoint System

App Pool Account

XML-Dateien und andere Ressourcen

SharePoint-ObjekteListen, Bibliotheken, Dateien

Backend-DatenbankenSQL Server

Page 5: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

Classic

Authentifizierung

NT TokenWindows Identität

Claims

NT TokenWindows Identität

ASP.NET (FBA)LDAP,

Custom, etc.

SAML 1.1ADFS, Live ID,

etc.

SAML TokenClaims

Identität

SPUser

Nur noch via PowerShell

Page 6: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

Authentifizierungs-Prozess

Quelle: http://msdn.microsoft.com

Page 7: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

SharePoint Claims Encoding

i:0#.w|contoso\fabianClaim Identität

c = andere Identitäten

i:/c:

Reserviert für zukünftige Claim Typen

0

Claim Typ# = Logon,5 = e-mail,- = role+ = group% = farm! = identity provider

#/./?/S etc.

Herausgeberw = windows,s = local STSm = membershipr = rolet = trusted STSp = personalc = claim providerf = forms

w/s/m/r/t/c/f etc.

Claim Wert Bei Forms mit weiteren | für den Namen des Herausgebers

Login Name

Page 8: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

Claims Encoding BeispieleWindows 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

Page 9: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

Identität ermitteln• Der alte WegHttpContext.Current.Identity;

• Weiterhin möglichSPContext.Current.Web.CurrentUser;

• Der Claims WegIClaimsIdentity identity = (ClaimsIdentity)Thread .CurrentPrincipal.Identity;

Page 10: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

DemoFormular-basierte Authentifzierung

Page 11: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

AgendaIdentitäten und Authentifizierung

Rollen, Rechte und Berechtigungen

Heraufstufung und Impersonifizierung

(Cloud) App Security mit OAuth

Page 12: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

Die Rolle der Site Collection• Sicherheitsgrenze• Hierarchie von Webs• Gruppendefinition• Höchste Einheit der Berechtigungs-

vererbung• Backup / Recovery• Site Coll. Papierkorb

Page 13: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

Berechtigungslevel

Page 14: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

SharePoint-Rechte

Page 15: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

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 NutzerSPUserCollection users = currentWeb.Users;

// Authentifizierte NutzerSPUserCollection allUsers = currentWeb.AllUsers;

// Alle Nutzer SPUserCollection siteUsers = currentWeb.SiteUsers;

Page 16: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

SPWeb.EnsureUser• Der alte Weg

• Der Weg mit ClaimsSPUser 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);}

Page 17: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

Nutzer explizit berechtigen• Verwaltung über Role Assignments• Rechtezuweisung über Role

Definition//SPRoleDefinition für TeilnehmenSPRoleDefinition roleContribute =

currentWeb.RoleDefinitions.GetByType(SPRoleType.Contributor) ;

//Neues RoleAssignment erzeugenSPRoleAssignment roleAssignment = new SPRoleAssignment(

"i:0#.f|ldapmember|fabianm", "[email protected]","Fabian Moritz",

"SharePoint MVP");

//Teilnehmenrecht der Rolle zuweisenroleAssignment.RoleDefinitionBindings.Add(roleContribute);currentWeb.RoleAssignments.Add(roleAssignment);

Page 18: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

SharePoint-Gruppen• Gruppierung von Benutzern• Vergabe von Rechten für SP-Objekte• Verwaltung auf Ebene der Site

CollectionSPWeb 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);

Page 19: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

SharePoint-Objekte absichern• Jedes Objekt verfügt

über eine ACL• ACLs werden vererbt

(der Parent wird genutzt)• Aufbrechen möglich

Page 20: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

Vererbung aufbrechen

SPWeb web = SPContext.Current.Web; // get listSPList docs = web.GetListFromUrl(

web.Url + "/Freigegebene Dokumente/Forms/AllItems.aspx");

// get members group and assignmentSPGroup group = web.SiteGroups["Mitglieder"];SPRoleAssignment groupAssignment = new SPRoleAssignment(group);SPRoleDefinition roleRead = web.RoleDefinitions.GetByType(SPRoleType.Reader);

// break role inheritancedocs.BreakRoleInheritance(false);groupAssignment.RoleDefinitionBindings.Add(roleRead);docs.RoleAssignments.Add(groupAssignment);

// reset role inheritancedocs.ResetRoleInheritance();

Page 21: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

DemoBenutzer, Gruppen und Berechtigungen

Page 22: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

AgendaIdentitäten und Authentifizierung

Rollen, Rechte und Berechtigungen

Heraufstufung und Impersonifizierung

(Cloud) App Security mit OAuth

Page 23: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

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

});

Page 24: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

Code impersonifizieren• Zugriff auf Backend-Systeme mit

Windows-Identität• Claims to Windows Token Service

// ist aktuelle Identität ein WinClaimif (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 }}

Page 25: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

DemoHeraufstufung und Impersonifizierung

Page 26: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

AgendaIdentitäten und Authentifizierung

Rollen, Rechte und Berechtigungen

Heraufstufung und Impersonifizierung

(Cloud) App Security mit OAuth

Page 27: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

SharePoint 2013 Apps

Plattformen Dienste und DatenApps

Apps Store und Katalog

Urlaubs-antrag

EventManagement

Währungsrechner

Urlaubs-antrag

RisikoManagementHelp Desk

Page 28: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

App Architektur

Plattf

orm

App

Client Code: HTML / CSS / JavaScript

Server Code: HTML, ASP.NET, PHP, etc.

SharePoint(Online oder On-Premises)

Serv

ices

On Premises

SharePoint & Exchange Server

On-Premise PlattformenIIS

WorkflowSQL

Cloud

Office 365

Azure RuntimeAzure WebsitesAzure Workflows

SQL Azure

REST, OAuth, OData, Remote Events

3rd Party DiensteBing, SalesForce, SAP, Twitter, Facebook

Page 29: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

SharePoint

SharePoint

App Web

Cloud App

SharePoint

Apps Authentifizierung

SharePoint

Sandbox

OAuth

Page 30: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

Authentifizierungs-Prozess1 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 STS2

ACS (Access Control Service)gibt den (signierten) Kontext-Token zurück3

SharePoint leitet den Token an den Nutzer weiter4

Der ACS gibt einen Zugriffs-Token mit den Rechten des Nutzers an die App zurück7

Die App greift via CSOM/REST auf die SharePoint-Website mit dem Access Token (OAuth) zu8

SharePoint authentifiziert die App und verarbeitet die CSOM/REST-Abfrage9

Die App sendet das HTML an den Client10

Quelle: http://msdn.microsoft.com

Page 31: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

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

Page 32: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

Rechte definieren• Wird über das App-Manifest

gesteuert

<AppPermissionRequests> <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web/list" Right="FullControl" /> <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="Read" /> <AppPermissionRequest Scope="http://sharepoint/search" Right="QueryAsUserIgnoreAppPrincipal" /> <AppPermissionRequest Scope="http://sharepoint/taxonomy" Right="Write" /> </AppPermissionRequests>

Page 33: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

AgendaIdentitäten und Authentifizierung

Rollen, Rechte und Berechtigungen

Heraufstufung und Impersonifizierung

(Cloud) App Security mit OAuth

Page 34: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

Und nun?• Laden Sie sich die Beispiele herunter

http://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

Page 35: SharePoint Security Das  Sicherheitssystem von SharePoint 2013

Veranstalter:

Fabian MoritzITaCS GmbHMVP SharePoint Server

[email protected]://www.itacs.de

@FabianMoritzhttp://sharepointcommunity.de/fabianm