Condividi tramite


Considerazioni sulla sicurezza per LightSwitch

La maggior parte delle applicazioni di business dispongono di requisiti di sicurezza.Ad esempio, potrebbe essere necessario limitare il numero di dipendenti che hanno accesso ad un'applicazione, o alle schermate di un'applicazione e il numero di utenti che possono visualizzare o aggiornare determinati dati.LightSwitch fornisce un'autenticazione incorporata e un modello di autorizzazione che può consentire l'implementazione della sicurezza nell'applicazione.

Autenticazione e autorizzazione

L'autenticazione è un meccanismo per verificare l'identità di un utente.Ad esempio, quando si accede a Windows, il nome utente e la password autenticano l'identità dell'utente.L'autorizzazione è un meccanismo per definire le operazioni che l'utente può eseguire.Ad esempio, un dipendente potrebbe essere in grado di visualizzare le informazioni sul libro paga, ma probabilmente non è autorizzato ad aumentarsi lo stipendio.

In LightSwitch, l'autenticazione viene gestita da una schermata di accesso utilizzata per identificare l'utente.Una volta autenticato un utente, i ruoli e le autorizzazioni determinano cosa l'utente è autorizzato a fare nell'applicazione.

Gg481776.collapse_all(it-it,VS.110).gifAbilitazione dell'autenticazione

L'autenticazione in LightSwitch viene disabilitata per impostazione predefinita; viene abilitata sulla scheda Controllo di accesso di Progettazione applicazioni.Sono supportate sia l'autenticazione di Windows sia l'autenticazione basata su form.L'autenticazione di Windows utilizza le informazioni di accesso utenti di Windows per identificare l'utente.Con l'autenticazione basata su form, un amministratore dell'applicazione crea le identità e le password utente.

Quando si sceglie un'autenticazione di Windows, è possibile inoltre scegliere se utenti specifici o tutti gli utenti di Windows hanno accesso all'applicazione.Se si scelgono tutti gli utenti, qualsiasi utente con un ID di accesso Windows valido sarà in grado di accedere all'applicazione, ma disporrà solo delle autorizzazioni minime.È possibile assegnare ruoli e autorizzazioni a singoli utenti, se necessario.

Gg481776.collapse_all(it-it,VS.110).gifAutorizzazioni, utenti e ruoli

L'autorizzazione in LightSwitch viene portata a termine definendo le autorizzazioni, gli utenti e i ruoli.Le autorizzazioni vengono create dallo sviluppatore nella scheda Controllo di accesso di Progettazione applicazioni e l'effetto di tali autorizzazioni viene progettato scrivendo il codice.Ad esempio, è possibile creare un'autorizzazione ViewSales per autorizzare gli utenti a visualizzare una schermata Vendite.Nel metodo CanView per la schermata, si scrive il codice che consente alla schermata di essere visualizzata solo se all'utente corrente è stata concessa l'autorizzazione alla visualizzazione.Oltre all'impostazione delle autorizzazioni per la visualizzazione delle schermate, è possibile creare anche autorizzazioni per limitare l'accesso ai controlli singoli su una schermata, alle entità di dati o ai campi di un'entità, alle query e altro.

I ruoli sono creati dall'amministratore dell'applicazione dopo averla distribuita.Un ruolo contiene uno o più autorizzazioni.Ad esempio, l'amministratore potrebbe definire un ruolo Vendite e assegnare l'autorizzazione ViewSales a quel ruolo.L'amministratore dell'applicazione aggiunge anche utenti e assegna loro dei ruoli.Ad esempio, se Bob è nel reparto vendite, l'amministratore potrebbe aggiungere Bob come utente aggiungendo le sue informazioni di autenticazione e quindi assegnargli il ruolo Vendite.Quando viene eseguita l'applicazione, il codice valuta le informazioni utente di Bob, vede che è un membro del ruolo Vendite e visualizza la voce di menu per visualizzare la schermata Vendite.

Ogni applicazione ha un'autorizzazione predefinita, l'autorizzazione SecurityAdministration.Questa autorizzazione concede l'accesso alle schermate amministrative Utenti e Ruoli utilizzate dall'amministratore dell'applicazione.Quando si pubblica un'applicazione per la prima volta, è possibile fornire informazioni di autenticazione per la persona che sarà l'amministratore dell'applicazione predefinito.Quando quella persona esegue l'applicazione per la prima volta, sarà in grado di vedere le schermate Utenti e Ruoli e definire gli utenti e i ruoli.

Gg481776.collapse_all(it-it,VS.110).gifVerifica autorizzazione

