新規 : 2005 年 12 月 5 日
ADOMD.NET で接続を使用する場合、その接続に適用されるセキュリティ手段は、AdomdConnection の Open メソッドを呼び出すときに使用する接続文字列の ProtectionLevel プロパティの値によって異なります。
ProtectionLevel プロパティには、"認証なし"、"認証済み"、"署名済み"、"暗号化" の 4 つのセキュリティ レベルがあります。これらの各セキュリティ レベルについて、次の表で説明します。
メモ : |
|---|
| データベース接続のプール機能を使用する場合、データベースでセキュリティを管理することはできません。これは、データベース接続のプールでは、接続文字列をプール接続と同じにする必要があるからです。したがって、どこか他の場所でセキュリティを管理する必要があります。 |
| セキュリティ レベル | ProtectionLevel の値 |
|---|---|
|
None |
|
Connect |
|
Pkt Integrity または PktIntegrity |
|
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 |
詳細については、Microsoft Web サイトの「Microsoft Windows XP での SQL Server 2005 Analysis Services への HTTP アクセスの構成」を参照してください。
セキュリティ保護された 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