Condividi tramite


Implementazione di connessioni protette in ADOMD.NET

Quando si implementa una connessione in ADOMD.NET, il metodo di protezione utilizzato per la connessione dipende dal valore della proprietà ProtectionLevel della stringa di connessione utilizzata quando si chiama il metodo Open di AdomdConnection.

Alla proprietà ProtectionLevel sono associati quattro livelli di protezione, ovvero non autenticato, autenticato, firmato e crittografato. Nella tabella seguente vengono descritti i diversi livelli di protezione.

Nota

Se si sceglie di utilizzare il pool di connessioni al database, quest'ultimo non sarà in grado di gestire la protezione poiché per il pool di connessioni al database è necessario che la stringa di connessione sia identica alle connessioni del pool. È pertanto necessario gestire la protezione in un altro punto.

Livello di protezione

Valore di ProtectionLevel

connessione non autenticata

Una connessione non autenticata non utilizza alcuna forma di autenticazione. Questo tipo di connessione rappresenta la forma di connessione maggiormente supportata, ma meno protetta.

None

connessione autenticata

Una connessione autenticata consente di autenticare l'utente che effettua la connessione, ma non protegge alcuna comunicazione aggiuntiva. Questo tipo di connessione risulta utile poiché consente di stabilire l'identità dell'utente o dell'applicazione che si connette a un'origine dati analitica.

Connect

connessione firmata

Una connessione firmata consente di autenticare l'utente che richiede la connessione e garantisce inoltre che le trasmissioni non vengano modificate. Questo tipo di connessione risulta utile quando è necessario verificare l'autenticità dei dati trasferiti. Una connessione firmata impedisce tuttavia solo la modifica del contenuto del pacchetto di dati, ma non la relativa visualizzazione durante il transito.

NotaNota
Una connessione firmata è supportata solo dal provider di XML for Analysis disponibile in Microsoft SQL Server Analysis Services.

Pkt Integrity oppure PktIntegrity

connessione crittografata

Una connessione crittografata rappresenta il tipo di connessione predefinito utilizzato da ADOMD.NET. Questo tipo di connessione consente di autenticare l'utente che richiede la connessione, nonché di crittografare i dati trasmessi. Una connessione crittografata rappresenta la forma di connessione più protetta che è possibile creare in ADOMD.NET. Il contenuto del pacchetto di dati non può essere né visualizzato né modificato con la conseguente protezione dei dati durante il transito.

NotaNota
Una connessione crittografata è supportata solo dal provider di XML for Analysis disponibile in SQL Server Analysis Services.

Pkt Privacy oppure PktPrivacy

Non tutti i livelli di protezione sono tuttavia disponibili per tutti i tipi di connessioni:

  • Una connessione TCP può utilizzare uno qualsiasi dei quattro livelli di protezione. Se utilizzata con la protezione integrata di Windows, una connessione TCP rappresenta infatti il metodo più protetto per connettersi a un'origine dati analitica.

  • Una connessione HTTP può essere solo autenticata. La proprietà ProtectionLevel deve essere impostata pertanto su Connect.

  • Una connessione HTTPS può essere solo crittografata. La proprietà ProtectionLevel deve essere impostata pertanto su Pkt Privacy o su PktPrivacy.

Protezione di connessioni TCP

Per una connessione TCP, la proprietà ProtectionLevel supporta tutti i quattro livelli di protezione, come illustrato nella tabella seguente.

Valore di ProtectionLevel

Utilizzo con una connessione TCP

Risultati

None

Specifica di una connessione non autenticata.

Il provider richiede un flusso TCP, ma all'utente che effettua la richiesta del flusso non viene applicata alcuna forma di autenticazione.

Connect

Specifica di una connessione autenticata.

Il provider richiede un flusso TCP e successivamente il contesto di protezione relativo all'utente che effettua la richiesta del flusso viene autenticato nel server.

  • Se l'autenticazione ha esito positivo, non vengono eseguite altre azioni.

  • Se l'autenticazione ha esito negativo, l'oggetto AdomdConnection si disconnette dall'origine dati multidimensionale e viene generata un'eccezione.

Dopo l'esito positivo o negativo dell'autenticazione, il contesto di protezione utilizzato per autenticare la connessione viene eliminato.

Pkt Integrity oppure PktIntegrity

Specifica di una connessione firmata.

