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