SharePoint 2013 Security

Post on 24-Jun-2015

830 views 1 download

transcript

SharePoint SecurityDas Sicherheitssystem von SharePoint 2013

Fabian MoritzMVP SharePoint Server

Daniel LindemannSenior Entwickler

Agenda

Identitäten und Authentifizierung

Rollen, Rechte und Berechtigungen

Heraufstufung und Impersonifizierung

(Cloud) App Security mit OAuth

Identitäten

App Pool

Farm

System

Benutzer

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

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

Authentifizierungsprozess

Quelle: http://msdn.microsoft.com

Was ist ein Claim?

i:0#.w|itacs\daniel

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

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|fm@itacs.de

i:0#.f|membership|fabianm

Claims vs. Identity

Identity Claims

VS

Identität ermitteln

• Der alte WegHttpContext.Current.Identity;

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

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

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

DemoFormular-basierte Authentifzierung

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

Berechtigungslevel

SharePoint-Rechte

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;

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

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", "fabian.moritz@itacs.de","Fabian Moritz",

"SharePoint MVP");

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

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

SharePoint-Objekte absichern

• Jedes Objekt verfügt über eine ACL

• ACLs werden vererbt(der Parent wird genutzt)

• Aufbrechen möglich

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

DemoBenutzer, Gruppen und Berechtigungen

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

});

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

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

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

SharePoint

SharePoint

App Web

Cloud App

SharePoint

Apps Authentifizierung

SharePoint

Sandbox

OA

uth

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

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

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>

Agenda

Identitäten und Authentifizierung

Rollen, Rechte und Berechtigungen

Heraufstufung und Impersonifizierung

(Cloud) App Security mit OAuth

Fabian MoritzITaCS GmbHMVP SharePoint Server

Fabian.Moritz@itacs.de

http://www.itacs.de

@FabianMoritz

http://sharepointcommunity.de/fabianm

Daniel LindemannITaCS GmbHSenior Entwickler

Daniel.Lindemann@itacs.dehttp://www.itacs.de

@DanielLindemann

http://www.dlindemann.de/blog