Il provider richiede un flusso TCP e successivamente il contesto di protezione relativo all'utente che effettua la richiesta del flusso viene autenticato nel server.

  • Se l'autenticazione ha esito positivo, l'oggetto AdomdConnection chiude il flusso TCP esistente e apre un flusso TCP firmato per gestire tutte le richieste. Ogni richiesta di dati o metadati viene autenticata tramite il contesto di protezione utilizzato per aprire la connessione. Ogni pacchetto viene inoltre firmato digitalmente per garantire che al payload del pacchetto TCP non sia stata apportata alcuna modifica.

  • Se l'autenticazione ha esito negativo, l'oggetto AdomdConnection si disconnette dall'origine dati multidimensionale e viene generata un'eccezione.

Pkt Privacy oppure PktPrivacy

Specifica di una connessione crittografata.

NotaNota
Per specificare una connessione crittografata, è inoltre possibile non impostare la proprietà ProtectionLevel nella stringa di connessione.

Il provider richiede un flusso TCP e successivamente il contesto di protezione relativo all'utente che effettua la richiesta del flusso viene autenticato nel server.

  • Se l'autenticazione ha esito positivo, l'oggetto AdomdConnection chiude il flusso TCP esistente e apre un flusso TCP crittografato per gestire tutte le richieste. Ogni richiesta di dati o metadati viene autenticata tramite il contesto di protezione utilizzato per aprire la connessione. Il payload di ogni pacchetto TCP viene inoltre crittografato tramite il metodo di crittografia di livello più elevato supportato sia dal provider che dall'origine dati multidimensionale.

  • Se l'autenticazione ha esito negativo, l'oggetto AdomdConnection si disconnette dall'origine dati multidimensionale e viene generata un'eccezione.

Utilizzo della protezione integrata di Windows per la connessione

La protezione integrata di Windows rappresenta il modo migliore di stabilire e di proteggere una connessione a un'istanza di Analysis Services. Nella protezione integrata di Windows le credenziali di protezione, ad esempio un nome utente o una password, non vengono rivelate durante il processo di autenticazione. Per stabilire l'identità, viene invece utilizzato l'ID di protezione del processo attualmente in esecuzione. Per la maggior parte delle applicazioni client, tale ID di protezione rappresenta l'identità dell'utente attualmente connesso.

Per utilizzare la protezione integrata di Windows, per la stringa di connessione è necessario specificare le impostazioni seguenti:

  • La proprietà Integrated Security non deve essere impostata su alcun valore o deve essere impostata su SSPI.

    Nota

    La protezione integrata di Windows è disponibile solo per le connessioni TCP poiché le connessioni HTTP devono utilizzare l'impostazione Basic per la proprietà Integrated Security.

  • La proprietà ProtectionLevel deve essere impostata su Connect, Pkt Integrity o su Pkt Privacy.

Protezione di connessioni HTTP

Per proteggere esternamente comunicazioni HTTP con un'origine dati analitica, è possibile utilizzare HTTPS e SSL (Secure Sockets Layer).

Poiché un provider XMLA utilizza solo connessioni HTTP protette, una connessione HTTP in ADOMD.NET deve essere firmata, come illustrato nella tabella seguente.

Valore di ProtectionLevel

Utilizzo con HTTP o HTTPS

None

No

Connect

HTTP

Pkt Integrity oppure PktIntegrity

No

Pkt Privacy oppure PktPrivacy

HTTPS

Per ulteriori informazioni, vedere Configuring HTTP Access to SQL Server Analysis Services on Microsoft Windows XP sul sito Web Microsoft.

Apertura di una connessione HTTP protetta

Nell'esempio seguente viene illustrato come utilizzare ADOMD.NET per aprire una connessione HTTP per il database di esempio AdventureWorksAS di Analysis Services:

Public Function GetAWEncryptedConnection( _
    Optional ByVal serverName As String = "https:\\localhost\isapy\msmdpump.dll") _
    As AdomdConnection

    Dim strConnectionString As String = ""
    Dim objConnection As New AdomdConnection

    Try
        ' To establish an encrypted connection, set the 
        ' ProtectionLevel setting to PktPrivacy.
        strConnectionString = "DataSource=" & serverName & ";" & _
            "Catalog=AdventureWorksAS;" & _
            "ProtectionLevel=PktPrivacy;"

        ' Note that username and password are not supplied here.
        ' The current security context is used for authentication
        ' purposes.

        objConnection.ConnectionString = strConnectionString
        objConnection.Open()
    Catch ex As Exception
        objConnection = Nothing
        Throw ex
    Finally
        ' Return the encrypted connection.
        GetAWEncryptedConnection = objConnection
    End Try
End Function