Quando si verifica un'applicazione l'utente desidera assicurarsi che le autorizzazioni definite funzionino come previsto.Questa operazione viene eseguita abilitando autorizzazioni di debug sulla scheda Controllo di accesso di Progettazione applicazioni.Ad esempio, se è stata definita un'autorizzazione ViewSales, è possibile selezionare la casella di controllo Concesso per il debug per quell'autorizzazione.Quando si esegue il debug dell'applicazione, è possibile verificare la visualizzazione della schermata Vendite (se è in esecuzione come un utente che dispone dell'autorizzazione ViewSales).È possibile impostare qualsiasi combinazione di autorizzazioni per emulare i permessi che potrebbero essere assegnati a un ruolo specificato.

[!NOTA]

Se si abilita l'autorizzazione SecurityAdministration per l'esecuzione del debug, è possibile visualizzare le schermate Utenti e Ruoli mentre si esegue il debug.Mentre è possibile immettere utenti e ruoli in queste schermate, gli utenti e i ruoli non saranno distribuiti con l'applicazione e non possono essere utilizzati per le autorizzazioni per l'esecuzione del debug.

Gg481776.collapse_all(it-it,VS.110).gifConnessioni Sicure

Per le applicazioni client a tre livelli basati su LightSwitch vengono ospitate in un server che esegue l' Internet Information Services (IIS), la comunicazione tra l'applicazione e il server utilizza un protocollo HTTP anziché il protocollo HTTPS, in quanto è più sicuro.Questo requisito può lasciare l'applicazione vulnerabile ai pirati informatici.La crittografia SSL (Secure Sockets Layer (SSL) consente di proteggere informazioni personali o riservate, che vengono scambiate tra un'applicazione client e una server.Quando SSL è abilitato, le applicazioni client remoto accedono al server utilizzando gli URL che iniziano con https://.Si consiglia di configurare SSL per qualsiasi sito che ospita un'applicazione basata su LightSwitch.Per ulteriori informazioni, vedere Configurazione di Secure Sockets Layer in IIS 7.

Per abilitare SSL

  1. Sulla barra dei menu, scegliere Compilazione, Pubblica.

  2. In Pubblicare la procedura guidata, scegliere la scheda Impostazioni di sicurezza.

  3. Nella sezione Richiedi connessione sicura (HTTPS), scegliere il pulsante di opzione Attivato.

    [!NOTA]

    Notare che quando l'impostazione è attivata, è necessario che il sito Web sia appropriatamente configurato per l'utilizzo di HTTPS.

Per le applicazioni a 3 livelli che utilizzano SQL Server per il livello dati, la comunicazione tra IIS e il database è anche potenzialmente vulnerabile.Si consiglia di configurare SSL per qualsiasi database a cui si accede da un'applicazione basata su LightSwitch.Per ulteriori informazioni, vedere Crittografia delle connessioni a SQL Server.

Gg481776.collapse_all(it-it,VS.110).gifSicurezza e controllo della versione

Quando si lavora ad un progetto LightSwitch incluso nel controllo della versione, una stringa di connessione nel file web.config può contenere il nome utente e la password dello sviluppatore più recente del progetto.Queste informazioni sono quindi disponibili per lo sviluppatore seguente che controlla il progetto.

Questo problema non si applica a un'applicazione pubblicata, le informazioni della stringa di connessione dalla Pubblicazione guidata non vengono salvate nel controllo della versione.Utilizzando un database di test e non un database di produzione in fase di progettazione, è possibile impedire agli utenti non autorizzati di accedere ai dati di produzione.

Gg481776.collapse_all(it-it,VS.110).gifAltre considerazioni sulla sicurezza

Oltre all'autenticazione, ci sono gli altri aspetti della sicurezza che è necessario considerare.Anche se l'applicazione non gestisce dati aziendali riservati, le altre informazioni come le password potrebbero essere a rischio di esposizione.

Tenere in considerazione la sicurezza quando si scrive il codice che accede a un server.Ad esempio, è possibile scrivere il codice della query per filtrare i dati dei dipendenti in modo che questi possano vedere solo i propri dati:

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

Mentre lavora per visualizzare i dati, se l'utente tenta di aggiornare o eliminare i dati e si verifica un'eccezione di concorrenza, i dati per gli altri dipendenti potrebbero essere esposti nelle informazioni sull'errore restituite dal server.Per impedire questa operazione, l'utente scrive un altro codice nei metodi di aggiornamento ed eliminazione per assicurarsi che l'impiegato possa vedere solo i propri dati:

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

Per ulteriori informazioni sulle procedure di codifica sicura in generale, vedere Creating Secure Applications.

Vedere anche

Attività

Autenticazione e autorizzazione di LightSwitch

Altre risorse

Distribuzione: distribuzione e gestione dell'applicazione

Debug: individuazione e correzione degli errori