ADOMD.NET での接続 - セキュリティ保護された接続の確立
ADOMD.NET で接続を使用する場合、接続に使用されるセキュリティ メソッドは、 の メソッドを呼び出す際に使用される接続文字列の ProtectionLevelOpen プロパティの値によって異なります AdomdConnection。
ProtectionLevel プロパティには、認証されていない、認証済み、署名済み、暗号化されたという 4 つのレベルのセキュリティが用意されています。 これらの各セキュリティ レベルについて、次の表で説明します。
注意
データベース接続のプール機能を使用する場合、データベースでセキュリティを管理することはできません。 これは、データベース接続のプールでは、接続文字列をプール接続と同じにする必要があるからです。 したがって、どこか他の場所でセキュリティを管理する必要があります。
セキュリティ レベル | ProtectionLevel の値 |
---|---|
未認証の接続 未認証の接続では一切の認証が行われません。 この種の接続は広く利用されていますが、安全性が最も低い接続形態です。 |
なし |
認証された接続 認証された接続では、接続を要求しているユーザーの本人性を確認します。ただし、その後の通信はセキュリティで保護されません。 この種の接続は、分析データ ソースに接続しようとしているユーザーまたはアプリケーションの身元を検証できるという点で便利です。 |
のインスタンスに接続するときには、 |
署名された接続 署名された接続は、接続を要求しているユーザーを認証し、転送データが変更されていないことを確認します。 この種の接続は、転送されたデータの信頼性を検証する必要がある場合に役立ちます。 ただし、署名された接続で防止できるのは、データ パケットの内容の不正な変更です。 転送中、データ パケットの内容が傍受される危険性は残っています。 署名付き接続は、MicrosoftSQL ServerAnalysis Services によって提供XML for Analysisプロバイダーによってのみサポートされます。 |
Pkt 整合性 または PktIntegrity |
暗号化された接続 暗号化された接続は、ADOMD.NET によって使用される既定の接続の種類です。 この種の接続は、接続を要求しているユーザーを認証したうえで、転送データの暗号化も行います。 暗号化された接続は、ADOMD.NET で作成できる接続形式の中でセキュリティ保護のレベルが最も高い形式です。 データ パケットの内容は表示または変更できず、転送中のデータが保護されます。 暗号化された接続は、ServerAnalysis Services XML for Analysis提供されるSQLによってのみサポートされます。 |
Pkt Privacy または PktPrivacy |
ただし、接続の種類によっては、使用できないセキュリティ レベルもあります。
TCP 接続では、これら 4 つのうち、どのセキュリティ レベルでも使用できます。 実際、TCP 接続を Windows 統合セキュリティと共に使用すると、最も安全な方法で分析データ ソースに接続できます。
HTTP 接続で、認証された接続のみ使用できます。 そのため、ProtectionLevel プロパティは、次の値に設定するConnect。
HTTPS 接続では、暗号化された接続のみ使用できます。 そのため、 ProtectionLevel プロパティはPkt Privacy または PktPrivacy に設定する必要があります。
TCP 接続のセキュリティ保護
TCP 接続の場合、 ProtectionLevel プロパティは、次の表に示すように、4 つのレベルのセキュリティをサポートします。
ProtectionLevel の値 | TCP 接続で使用するか | 結果 |
---|---|---|
なし | はい | 未認証の接続が適用されます。 プロバイダーに対して TCP ストリームが要求されます。ただし、ストリームを要求しているユーザーに対しては、どのような形態の認証も実行されません。 |
のインスタンスに接続するときには、 | はい | 認証された接続が適用されます。 TCP ストリームがプロバイダーから要求された後、ストリームを要求しているユーザーのセキュリティ コンテキストがサーバーに対して認証されます。認証が成功した場合、他のアクションは実行されません。 認証に失敗した場合 AdomdConnection 、オブジェクトは多次元データ ソースから切断され、例外がスローされます。 認証が成功または失敗した後に、接続の認証に使用されたセキュリティ コンテキストは破棄されます。 |
Pkt 整合性 または 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 統合セキュリティを使用するには、接続文字列を次のように設定する必要があります。
[ 統合セキュリティ] プロパティでは 、このプロパティを設定したり、このプロパティを SSPI に設定したりしません。
注意
Windows統合セキュリティは TCP 接続でのみ使用できます。HTTP 接続では、統合セキュリティ プロパティの基本設定を使用する必要があります。
ProtectionLevel プロパティの場合は、このプロパティを Connect、Pkt Integrity、または Pkt Privacy に設定します。
HTTP 接続のセキュリティ保護
HTTPS および SSL (Secure Sockets Layer) を使用して、分析データ ソースで HTTP 通信の外部的なセキュリティ保護を行うことができます。
XMLA プロバイダーはセキュリティ保護された HTTP のみ使用するため、ADOMD.NET での HTTP 接続は、次の表に示すように署名された接続にする必要があります。
ProtectionLevel の値 | HTTP または HTTPS で使用するか |
---|---|
なし | No |
のインスタンスに接続するときには、 | HTTP |
Pkt 整合性 または PktIntegrity | No |
Pkt Privacy または PktPrivacy | HTTPS |
セキュリティ保護された HTTP 接続を開く
次の例は、データベースの AdventureWorksAS サンプル ADOMD.NET HTTP 接続を開く方法を示Analysis Servicesしています。
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