Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und...

37
SharePoint Security Das Sicherheitssystem von SharePoint 2013 Fabian Moritz MVP SharePoint Server Daniel Lindemann Senior Entwickler

Transcript of Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und...

Page 1: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

SharePoint SecurityDas Sicherheitssystem von SharePoint 2013

Fabian MoritzMVP SharePoint Server

Daniel LindemannSenior Entwickler

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

Agenda

Identitäten und Authentifizierung

Rollen, Rechte und Berechtigungen

Heraufstufung und Impersonifizierung

(Cloud) App Security mit OAuth

Page 3: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

Identitäten

App Pool

Farm

System

Benutzer

Page 4: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

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: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

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: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

Authentifizierungsprozess

Quelle: http://msdn.microsoft.com

Page 7: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

Was ist ein Claim?

i:0#.w|itacs\daniel

Page 8: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

SharePoint Claims Encoding

i:0#.w|itacs\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 = formsw/s/m/r/t/c/f

etc.

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

Page 9: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

Claims Encoding BeispieleWindows Account CONTOSO\fabianmAlle authentifizierten Windows-NutzerWindows-SicherheitsgruppeFederated Location mit E-Mail als Login NamenMembership 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: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

Claims vs. Identity

Identity Claims

VS

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

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

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

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

Page 12: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

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: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

DemoFormular-basierte Authentifzierung

Page 14: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

Agenda

Identitäten und Authentifizierung

Rollen, Rechte und Berechtigungen

Heraufstufung und Impersonifizierung

(Cloud) App Security mit OAuth

Page 15: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

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

Page 16: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

Berechtigungslevel

Page 17: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

SharePoint-Rechte

Page 18: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

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 19: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

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 20: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

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 21: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

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 22: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

SharePoint-Objekte absichern• Jedes Objekt verfügt

über eine ACL• ACLs werden vererbt

(der Parent wird genutzt)• Aufbrechen möglich

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

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 24: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

DemoBenutzer, Gruppen und Berechtigungen

Page 25: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

Agenda

Identitäten und Authentifizierung

Rollen, Rechte und Berechtigungen

Heraufstufung und Impersonifizierung

(Cloud) App Security mit OAuth

Page 26: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

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 27: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

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 28: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

Agenda

Identitäten und Authentifizierung

Rollen, Rechte und Berechtigungen

Heraufstufung und Impersonifizierung

(Cloud) App Security mit OAuth

Page 29: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

SharePoint 2013 Apps

Plattformen Dienste und DatenApps

Apps Store und Katalog

Urlaubs-antrag

EventManagement

Währungsrechner

Urlaubs-antrag

RisikoManagementHelp Desk

Page 30: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

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 31: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

SharePoint

SharePoint

App Web

Cloud App

SharePoint

Apps Authentifizierung

SharePoint

Sandbox

OAuth

Page 32: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

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 STS

2

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

SharePoint leitet den Token an den Nutzer weiter

4

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

8

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

Die App sendet das HTML an den Client10

Quelle: http://msdn.microsoft.com

Page 33: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

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 34: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

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 35: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

Agenda

Identitäten und Authentifizierung

Rollen, Rechte und Berechtigungen

Heraufstufung und Impersonifizierung

(Cloud) App Security mit OAuth

Page 36: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.

Fabian MoritzITaCS GmbHMVP SharePoint Server

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

@FabianMoritzhttp://sharepointcommunity.de/fabianm

Daniel LindemannITaCS GmbHSenior Entwickler

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

@DanielLindemannhttp://www.dlindemann.de/blog

Page 37: Agenda Identitäten und Authentifizierung Rollen, Rechte und Berechtigungen Heraufstufung und Impersonifizierung (Cloud) App Security mit OAuth.