ADOMD.NET でのセキュリティ保護された接続の確立

ADOMD.NET で接続を使用する場合、その接続に適用されるセキュリティ手段は、AdomdConnectionOpen メソッドを呼び出すときに使用する接続文字列の ProtectionLevel プロパティの値によって異なります。

ProtectionLevel プロパティには、"認証なし"、"認証済み"、"署名済み"、"暗号化" の 4 つのセキュリティ レベルがあります。 これらの各セキュリティ レベルについて、次の表で説明します。

注意

データベース接続のプール機能を使用する場合、データベースでセキュリティを管理することはできません。 これは、データベース接続のプールでは、接続文字列をプール接続と同じにする必要があるからです。 したがって、どこか他の場所でセキュリティを管理する必要があります。

セキュリティ レベル

ProtectionLevel の値

未認証の接続

未認証の接続では一切の認証が行われません。 この種の接続は広く利用されていますが、安全性が最も低い接続形態です。

None

認証された接続

認証された接続では、接続を要求しているユーザーの本人性を確認します。ただし、その後の通信はセキュリティで保護されません。 この種の接続は、分析データ ソースに接続しようとしているユーザーまたはアプリケーションの身元を検証できるという点で便利です。

Connect

署名された接続

署名された接続は、接続を要求しているユーザーを認証し、転送データが変更されていないことを確認します。 この種の接続は、転送されたデータの信頼性を検証する必要がある場合に役立ちます。 ただし、署名された接続で防止できるのは、データ パケットの内容の不正な変更です。 転送中、データ パケットの内容が傍受される危険性は残っています。

注意

署名された接続は、Microsoft SQL Server Analysis Services が提供する XML for Analysis プロバイダーによってのみサポートされます。

Pkt Integrity またはPktIntegrity

暗号化された接続

暗号化された接続は、ADOMD.NET によって使用される既定の接続の種類です。 この種の接続は、接続を要求しているユーザーを認証したうえで、転送データの暗号化も行います。 暗号化された接続は、ADOMD.NET で作成できる接続形式の中でセキュリティ保護のレベルが最も高い形式です。 データ パケットの内容は表示または変更できず、転送中のデータが保護されます。

注意

暗号化された接続は、SQL Server Analysis Services が提供する XML for Analysis プロバイダーによってのみサポートされます。

Pkt Privacy またはPktPrivacy

ただし、接続の種類によっては、使用できないセキュリティ レベルもあります。

  • TCP 接続では、これら 4 つのうち、どのセキュリティ レベルでも使用できます。 実際、TCP 接続を Windows 統合セキュリティと共に使用すると、最も安全な方法で分析データ ソースに接続できます。

  • HTTP 接続で、認証された接続のみ使用できます。 したがって、ProtectionLevel プロパティは Connect に設定する必要があります。

  • HTTPS 接続では、暗号化された接続のみ使用できます。 したがって、ProtectionLevel プロパティは Pkt Privacy または PktPrivacy に設定する必要があります。

TCP 接続のセキュリティ保護

TCP 接続の場合、ProtectionLevel プロパティは、次の表に示すように、4 つのすべてのセキュリティ レベルをサポートします。

ProtectionLevel の値

TCP 接続で使用するか

結果

None

する

未認証の接続が適用されます。

プロバイダーに対して TCP ストリームが要求されます。ただし、ストリームを要求しているユーザーに対しては、どのような形態の認証も実行されません。

Connect

する

認証された接続が適用されます。

プロバイダーに対して TCP ストリームが要求されます。さらに、ストリームを要求しているユーザーのセキュリティ コンテキストがサーバーに対して認証されます。

  • 認証に成功した場合、他のアクションは実行されません。

  • 認証に失敗した場合は、AdomdConnection オブジェクトが多次元データ ソースから切断され、例外がスローされます。

認証が成功または失敗した後に、接続の認証に使用されたセキュリティ コンテキストは破棄されます。

Pkt Integrity またはPktIntegrity

する

署名された接続が適用されます。

プロバイダーに対して TCP ストリームが要求されます。さらに、ストリームを要求しているユーザーのセキュリティ コンテキストがサーバーに対して認証されます。

  • 認証が成功した場合、AdomdConnection オブジェクトは既存の TCP ストリームを閉じ、署名された TCP ストリームを開いて、すべての要求を処理します。 データまたはメタデータに対する各要求は、接続を開くために使用されたセキュリティ コンテキストを使用して認証されます。 また、各パケットは、TCP パケットのペイロードが変更されていないことを確認するためにデジタル署名されています。

  • 認証が失敗した場合は、AdomdConnection オブジェクトが多次元データ ソースから切断され、例外がスローされます。

Pkt Privacy またはPktPrivacy

する

暗号化された接続が適用されます。

注意

また、接続文字列で ProtectionLevel プロパティを設定しなくても、暗号化された接続を指定できます。

プロバイダーに対して TCP ストリームが要求されます。さらに、ストリームを要求しているユーザーのセキュリティ コンテキストがサーバーに対して認証されます。

  • 認証が成功した場合、AdomdConnection オブジェクトは既存の TCP ストリームを閉じ、暗号化された TCP ストリームを開いて、すべての要求を処理します。 データまたはメタデータに対する各要求は、接続を開くために使用されたセキュリティ コンテキストを使用して認証されます。 また、各 TCP パケットのペイロードは、プロバイダーおよび多次元データ ソースの両方でサポートされている最も高度な暗号化方法を使用して暗号化されます。

  • 認証が失敗した場合は、AdomdConnection オブジェクトが多次元データ ソースから切断され、例外がスローされます。

接続での Windows 統合セキュリティの使用

Windows 統合セキュリティは、Analysis Services のインスタンスへの接続の確立およびセキュリティ保護を行うための最も安全な方法です。 Windows 統合セキュリティでは、認証プロセス中にユーザー名やパスワードなどのセキュリティ資格情報が公開されません。代わりに、現在実行しているプロセスのセキュリティ ID を使用して本人性を検証します。 多くのクライアント アプリケーションの場合、このセキュリティ ID は現在ログオンしているユーザーの ID を表します。

Windows 統合セキュリティを使用するには、接続文字列を次のように設定する必要があります。

  • Integrated Security プロパティの場合、このプロパティを設定しないか、あるいは SSPI に設定します。

    注意

    Windows 統合セキュリティは TCP 接続でのみ使用できます。HTTP 接続は、Integrated Security プロパティの Basic 設定を使用する必要があります。

  • ProtectionLevel プロパティの場合、このプロパティを、Connect、Pkt Integrity または Pkt Privacy に設定します。

HTTP 接続のセキュリティ保護

HTTPS および SSL (Secure Sockets Layer) を使用して、分析データ ソースで 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

関連項目

参照

ADOMD.NET での接続の確立