7.-8. März 2013, Rosenheim SharePoint Security Das Sicherheitssystem von SharePoint 2013 Fabian...
-
Upload
gertraud-stockman -
Category
Documents
-
view
112 -
download
1
Transcript of 7.-8. März 2013, Rosenheim SharePoint Security Das Sicherheitssystem von SharePoint 2013 Fabian...
7.-8. März 2013, Rosenheim
SharePoint SecurityDas Sicherheitssystem von
SharePoint 2013
Fabian Moritz | MVP SharePoint Server
Veranstalter:
Agenda
Identitäten und Authentifizierung
Rollen, Rechte und Berechtigungen
Heraufstufung und Impersonifizierung
(Cloud) App Security mit OAuth
Veranstalter:
Identitäten
App Pool
Farm
System
Benutzer
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
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
Veranstalter:
Authentifizierungs-Prozess
Quelle: http://msdn.microsoft.com
Veranstalter:
SharePoint Claims Encoding
i:0#.w|contoso\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 = forms
w/s/m/r/t/c/f etc.
Claim Wert Bei Forms mit weiteren | für den Namen des Herausgebers
Login Name
Veranstalter:
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
Veranstalter:
Identität ermitteln
• Der alte WegHttpContext.Current.Identity;
• Weiterhin möglichSPContext.Current.Web.CurrentUser;
• Der Claims WegIClaimsIdentity identity = (ClaimsIdentity)Thread .CurrentPrincipal.Identity;
DemoFormular-basierte Authentifzierung
Veranstalter:
Agenda
Identitäten und Authentifizierung
Rollen, Rechte und Berechtigungen
Heraufstufung und Impersonifizierung
(Cloud) App Security mit OAuth
Veranstalter:
Die Rolle der Site Collection
• Sicherheitsgrenze• Hierarchie von Webs• Gruppendefinition• Höchste Einheit der Berechtigungs-
vererbung• Backup / Recovery• Site Coll. Papierkorb
Veranstalter:
Berechtigungslevel
Veranstalter:
SharePoint-Rechte
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;
Veranstalter:
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);}
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);
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);
Veranstalter:
SharePoint-Objekte absichern
• Jedes Objekt verfügt über eine ACL
• ACLs werden vererbt(der Parent wird genutzt)
• Aufbrechen möglich
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();
DemoBenutzer, Gruppen und Berechtigungen
Veranstalter:
Agenda
Identitäten und Authentifizierung
Rollen, Rechte und Berechtigungen
Heraufstufung und Impersonifizierung
(Cloud) App Security mit OAuth
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
});
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 }}
DemoHeraufstufung und Impersonifizierung
Veranstalter:
Agenda
Identitäten und Authentifizierung
Rollen, Rechte und Berechtigungen
Heraufstufung und Impersonifizierung
(Cloud) App Security mit OAuth
Veranstalter:
SharePoint 2013 Apps
Plattformen Dienste und DatenApps
Apps Store und Katalog
Urlaubs-antrag
EventManagement
Währungsrechner
Urlaubs-antrag
RisikoManagementHelp Desk
Veranstalter:
App Architektur
Plat
tfor
mA
pp
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
Veranstalter:
SharePoint
SharePoint
App Web
Cloud App
SharePoint
Apps Authentifizierung
SharePoint
Sandbox
OAuth
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
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
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>
Veranstalter:
Agenda
Identitäten und Authentifizierung
Rollen, Rechte und Berechtigungen
Heraufstufung und Impersonifizierung
(Cloud) App Security mit OAuth
Veranstalter:
Und nun?
• Laden Sie sich die Beispiele herunterhttp://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
Veranstalter:
Fabian MoritzITaCS GmbHMVP SharePoint Server
[email protected]://www.itacs.de
@FabianMoritz
http://sharepointcommunity.de/fabianm