Freigeben über


Sicherheitsüberlegungen für LightSwitch

Die meisten Geschäftsanwendungen verfügen über Sicherheitsanforderungen.Es kann z. B. sein, dass Sie einschränken möchten, welche Mitarbeiter Zugriff auf eine Anwendung und auf Bildschirme in einer Anwendung haben, und die Benutzer festlegen möchten, die bestimmte Daten anzeigen oder aktualisieren dürfen.LightSwitch stellt ein integriertes Authentifizierungs- und Autorisierungsmodell bereit, das die Implementierung der Sicherheit in der Anwendung vereinfacht.

Authentifizierung und Autorisierung

Die Authentifizierung ist ein Mechanismus zur Überprüfung von Benutzeridentitäten.Wenn Sie sich z. B. bei Windows anmelden, wird Ihre Identität anhand Ihres Benutzernamens und des dazugehörigen Kennworts authentifiziert.Die Autorisierung ist ein Mechanismus, mit dem definiert wird, welche Schritte Benutzer ausführen dürfen.Ein Mitarbeiter darf z. B. die eigenen Gehaltslisteninformationen anzeigen, sich jedoch normalerweise nicht selbst eine Gehaltserhöhung genehmigen.

In LightSwitch wird die Authentifizierung von einem Anmeldebildschirm behandelt, der für die Identifizierung von Benutzern verwendet wird.Nachdem ein Benutzer authentifiziert wurde, wird mithilfe von Rollen und Berechtigungen festgelegt, wozu dieser Benutzer in der Anwendung berechtigt ist.

Gg481776.collapse_all(de-de,VS.110).gifAktivieren der Authentifizierung

Die Authentifizierung in LightSwitch ist standardmäßig deaktiviert. Sie können diese Funktion im Anwendungs-Designer auf der Registerkarte Zugriffssteuerung aktivieren.Sowohl die Windows-Authentifizierung als auch die Formularauthentifizierung werden unterstützt.Bei der Windows-Authentifizierung werden Benutzer mithilfe ihrer Windows-Anmeldeinformationen identifiziert.Bei der Formularauthentifizierung erstellt ein Anwendungsadministrator die Benutzeridentitäten und Kennwörter.

Wenn Sie die Windows-Authentifizierung auswählen, können Sie auch angeben, ob bestimmte Benutzer oder alle Windows-Benutzer Zugriff auf die Anwendung erhalten.Wenn Sie alle Benutzer auswählen, kann jeder Benutzer, der über eine gültige Windows-Anmeldekennung verfügt, auf die Anwendung zugreifen. Die Benutzer erhalten aber nur minimale Berechtigungen.Sie können einzelnen Benutzern je nach Bedarf Rollen und Berechtigungen zuweisen.

Gg481776.collapse_all(de-de,VS.110).gifBerechtigungen, Benutzer und Rollen

Die Autorisierung wird in LightSwitch per Definition von Berechtigungen, Benutzern und Rollen realisiert.Berechtigungen werden vom Entwickler im Anwendungs-Designer auf der Registerkarte Zugriffssteuerung erstellt. Die Auswirkung dieser Berechtigungen wird durch das Schreiben von Code implementiert.Sie können z. B. eine ViewSales-Berechtigung erstellen, um für Benutzer das Anzeigen eines Vertriebsbildschirms zu autorisieren.In der CanView-Methode für den Bildschirm können Sie Code schreiben, mit dem das Anzeigen des Bildschirms nur zugelassen wird, wenn der aktuelle Benutzer über Anzeigeberechtigungen für den Bildschirm verfügt.Zusätzlich zum Festlegen von Berechtigungen für die Anzeige von Bildschirmen können Sie auch Berechtigungen erstellen, die den Zugriff auf einzelne Steuerelemente auf einem Bildschirm, auf Datenentitäten oder Felder einer Entität, auf Abfragen usw. einschränken.

