Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen!...

Preview:

Citation preview

Michael Hofer1stQuad Solutionsmhofer@1stquad.com

SharePoint 2010Sandboxed SolutionsEndlich kontrollierte SharePoint-Erweiterungen!Was ist neu für Entwickler und Administratoren?

AgendaWarum Sandboxed Solutions?

5‘Die Sandbox-Architektur

5‘Entwicklung (Demo)

15‘Administration (Demo)

15‘Full-Trust Proxies (Demo)

15‘Wrap-Up

5‘

Warum?

Wieso braucht SharePoint Sandboxed Solutions?

Erweiterungen unter MOSS 2007 / WSS 3.0Entwickler entwerfen, entwickeln & testen individuelle Erweiterungen. Entwickler

Erweiterungen unter MOSS 2007 / WSS 3.0Entwickler entwerfen, entwickeln & testen individuelle Erweiterungen.

Administratoren stellen Applikations-Sicherheit mittels spezieller Code-Access-Security (CAS) sicher.Können individuellen Code (meist) nicht prüfen (lassen).

Entwickler

Administratoren

Erweiterungen unter MOSS 2007 / WSS 3.0Entwickler entwerfen, entwickeln & testen individuelle Erweiterungen.

Administratoren stellen Applikations-Sicherheit mittels spezieller Code-Access-Security (CAS) sicher.Können individuellen Code (meist) nicht prüfen (lassen).

Site-Collection Besitzer aktivieren & benützen Erweiterungen.Melden schlechte Performance, Fehler und dergleichen.

Entwickler

Administratoren

Site-Collection Besitzer

Erweiterungen unter MOSS 2007 / WSS 3.0Entwickler entwerfen, entwickeln & testen individuelle Erweiterungen.

Administratoren stellen Applikations-Sicherheit mittels spezieller Code-Access-Security (CAS) sicher.Können individuellen Code (meist) nicht prüfen (lassen).

Site-Collection Besitzer aktivieren & benützen Erweiterungen.Melden schlechte Performance, Fehler und dergleichen.

Entwickler

Administratoren

Site-Collection Besitzer

Undisposed Objects?Memory Leaks?

Performace?Stabilität?

Der häufigste Grund für SharePoint Support Cases:CUSTOM CODE

Neu: Sandboxed Solutions“Normale” SharePoint Solutions (WSP), aberTeilmenge (Subset) der SharePoint Funktionalität / Namespaces wird unterstützt.Code wird in einer geschützten “SandBox” in einem eigenen Prozess mit spezieller CAS ausgeführt:

Mit Ressourcen verbinden, die nicht auf dem lokalen Server sind? Verboten!Das Threading-Modell ändern? Verboten!Auf das Datei-System schreiben? Verboten!Unmanaged Code aufrufen? Verboten!Ressourcen von anderen Site-Collections? Verboten!

Werden von Site-Collection Administratoren in “Solution Gallery” installiert, aktiviert, überwacht, deaktiviert und –installiert.

SharePoint 2010 Sandboxed Solutions

EntwicklerEntwickler entwerfen, entwickeln & testen individuelle Erweiterungen.

SharePoint 2010 Sandboxed Solutions

Entwickler

Site-Collection Besitzer

Entwickler entwerfen, entwickeln & testen individuelle Erweiterungen.

Site-Collection Besitzer installieren und aktivieren die Erweiterungen.Überwachen und deaktivieren Erweiterungen falls nötig.

SharePoint 2010 Sandboxed SolutionsEntwickler entwerfen, entwickeln & testen individuelle Erweiterungen.

Site-Collection Besitzer installieren und aktivieren die Erweiterungen.Überwachen und deaktivieren Erweiterungen falls nötig.

Administratoren überwachen die Gesamtheit der Erweiterungen.Automatisches “Throttling” & Abstellen von problematischen Erweiterungen.

Entwickler

Administratoren

Site Collection Besitzer

Architektur

Die Architektur der Sandbox

Die Sandbox-Architektur

Worker Service(SPUCWorkerProcess.ex

e)

Full Object Model

Host Services (SPUCHostService.exe)

Execution Manager

(Inside Application Pool)

Subset Object Model

Untrusted Code

IIS(WPW3.EXE)

FRONT END BACK END

Worker Service(SPUCWorkerProcess.ex

e)

Full Object Model

Host Services (SPUCHostService.exe)

Execution Manager

(Inside Application Pool)

Subset Object Model

Untrusted Code

IIS(W3WP.EXE)

FRONT END BACK END

Die Sandbox-Architektur

Subset-Model

Request

Die Sandbox-Architektur

Worker Service(SPUCWorkerProcess.ex

e)

