在 ADOMD.NET 中建立安全連接
在 ADOMD.NET 中使用連接時,用於連接的安全性方法,端視您呼叫 AdomdConnection 的 Open 方法時所使用的連接字串之 ProtectionLevel 屬性值而定。
ProtectionLevel 屬性提供四個層級的安全性:未驗證、驗證、簽署和加密。 下表描述各種安全性層級。
[!附註]
如果選擇使用資料庫連接共用,則資料庫將不會管理安全性。 這是因為資料庫連接共用要求連接字串必須與集區連接一致。 因此,您必須在其他地方管理安全性。
安全性層級 |
ProtectionLevel 值 |
---|---|
|
None |
|
Connect |
|
Pkt Integrity 或 PktIntegrity |
|
Pkt Privacy 或 PktPrivacy |
不過,並非所有的安全性等級都可供所有種類的連接使用。
TCP 連接可以使用四個安全性層級的任何一個。 事實上,當您將 TCP 連接與 Windows Integrated Security 搭配使用時,可為連接至分析資料來源提供最安全的方法。
HTTP 連接只能是驗證的連接。 因此,必須將 ProtectionLevel 屬性設定為 Connect。
HTTPS 連接只能是加密的連接。 因此,必須將 ProtectionLevel 屬性設定為 Pkt Privacy 或 PktPrivacy。
保護 TCP 連接的安全
對於 TCP 連接,ProtectionLevel 屬性支援全部四個安全性層級,如下表所示。
ProtectionLevel 值 |
是否可與 TCP 連接搭配使用? |
結果 |
---|---|---|
None |
是 |
指定未驗證的連接。 TCP 資料流是提供者所要求,但是對於要求資料流的使用者,則是未執行任何形式的驗證。 |
Connect |
是 |
指定驗證的連接。 TCP 資料流是提供者所要求,然後會針對伺服器來驗證要求資料流的使用者之安全性內容:
在驗證成功或是失敗之後,會處置用以驗證連接的安全性內容。 |
Pkt Integrity 或 PktIntegrity |
是 |
指定簽署的連接。 TCP 資料流是提供者所要求,然後會針對伺服器來驗證要求資料流的使用者之安全性內容:
|
Pkt Privacy 或 PktPrivacy |
是 |
指定加密的連接。
TCP 資料流是提供者所要求,然後會針對伺服器來驗證要求資料流的使用者之安全性內容:
|
針對連接使用 Windows 整合式安全性
Windows 整合式安全性是建立和保護 Analysis Services 執行個體連接最安全的方法。 Windows 整合式安全性不會在驗證處理期間顯示安全性認證,例如使用者名稱或是密碼,但是會改用目前執行的處理序之安全性識別碼來建立識別。 對於大部分的用戶端應用程式,這個安全性識別碼代表目前登入的使用者之識別。
若要使用 Windows 整合式安全性,連接字串需要下列字串:
對於 Integrated Security 屬性,可以將此屬性設定為或不設定為 SSPI。
[!附註]
Windows 整合式安全性只能供 TCP 連接使用,因為 HTTP 連接必須使用 Integrated Security 屬性的 Basic 設定。
對於 ProtectionLevel 屬性,將此屬性設定為 Connect、Pkt Integrity 或 Pkt Privacy。
保護 HTTP 連接的安全
HTTPS 和安全通訊端層 (SSL) 可用以在外部保護 HTTP 與分析資料來源的通訊。
因為 XMLA 提供者只會使用安全的 HTTP,所以在 ADOMD.NET 中的 HTTP 連接必須是簽署的連接,如下表所示。
ProtectionLevel 值 |
使用 HTTP 或是 HTTPS |
---|---|
None |
否 |
Connect |
HTTP |
Pkt Integrity 或PktIntegrity |
否 |
Pkt Privacy 或PktPrivacy |
HTTPS |
開啟安全的 HTTP 連接
下列範例示範如何使用 ADOMD.NET 開啟 AdventureWorksAS 範例 Analysis Services 資料庫的 HTTP 連接:
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