Rollen werden vom Anwendungsadministrator erstellt, nachdem die Anwendung bereitgestellt wurde.Eine Rolle enthält eine oder mehrere Berechtigungen.Der Administrator kann z. B. eine Vertriebsrolle definieren und dieser Rolle die ViewSales-Berechtigung zuweisen.Der Anwendungsadministrator fügt auch Benutzer hinzu und weist Benutzern Rollen zu.Wenn Bob z. B. in der Vertriebsabteilung arbeitet, könnte der Administrator Bob als Benutzer hinzufügen, indem er seine Authentifizierungsinformationen hinzufügt und ihm anschließend die Rolle "Vertrieb" zuweist.Wenn die Anwendung ausgeführt wird, wertet der Code Bobs Benutzerinformationen aus, stellt fest, dass er ein Member der Rolle "Vertrieb" ist, und zeigt das Menüelement zum Anzeigen des Bildschirms "Vertrieb" an.

Jede Anwendung verfügt über eine Standardberechtigung: die SecurityAdministration-Berechtigung.Diese Berechtigung gewährt Zugriff auf die Verwaltungsbildschirme Benutzer und Rollen, die vom Anwendungsadministrator verwendet werden.Wenn Sie eine Anwendung zum ersten Mal veröffentlichen, können Sie Authentifizierungsinformationen für den Standardanwendungsadministrator angeben.Wenn diese Person die Anwendung das erste Mal ausführt, kann sie die Bildschirme Benutzer und Rollen öffnen und Benutzer und Rollen definieren.

Gg481776.collapse_all(de-de,VS.110).gifTesten der Autorisierung

Stellen Sie beim Testen einer Anwendung sicher, dass alle definierten Berechtigungen wie erwartet funktionieren.Aktivieren Sie hierzu im Anwendungs-Designer die Debugberechtigungen auf der Registerkarte Zugriffssteuerung.Wenn Sie z. B. eine ViewSales-Berechtigung definiert haben, können Sie das Kontrollkästchen Für Debuggen gewährt für diese Berechtigung aktivieren.Beim Debuggen der Anwendung können Sie überprüfen, ob Sie den Bildschirm "Vertrieb" anzeigen können. Verwenden Sie dafür einen Benutzer, der über die ViewSales-Berechtigung verfügt.Sie können eine beliebige Kombination von Berechtigungen festlegen, um die Berechtigungen zu emulieren, die einer angegebenen Rolle zugewiesen sein können.

HinweisHinweis

Wenn Sie die SecurityAdministration-Berechtigung für das Debugging aktivieren, können Sie die Verwaltungsbildschirme Benutzer und Rollen anzeigen, während Sie das Debugging ausführen.Sie können in diesen Bildschirmen zwar Benutzer und Rollen eingeben. Die Benutzer und Rollen werden aber nicht mit der Anwendung bereitgestellt und können nicht zum Debuggen von Berechtigungen verwendet werden.

Gg481776.collapse_all(de-de,VS.110).gifSichere Verbindungen

Bei Clientanwendungen mit drei Ebenen, die auf LightSwitch basieren und auf einem Server gehostet werden, der Internetinformationsdienste (IIS) ausführt, erfolgt die Kommunikation zwischen Anwendung und Server über das HTTP-Protokoll. Es wird also nicht das HTTPS-Protokoll mit höherer Sicherheit verwendet.Aufgrund dieser Anforderung besteht für die Anwendung eine potenzielle Gefährdung durch Angreifer.Die Secure Sockets Layer (SSL)-Verschlüsselung hilft, vertrauliche oder persönliche Informationen zu schützen, die zwischen einer Clientanwendung und einem Server gesendet werden.Wenn SSL aktiviert ist, verwenden Remoteclientanwendungen für den Serverzugriff URLs, die mit "https://" beginnen.Es wird empfohlen, SSL für jede Website zu konfigurieren, auf der eine auf LightSwitch basierende Anwendung gehostet wird.Weitere Informationen finden Sie unter Konfigurieren von Secure Sockets Layer in IIS 7.

So aktivieren Sie SSL

  1. Wählen Sie in der Menüleiste die Option Erstellen und dann Veröffentlichen aus.

  2. Klicken Sie im Assistenten zum Veröffentlichen von Anwendungen auf die Registerkarte Sicherheitseinstellungen.

  3. Wählen Sie im Abschnitt Sichere Verbindung erfordern (HTTPS) die Optionsschaltfläche Ein aus.

    HinweisHinweis

    Wenn diese Einstellung aktiviert ist, muss die Website für die Verwendung von HTTPS konfiguriert sein.