Full Object Model

Host Services (SPUCHostService.exe)

Execution Manager

(Inside Application Pool)

Subset Object Model

Untrusted Code

IIS(W3WP.EXE)

FRONT END BACK END

Full-Model Request

Worker Service(SPUCWorkerProcess.ex

e)

Full Object Model

Host Services (SPUCHostService.exe)

Execution Manager

(Inside Application Pool)

Subset Object Model

Untrusted Code

IIS(W3WP.EXE)

FRONT END BACK END

Die Sandbox-Architektur

Resource Wasting

Call

while(true) { //Do a Bad Bad Thing! }

Run for30sec

Sandbox

Code Access SecurityAspNetHostingPermission, Level=MinimalSharePointPermission, ObjectModel=trueSecurityPermission, Flags=Execution

Full Trust

wss_usercode.config

User Code

Framework Code

My.dll

Other.dll System DLL

SharePoint DLL

SharePoint OM

Subset OM

Entwicklung

Entwicklung von Sandboxed Solutions

Geht NICHTFarm & Web Application FeaturesTimer JobsSharePoint/Visuelle Web PartsVerwenden der WebPartManagerProgrammatische WorkflowsDateien im Dateisystem / SharePoint RootContent Type BindingCustom Action groupsHideCustomAction element

Geht:Content Types, Site ColumnsList Definitions & InstancesWeb TemplatesSite PagesNavigationASP.NET web partsDeklarative WorkflowsEvent Receivers, Feature ReceiversCustom ActionsInfoPath Forms Services (not admin-appr)JavaScript, AJAX, jQuery, SilverlightModule / Dateien

Was geht und was nicht

WebParts in der Sandbox:Müssen von System.Web.UI.WebControls.WebParts.WebPart abgeleitet seinKeine WebPart-ConnectionsKeine asynchronen Post-BacksClient-Scripts müssen beim ScriptManager registriert werden.

Einschränkungen im ObjektmodellMicrosoft.SharePoint ausser

• (einige) SPSite Konstruktor• SPSecurity Objekt• SPWorkItem and SPWorkItemCollection Objekte• SPAlertCollection.Add Methode• SPAlertTemplateCollection.Add Methode• SPUserSolution and SPUserSolutionCollection Objekte• SPTransformUtilities

Microsoft.SharePoint.NavigationMicrosoft.SharePoint.Utilities ausser

• SPUtility.SendEmail Methode• SPUtility.GetNTFullNameandEmailFromLogin Methode

Microsoft.SharePoint.WorkflowMicrosoft.SharePoint.WebPartPages ausser

• SPWebPartManager Objekt• SPWebPartConnection Objekt• WebPartZone Objekt• WebPartPage Objekt• ToolPane Objekt• ToolPart Objekt

Referenz: http://msdn.microsoft.com/en-us/library/ee537860(office.14).aspx

Gleiches Vorgehen wie bei Farm Solutions: Gleiche Projekt-/Package Struktur,gleiches Objekt- und Deklarationsmodell.

ACHTUNG: Visual Studio 2010 brauchtIntelliSense um Full-Trust Typen zuverstecken, aber der Code wird gegen dievolle API kompiliert!

Workaround: Microsoft.SharePoint.dll Projekt-Reference auf Version der SandBox ändern: [..]\14\UserCode\Assemblies\Microsoft.SharePoint.dll

ACHTUNG: Wieder zurücksetzten vor dem Deployment

Sandboxed Solutions entwickeln

Full Object Model Subset Object Model

MyWebPart.dll

Proxy

Runtime

Demo

Sandboxed Solution entwickeln

Administration

Sandboxed Solutions administrieren & validieren

Ausführung von User-(Sandboxed)-Solutions ist ein Farm-Server Service.

Skalierbar!

Load-BalancingAufgerufener Server, oderUmleitung auf Server nach “Solution Affinity”

Eigene Regeln möglich!

Farm-Architektur & Skalierung

In Central AdministrationEinzelne Solutionskomplett blockieren

Quotas setzenPro Site CollectionIn Quota TemplateMaximum & WarningRessource Usage per day

Mit Power ShellGet-SPSite | foreach-object {$_.Quota.UserCodeMaximumLevel = 300}Get-SPSite | foreach-object {$_.Quota.UserCodeWarningLevel = 100}

Administration von Sandboxed Solutions

Bei der Ausführung einer Sandboxed Solution werden best. Metriken erfasstz.B. % Prozessor-Zeit oder Nr. von unbehandelten Exceptions

Timer Jobs kompilieren die Metriken und berechnen einen Ressourcen-Verbrauch im PunktesystemWenn alle Sandboxed Solutions einer Site Collection zusammen die täglich möglichen Ressourcen-Punkte verbraucht haben wird die gesamte Sandbox der Site Collection abgestellt.Benutzer sehen den gesamten Verbrauch sowie den individuellen Verbrauch je Solution in der Solution-Gallery:

Wie funktionieren Resource Quotas?

Überwachte RessourcenMetric Name Description Units

Resources Per Point

Hard Limit

AbnormalProcessTerminationCount

Process gets abnormally terminated

Count 1 1

CPUExecutionTime CPU exception time Seconds 3,600 60CriticalExceptionCount Critical exception fired Number 10 3

InvocationCountNumber of times solution has been invoked

Count N/A N/A

PercentProcessorTimeNote: # of cores not factored in

Percentage Units of Overall Processor Consumed

85 100

ProcessCPUCycles CPU Cycles 1E+111E+11

ProcessHandleCount Windows Handles 10,000 1,000

ProcessIOBytes(Hard Limit Only) Bytes written to IO

Bytes 01E+08

ProcessThreadCountNumber of Threads in Overall Process

Threads 10,000 200

ProcessVirtualBytes(Hard Limit Only) Memory consumed

Bytes 01E+09

SharePointDatabaseQueryCount

SharePoint DB Queries Invoked

Number 20 100

SharePointDatabaseQueryTimeAmount of time spent waiting

for a query to be performedSeconds 120 60

UnhandledExceptionCount Unhanded Exceptions 50 3

UnresponsiveprocessCountWe have to kill the process because it has become unresponsive

Number 2 1

Erlauben, Sandboxed Solutions vor der Aktivierung zu überprüfenCode-Klassen, die von SPSolutionValidator ableiten:

Registrieren:

Validatoren

SPUserCodeService sandboxService = SPUserCodeService.Local;SPSolutionValidator publicKeyTokenSolutionValidator =

new PublicKeyTokenSolutionValidator(sandboxService);

sandboxService.SolutionValidators.Add(publicKeyTokenSolutionValidator);

public class PublicKeyTokenSolutionValidator : SPSolutionValidator{ public const string InternalName = "PublicKeyTokenSolutionValidator";

public PublicKeyTokenSolutionValidator() { ... }

public PublicKeyTokenSolutionValidator(SPUserCodeService sandboxService) : base(InternalName, sandboxService) { ... }

public override void ValidateSolution(SPSolutionValidationProperties properties) { ... }

public override void ValidateAssembly(SPSolutionValidationProperties properties, SPSolutionFile assembly) {...}

}

Demo

Sandboxed Solutions administrieren & validieren

Full-Trust Proxies

Die Sandbox mit Full-Trust Proxies erweitern

Erlauben den Zugriff auf Sandbox-geschützte RessourcenSPProxyOperationsArgs = Bindeglied zwischen Farm und SandboxSPProxyOperation = Farm-Seitig registrierte Full-Trust Operationen

Full-Trust Proxy

Worker Service(SPUCWorkerProcess.exe)

SPUtility. ExecuteRegisteredProxyOperation

SPProxyOperationsArgs

GAC

SPProxyOperation

SPProxyOperationsArgs

Untrusted Code

SecuredResource

Demo

Die Sandbox mit Full-Trust Proxies erweitern

Top 10 Gründe für Sandboxed Solutions1. Neue Möglichkeiten: Hoster, MS-Online etc.2. Sicherer, stabiler und überwachbar.3. Verändern und installieren keine System-Files.4. Beeinträchtigen keine anderen Site-Collections.5. Kein Application Pool Recycling, separate Prozesse.6. Verwaltung delegiert zu Site-Collection Besitzer.7. Skalierbare Service-Architektur & Load-Balancing.8. Erweiterbar dank Validatoren und Full-Trust-

Proxies.9. (Fast) keine komplexen CAS-Policies mehr.10.Erlauben SLA’s via Resource Quotas.

Vielen Dank für Ihre AufmerksamkeitFür mehr Informationen kontaktieren Sie bitte:

Michael HoferSolution Architect

mhofer@1stquad.comTel 043 541 13 35Mobile 079 825 35 08

1stQuad SolutionsSonnenbergstrasse 328603 Schwerzenbach

MSDNWhat‘s new: Sandboxed SolutionsSandboxed Solution ConsiderationsPlan for Sandboxed SolutionsSandboxed Solutions ArchitectureConfigure a farm for Sandboxed SolutionsDeveloping, Deploying and Monitoring Sandboxed Solutions

OtherChannel 9 Sandbox Solutions VideosSharePointDev Wiki – Sandboxed Solutions

Links & Ressourcen

Recommended