+ All Categories
Home > Documents > SharePoint 2013 Security

SharePoint 2013 Security

Date post: 24-Jun-2015
Category:
Upload: fabianmoritz
View: 830 times
Download: 1 times
Share this document with a friend
38
SharePoint Security Das Sicherheitssystem von SharePoint 2013 Fabian Moritz MVP SharePoint Server Daniel Lindemann Senior Entwickler
Transcript
Page 1: SharePoint 2013 Security

SharePoint SecurityDas Sicherheitssystem von SharePoint 2013

Fabian MoritzMVP SharePoint Server

Daniel LindemannSenior Entwickler

Page 2: SharePoint 2013 Security

Agenda

Identitäten und Authentifizierung

Rollen, Rechte und Berechtigungen

Heraufstufung und Impersonifizierung

(Cloud) App Security mit OAuth

Page 3: SharePoint 2013 Security

Identitäten

App Pool

Farm

System

Benutzer

Page 4: SharePoint 2013 Security

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 2013 Security

Classic

Authentifizierungsarten

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 2013 Security

Authentifizierungsprozess

Quelle: http://msdn.microsoft.com

Page 7: SharePoint 2013 Security

Was ist ein Claim?

i:0#.w|itacs\daniel

Page 8: SharePoint 2013 Security

SharePoint Claims Encoding

i:0#.w|itacs\fabian

Claim 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 = formsw/s/m/r/t/c/f

etc.

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

Login Name

Page 9: SharePoint 2013 Security

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

Page 10: SharePoint 2013 Security

Claims vs. Identity

Identity Claims

VS

Page 11: SharePoint 2013 Security

Identität ermitteln

• Der alte WegHttpContext.Current.Identity;

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

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

Page 12: SharePoint 2013 Security

Wichtige Begriffe zusammengefasst…• Identity

Attribute die einen Benutzer oder eine Gruppe beschreiben

• Security Token Verschlüsselte und signierte Liste an Claims

• Security Token Service (STS) Erstellt und signiert (Claim-)Tokens

• Identity Provider (z. B. Active Directory) Überprüft Tokens auf ihre Gültigkeit

• Relaying Party Autorisiert Identitäten anhand von Claims SharePoint 2013

Page 13: SharePoint 2013 Security
Page 14: SharePoint 2013 Security

DemoFormular-basierte Authentifzierung

Page 15: SharePoint 2013 Security

Agenda

Identitäten und Authentifizierung

Rollen, Rechte und Berechtigungen

Heraufstufung und Impersonifizierung

(Cloud) App Security mit OAuth

Page 16: SharePoint 2013 Security

Die Rolle der Site Collection

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

Page 17: SharePoint 2013 Security

Berechtigungslevel

Page 18: SharePoint 2013 Security

SharePoint-Rechte

Page 19: SharePoint 2013 Security

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 20: SharePoint 2013 Security

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

Page 21: SharePoint 2013 Security

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 22: SharePoint 2013 Security

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

Page 23: SharePoint 2013 Security

SharePoint-Objekte absichern

• Jedes Objekt verfügt über eine ACL

• ACLs werden vererbt(der Parent wird genutzt)

• Aufbrechen möglich

Page 24: SharePoint 2013 Security

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 25: SharePoint 2013 Security

DemoBenutzer, Gruppen und Berechtigungen

Page 26: SharePoint 2013 Security

Agenda

Identitäten und Authentifizierung

Rollen, Rechte und Berechtigungen

Heraufstufung und Impersonifizierung

(Cloud) App Security mit OAuth

Page 27: SharePoint 2013 Security

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 28: SharePoint 2013 Security

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 29: SharePoint 2013 Security

Agenda

Identitäten und Authentifizierung

Rollen, Rechte und Berechtigungen

Heraufstufung und Impersonifizierung

(Cloud) App Security mit OAuth

Page 30: SharePoint 2013 Security

SharePoint 2013 Apps

Plattformen Dienste und DatenApps

Apps Store und Katalog

Urlaubs-antrag

EventManagement

Währungsrechner

Urlaubs-antrag

RisikoManagementHelp Desk

Page 31: SharePoint 2013 Security

App Architektur

Plat

tfor

mApp

Client Code: HTML / CSS / JavaScript

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

SharePoint(Online oder On-Premises)

Ser

vice

s

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 32: SharePoint 2013 Security

SharePoint

SharePoint

App Web

Cloud App

SharePoint

Apps Authentifizierung

SharePoint

Sandbox

OA

uth

Page 33: SharePoint 2013 Security

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 zurück

3

SharePoint leitet den Token an den Nutzer weiter

4

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 Client10

Quelle: http://msdn.microsoft.com

Page 34: SharePoint 2013 Security

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 35: SharePoint 2013 Security

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 36: SharePoint 2013 Security

Agenda

Identitäten und Authentifizierung

Rollen, Rechte und Berechtigungen

Heraufstufung und Impersonifizierung

(Cloud) App Security mit OAuth

Page 37: SharePoint 2013 Security

Fabian MoritzITaCS GmbHMVP SharePoint Server

[email protected]

http://www.itacs.de

@FabianMoritz

http://sharepointcommunity.de/fabianm

Daniel LindemannITaCS GmbHSenior Entwickler

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

@DanielLindemann

http://www.dlindemann.de/blog

Page 38: SharePoint 2013 Security

Recommended