Auch bei Anwendungen mit drei Ebenen, die SQL Server für die Datenebene verwenden, ist die Kommunikation zwischen IIS und der Datenbank potenziell gefährdet.Es wird empfohlen, SSL für jede Datenbank zu konfigurieren, auf die von einer auf LightSwitch basierenden Anwendung zugegriffen wird.Weitere Informationen finden Sie unter Verschlüsseln von Verbindungen mit SQL Server.

Gg481776.collapse_all(de-de,VS.110).gifSicherheit und Versionskontrolle

Wenn Sie mit einem LightSwitch-Projekt arbeiten, das der Versionskontrolle unterliegt, kann eine Verbindungszeichenfolge in der Datei "web.config" den Benutzernamen und das Kennwort für den letzten Entwickler des Projekts enthalten.Diese Informationen stehen dann dem nächsten Entwickler zur Verfügung, der das Projekt auscheckt.

Dieser Sachverhalt trifft für eine veröffentlichte Anwendung nicht zu. Verbindungszeichenfolgen-Informationen aus dem Webpublishing-Assistenten werden nicht in der Versionskontrolle gespeichert.Indem Sie zur Entwurfszeit anstelle einer Produktionsdatenbank eine Testdatenbank verwenden, können Sie verhindern, dass unbefugte Benutzer auf Produktionsdaten zugreifen.

Gg481776.collapse_all(de-de,VS.110).gifWeitere Überlegungen zur Sicherheit

Zusätzlich zur Authentifizierung gibt es noch andere Sicherheitsaspekte, die Sie berücksichtigen sollten.Auch wenn in der Anwendung keine vertraulichen Geschäftsdaten verarbeitet werden, besteht für andere Informationen, z. B. Kennwörter, ein Diebstahlrisiko.

Die Sicherheit sollte auch berücksichtigt werden, wenn Sie Code schreiben, mit dem auf einen Server zugegriffen wird.Es kann z. B. sein, dass Sie Abfragecode zum Filtern von Mitarbeiterdaten schreiben, damit Mitarbeiter nur ihre eigenen Daten einsehen können:

Private Partial Sub Employees_All_PreprocessQuery(ByRef query As IQueryable(Of Application43.Employee))
    query = From item In query Where item.EmpName = Me.Application.User.Nameitem
End Sub

partial void Employees_All_PreprocessQuery(ref IQueryable<Application43.Employee> query)
{
    query = from item in query where item.EmpName == this.Application.User.Name select item;
}

Daten können auf diese Weise angezeigt werden. Allerdings werden ggf. Daten von anderen Mitarbeitern in den Fehlerinformationen offengelegt, wenn ein Benutzer versucht, Daten zu aktualisieren oder zu löschen, und dabei eine Parallelitätsausnahme auftritt.Um dies zu vermeiden, können Sie zusätzlichen Code in der Updating-Methode und der Deleting-Methode schreiben, um sicherzustellen, dass der Mitarbeiter nur eigene Daten einsehen kann:

Dim user As String = Me.Application.User.Name
If Me.DataWorkspace.ApplicationData.Employees.Where(Function(e) e.Id = entity.Id AndAlso e.EmpName = user).Execute().Count() = 0 Then
    Throw New DataServiceOperationException("Permission error: Cannot modify a record you don't have access to.")
End If

string user = this.Application.User.Name;
if (this.DataWorkspace.ApplicationData.Employees.Where(e => e.Id == entity.Id && e.EmpName == user).Execute().Count() == 0)
{
throw new DataServiceOperationException("Permission error: Cannot modify a record you don't have access to.");
}

Weitere allgemeine Informationen zu sicheren Programmiertechniken finden Sie unter Erstellen von sicheren Anwendungen.

Siehe auch

Aufgaben

LightSwitch-Authentifizierung und Autorisierung

Weitere Ressourcen

Bereitstellung: Verteilen und Verwalten Ihrer Anwendung

Debuggen: Suchen und Beheben von Fehlern