ADOMD.NET 中的連線 - 建立安全連線
當您在 ADOMD.NET 中使用連接時,用於連接的安全性方法取決於當您呼叫 Open 的方法 AdomdConnection 時所使用之連接字串的ProtectionLevel屬性值。
ProtectionLevel屬性提供四種安全性層級:未驗證、已驗證、已簽署和已加密。 下表描述各種安全性層級。
注意
如果選擇使用資料庫連接共用,則資料庫將不會管理安全性。 這是因為資料庫連接共用要求連接字串必須與集區連接一致。 因此,您必須在其他地方管理安全性。
安全性層級 | ProtectionLevel 值 |
---|---|
未經驗證的連接 未經驗證的連接不會執行任何形式的驗證。 這種連接代表最廣泛支援,但最不安全的連接形式。 |
None |
驗證的連接 未驗證的連接會驗證正在建立連接的使用者,但是不會保護其他通訊的安全。 這種連接非常有用,因為您可以建立使用者的識別或是連接到分析資料來源的應用程式。 |
[連接] |
簽署的連接 簽署的連接會驗證正在要求連接的使用者,並確定不會修改傳輸。 當必須驗證傳輸資料的驗證時,這種連接非常有用。 不過,簽署連接只能防止資料封包的內容免於遭到修改。 在傳輸中仍然可以檢視內容。 請注意,只有 MicrosoftSQL Sql server analysis Services 提供的 XML for Analysis 提供者才支援已簽署的連接。 |
Pkt 完整性 或 PktIntegrity |
加密的連接 加密的連接是 ADOMD.NET 使用的預設連接類型。 這種連接會驗證正在要求連接的使用者,然後也會加密傳輸的資料。 加密的連接是 ADOMD.NET 可以建立的最安全之連接形式。 無法檢視或修改資料封包的內容,因此可在傳輸期間保護資料。 只有 SQL sql server analysis Services 提供的 XML for Analysis 提供者支援加密的連接。 |
Pkt 隱私權 或 PktPrivacy |
不過,並非所有的安全性等級都可供所有種類的連接使用。
TCP 連接可以使用四個安全性層級的任何一個。 事實上,當您將 TCP 連接與 Windows Integrated Security 搭配使用時,可為連接至分析資料來源提供最安全的方法。
HTTP 連接只能是驗證的連接。 因此, ProtectionLevel屬性必須設定為連線。
HTTPS 連接只能是加密的連接。 因此, ProtectionLevel 屬性必須設定為 Pkt 隱私權 或 PktPrivacy。
保護 TCP 連接的安全
TCP 連接的 ProtectionLevel 屬性支援四種安全性層級,如下表所示。
ProtectionLevel 值 | 是否可與 TCP 連接搭配使用? | 結果 |
---|---|---|
None | 是 | 指定未驗證的連接。 TCP 資料流是提供者所要求,但是對於要求資料流的使用者,則是未執行任何形式的驗證。 |
[連接] | 是 | 指定驗證的連接。 從提供者要求 TCP 串流,然後對伺服器驗證要求資料流程的使用者之安全性內容:如果驗證成功,則不會採取其他動作。 如果驗證失敗, AdomdConnection 物件就會與多維度資料來源中斷連接,並擲回例外狀況。 在驗證成功或是失敗之後,會處置用以驗證連接的安全性內容。 |
Pkt 完整性 或 PktIntegrity | 是 | 指定簽署的連接。 TCP 資料流是提供者所要求,然後會針對伺服器來驗證要求資料流的使用者之安全性內容: 如果驗證成功, AdomdConnection 物件會關閉現有的 tcp 資料流程,並開啟已簽署的 tcp 串流以處理所有要求。 每個對於資料或是中繼資料的要求,都會使用之前用以開啟連接的安全性內容來驗證。 此外,會數位簽署每個封包以確定未使用任何方式來變更 TCP 封包的裝載。 如果驗證失敗, AdomdConnection 物件就會與多維度資料來源中斷連接,並擲回例外狀況。 |
Pkt 隱私權 或 PktPrivacy | 是 | 指定加密的連接。 請注意,您也可以在連接字串中設定 ProtectionLevel 屬性,藉以指定加密的連接。 TCP 資料流是提供者所要求,然後會針對伺服器來驗證要求資料流的使用者之安全性內容: 如果驗證成功, AdomdConnection 物件會關閉現有的 tcp 資料流程,並開啟已加密的 tcp 資料流程來處理所有要求。 每個對於資料或是中繼資料的要求,都會使用之前用以開啟連接的安全性內容來驗證。 此外,會使用提供者與多維度資料來源支援的最高加密方法,來加密每個 TCP 封包的裝載。 如果驗證失敗, AdomdConnection 物件就會與多維度資料來源中斷連接,並擲回例外狀況。 |
針對連接使用 Windows 整合式安全性
Windows 整合式安全性是建立和保護 Analysis Services 實例之連接的最安全方式。 Windows 整合式安全性不會在驗證處理期間顯示安全性認證,例如使用者名稱或是密碼,但是會改用目前執行的處理序之安全性識別碼來建立識別。 對於大部分的用戶端應用程式,這個安全性識別碼代表目前登入的使用者之識別。
若要使用 Windows 整合式安全性,連接字串需要下列字串:
若為 整合式安全性 屬性,請不要設定此屬性,或將此屬性設定為 SSPI。
注意
Windows 整合式安全性僅適用于 TCP 連接,因為 HTTP 連線必須使用 [整合式安全性] 屬性的 [基本] 設定。
針對ProtectionLevel屬性,將此屬性設定為連線、 pkt 完整性或pkt 隱私權。
保護 HTTP 連接的安全
HTTPS 和安全通訊端層 (SSL) 可用以在外部保護 HTTP 與分析資料來源的通訊。
因為 XMLA 提供者只會使用安全的 HTTP,所以在 ADOMD.NET 中的 HTTP 連接必須是簽署的連接,如下表所示。
ProtectionLevel 值 | 使用 HTTP 或是 HTTPS |
---|---|
None | 否 |
[連接] | HTTP |
Pkt 完整性 或 PktIntegrity | 否 |
Pkt 隱私權 或 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
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: