Aufbauen von sicheren Verbindungen in ADOMD.NET
Wenn Sie eine Verbindung in ADOMD.NET verwenden, ist die für die Verbindung verwendete Sicherheitsmethode von dem Wert der ProtectionLevel-Eigenschaft der Verbindungszeichenfolge abhängig, die beim Aufruf der Open-Methode der AdomdConnection verwendet wird.
Die ProtectionLevel-Eigenschaft stellt vier Sicherheitsebenen bereit: nicht authentifiziert, authentifiziert, signiert und verschlüsselt. In der folgenden Tabelle werden diese verschiedenen Sicherheitsstufen beschrieben.
Hinweis |
---|
Wenn Sie Datenbankverbindungspooling verwenden, ist die Datenbank nicht in der Lage, Sicherheit zu verwalten. Das liegt daran, dass für Datenbankverbindungspooling Verbindungszeichenfolgen identisch sein müssen, um Verbindungen zu einem Pool zusammenzufassen. Deshalb müssen Sie Sicherheit an anderer Stelle verwalten. |
Sicherheitsebene |
ProtectionLevel-Wert |
||
---|---|---|---|
|
None |
||
|
Connect |
||
|
Pkt Integrity Oder PktIntegrity |
||
|
Pkt Privacy oder PktPrivacy |
Es sind jedoch nicht alle Sicherheitsebenen für alle Arten von Verbindungen verfügbar:
Eine TCP-Verbindung kann alle der vier Sicherheitsebenen verwenden. Tatsächlich stellt eine zusammen mit der integrierten Sicherheit von Windows verwendete TCP-Verbindung die sicherste Methode der Verbindung mit einer analytischen Datenquelle dar.
Eine HTTP-Verbindung kann nur eine authentifizierte Verbindung sein. Daher muss die ProtectionLevel-Eigenschaft auf Connect festgelegt werden.
Eine HTTPS-Verbindung kann nur eine verschlüsselte Verbindung sein. Daher muss die ProtectionLevel-Eigenschaft auf Pkt Privacy oder PktPrivacy festgelegt werden.
Sichern von TCP-Verbindungen
Für eine TCP-Verbindung unterstützt die ProtectionLevel-Eigenschaft alle vier Sicherheitsebenen, wie in der folgenden Tabelle dargestellt.
ProtectionLevel-Wert |
Verwendung mit TCP-Verbindung? |
Ergebnisse |
||
---|---|---|---|---|
None |
Ja |
Gibt eine nicht authentifizierte Verbindung an. Vom Anbieter wird ein TCP-Datenstrom angefordert, es wird jedoch für den Benutzer, der den Datenstrom anfordert, keinerlei Authentifizierung ausgeführt. |
||
Connect |
Ja |
Gibt eine authentifizierte Verbindung an. Vom Anbieter wird ein TCP-Datenstrom angefordert, und der Sicherheitskontext des Benutzers, der den Datenstrom anfordert, wird bei dem Server authentifiziert.
Nachdem die Authentifizierung erfolgreich gewesen ist oder fehlschlägt, wird der Sicherheitskontext, der verwendet wird, um die Verbindung zu authentifizieren, freigegeben. |
||
Pkt Integrity Oder PktIntegrity |
Ja |
Gibt eine signierte Verbindung an. Vom Anbieter wird ein TCP-Datenstrom angefordert, und der Sicherheitskontext des Benutzers, der den Datenstrom anfordert, wird bei dem Server authentifiziert.
|
||
Pkt Privacy Oder PktPrivacy |
Ja |
Gibt eine verschlüsselte Verbindung an.
Vom Anbieter wird ein TCP-Datenstrom angefordert, und der Sicherheitskontext des Benutzers, der den Datenstrom anfordert, wird bei dem Server authentifiziert.
|
Verwenden der integrierten Sicherheit von Windows für die Verbindung
Die integrierte Sicherheit von Windows ist die sicherste Möglichkeit, eine Verbindung zu einer Instanz von Analysis Services herzustellen und zu sichern. Die integrierte Sicherheit von Windows zeigt während des Authentifizierungsprozesses keine Sicherheitsanmeldeinformationen wie Benutzername oder Kennwort an, stattdessen wird die Sicherheits-ID des zurzeit ausgeführten Prozesses verwendet, um die Identität zu ermitteln. Für die meisten Clientanwendungen stellt diese Sicherheits-ID die Identität des gerade angemeldeten Benutzers dar.
Um die integrierte Sicherheit von Windows zu verwenden, sind für die Verbindungszeichenfolge die folgenden Einstellungen erforderlich:
Legen Sie diese Eigenschaft für die Integrated Security-Eigenschaft nicht fest, oder legen Sie die Eigenschaft auf SSPI fest.
Hinweis Die integrierte Sicherheit von Windows ist nur für TCP-Verbindungen verfügbar, da HTTP-Verbindungen die Basic-Einstellung für die Integrated Security-Eigenschaft verwenden müssen.
Legen Sie diese Eigenschaft für die ProtectionLevel-Eigenschaft auf Connect, Pkt Integrity oder Pkt Privacy fest.
Sichern von HTTP-Verbindungen
HTTPS und Secure Sockets Layer (SSL) kann verwendet werden, um die HTTP-Kommunikation mit einer analytischen Datenquelle extern zu sichern.
Da ein XMLA-Anbieter nur sicheres HTTP verwendet, muss eine HTTP-Verbindung in ADOMD.NET eine signierte Verbindung sein, wie in der folgenden Tabelle dargestellt.
ProtectionLevel-Wert |
Verwendung mit HTTP oder HTTPS |
---|---|
None |
Nein |
Connect |
HTTP |
Pkt Integrity - oder - PktIntegrity |
Nein |
Pkt Privacy - oder - PktPrivacy |
HTTPS |
Öffnen einer sicheren HTTP-Verbindung
Das folgende Beispiel erläutert, wie ADOMD.NET verwendet wird, um eine HTTP-Verbindung für die AdventureWorksAS Analysis Services-Beispieldatenbank zu öffnen:
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