Fabian Moritz - SharePointCommunity

Werbung
7.-8. März 2013, Rosenheim
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
Veranstalter:
Identitäten
Farm
App Pool
System
Benutzer
Veranstalter:
SharePoint vs. Windows-Identität
Worker Prozess
SharePoint-Objekte
Listen, Bibliotheken, Dateien
SharePoint System
App Pool Account
Backend-Datenbanken
SQL Server
XML-Dateien und
andere Ressourcen
Webserver
Veranstalter:
Authentifizierung
Classic
NT Token
Windows
Identität
Nur noch via
PowerShell
Claims
NT Token
Windows
Identität
ASP.NET (FBA)
LDAP, Custom,
etc.
SAML 1.1
ADFS, Live ID,
etc.
SAML Token
Claims Identität
SPUser
Veranstalter:
Authentifizierungs-Prozess
Quelle: http://msdn.microsoft.com
Veranstalter:
SharePoint Claims Encoding
i:0#.w|contoso\fabian
Claim Identität
c = andere
Identitäten
Reserviert für
zukünftige
Claim Typen
0
i:/c:
Claim Typ
# = Logon,
5 = e-mail,
- = role
+ = group
% = farm
! = identity
provider
#/./?/S etc.
Herausgeber
w = windows,
s = local STS
m = membership
r = role
t = trusted STS
p = personal
c = claim provider
f = forms
Claim Wert
Bei Forms mit
weiteren | für den
Namen des
Herausgebers
w/s/m/r/t/c/f etc.
Veranstalter:
Login Name
Claims Encoding Beispiele
Windows Account
CONTOSO\fabianm
Alle authentifizierten
Windows-Nutzer
i:0#.w|contoso\fabianm
c:0!.s|windows
WindowsSicherheitsgruppe
c:0+.w|s-1-5-21…
Federated Location mit
E-Mail als Login Namen
i:05.t|azure|[email protected]
Membership Provider
i:0#.f|membership|fabianm
Veranstalter:
Identität ermitteln
• Der alte Weg
HttpContext.Current.Identity;
• Weiterhin möglich
SPContext.Current.Web.CurrentUser;
• Der Claims Weg
IClaimsIdentity identity =
(ClaimsIdentity)Thread
.CurrentPrincipal.Identity;
Veranstalter:
Demo
Formular-basierte Authentifzierung
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 Berechtigungsvererbung
• 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 Nutzer
SPUserCollection users = currentWeb.Users;
// Authentifizierte Nutzer
SPUserCollection allUsers = currentWeb.AllUsers;
// Alle Nutzer
SPUserCollection siteUsers = currentWeb.SiteUsers;
Veranstalter:
SPWeb.EnsureUser
• Der alte Weg
SPUser theOldWay = SPContext.Current.Web.EnsureUser(@"contoso\fritzh");
• Der Weg mit Claims
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 Teilnehmen
SPRoleDefinition roleContribute =
currentWeb.RoleDefinitions.GetByType(SPRoleType.Contributor) ;
//Neues RoleAssignment erzeugen
SPRoleAssignment roleAssignment = new SPRoleAssignment(
"i:0#.f|ldapmember|fabianm",
"[email protected]",
"Fabian Moritz",
"SharePoint MVP");
//Teilnehmenrecht der Rolle zuweisen
roleAssignment.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 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);
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 list
SPList docs = web.GetListFromUrl(
web.Url + "/Freigegebene Dokumente/Forms/AllItems.aspx");
// get members group and assignment
SPGroup group = web.SiteGroups["Mitglieder"];
SPRoleAssignment groupAssignment = new SPRoleAssignment(group);
SPRoleDefinition roleRead = web.RoleDefinitions.GetByType(SPRoleType.Reader);
// break role inheritance
docs.BreakRoleInheritance(false);
groupAssignment.RoleDefinitionBindings.Add(roleRead);
docs.RoleAssignments.Add(groupAssignment);
// reset role inheritance
docs.ResetRoleInheritance();
Veranstalter:
Demo
Benutzer, Gruppen und Berechtigungen
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 WindowsIdentität
• Claims to Windows Token Service
// ist aktuelle Identität ein WinClaim
if (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
}
}
Veranstalter:
Demo
Heraufstufung und Impersonifizierung
Agenda
Identitäten und Authentifizierung
Rollen, Rechte und Berechtigungen
Heraufstufung und Impersonifizierung
(Cloud) App Security mit OAuth
Veranstalter:
SharePoint 2013 Apps
Veranstalter:
App Architektur
REST, OAuth, OData, Remote Events
SharePoint & Exchange Server
Office 365
On-Premise Plattformen
IIS
Workflow
SQL
Azure Runtime
Azure Websites
Azure Workflows
SQL Azure
On Premises
Cloud
Veranstalter:
Apps Authentifizierung
OAuth
Veranstalter:
Authentifizierungs-Prozess
1
SharePoint authentifiziert den Client mit CLAIMS
2
SharePoint erfragt den Kontext-Token beim STS
3
ACS (Access Control Service)
gibt den (signierten) Kontext-Token zurück
4
SharePoint leitet den Token an den Nutzer weiter
5
Der Nutzer greift mit dem Token auf die App zu (wird als
IFrame in der Seite gerendert)
6
Die App extrahiert den Kontext-Token und übergibt
diesen dem ACS (Access Control Service)
7
Der ACS gibt einen Zugriffs-Token mit den Rechten des
Nutzers an die App zurück
8
Die App greift via CSOM/REST auf die SharePointWebsite mit dem Access Token (OAuth) zu
9
SharePoint authentifiziert die App und verarbeitet die
CSOM/REST-Abfrage
10
Quelle: http://msdn.microsoft.com
Die App sendet das HTML an den Client
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 herunter
http://sharepointcommunity.de/fabianm
• Registrieren Sie sich für eine Office 365
Developer Site
http://msdn.microsoft.com/en-us/library/fp179924.aspx
• Nutzen Sie die MSDN Library
http://msdn.microsoft.com/en-US/
• Machen Sie sich mit Claims, OAuth und dem
App Development vertraut
Veranstalter:
Fabian Moritz
ITaCS GmbH
MVP SharePoint Server
[email protected]
http://www.itacs.de
http://sharepointcommunity.de/fabianm
@FabianMoritz
Veranstalter:
Herunterladen