SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Always Encrypted が使用できる Microsoft ODBC Driver 13.1 for SQL Server が公開されました

one comment

先日、SQL Database 向けの Always Encrypted に関しても GA され、Always Encrypted now generally available in Azure SQL Database でアナウンスがされていました。

このタイミングでは、以下のようになっており、SQL Server 2016 のクライアントツールでインストールされる ODBC Driver でも Always Encrypted は対応していないようでした。

Always Encrypted is currently supported in .NET Framework Data Provider for SQL Server and will be supported in JDBC and ODBC soon.

 

明示的に記載はされていないので、検証で触ったレベルでの確認となりますが、Always Encrypted が使用できる Windows の ODBC ドライバーである Microsoft® ODBC Driver 13.1 for SQL Server® – Windows が公開されていました。

現状は、英語版のみのようですね。

この ODBC ドライバーをインストールすると、バージョンは以下のようになります。

image

このバージョンから、ODBC データソースの設定に「Column Encryption」が追加され、接続文字列として「ColumnEncryption=Enabled」が利用できるようになります。
image

 

ODBC ドライバーで Always Encrypted を使用する に記載されている Preview 段階の制約がどの程度解消されているのかは把握できていないのですが、ODBC 経由で AlwaysEncrypted により、暗号化されている列の操作が鹿野となっていました。

$connectionString = "Driver=ODBC Driver 13 for SQL Server;Server=127.0.0.1;Trusted_Connection=Yes;Database=testdb;ColumnEncryption=Enabled";
$connection = New-Object System.Data.Odbc.OdbcConnection
$connection.ConnectionString = $connectionString
 
$connection.Open()
$command = New-Object System.Data.Odbc.OdbcCommand
$command.Connection = $connection
 
$command.CommandType = [System.Data.CommandType]::Text
$command.CommandText = "SELECT Col2 FROM EncTest"
 
$reader = $command.ExecuteReader()
while($reader.Read())
{ 
    Write-Output ("{0}" -f $reader[0])
}
$reader.Close() 
$connection.Close()
$connection.Dispose()

$connectionString = "Driver=ODBC Driver 13 for SQL Server;Server=127.0.0.1;Trusted_Connection=Yes;Database=testdb;ColumnEncryption=Enabled";
$connection = New-Object System.Data.Odbc.OdbcConnection
$connection.ConnectionString = $connectionString
 
$connection.Open()
$command = New-Object System.Data.Odbc.OdbcCommand
$command.Connection = $connection
 
$command.CommandType = [System.Data.CommandType]::Text
$command.CommandText = "SELECT Col2 FROM EncTest WHERE Col2 = ?"
$command.Parameters.Add("@Col2",[System.Data.SqlDbType]::NVarChar) > $null
$command.Parameters["@Col2"].Value = "ひさし"
 
$reader = $command.ExecuteReader()
while($reader.Read())
{ 
    Write-Output ("{0}" -f $reader[0])
}
$reader.Close() 

$connection.Close()
$connection.Dispose()

 

このバージョンのドライバーを使用することで、ODBC 経由でデータベース接続をする A5:SQL Mk-2 / 黒猫 SQL Studio のようなツールでも、暗号化されているデータを表示することができます。

image

ただし、暗号化されている項目を検索項目として使用したい場合には、パラメーターかされたクエリとしては実行されていないようなので、エラーとなります。

image

表示系であれば、既存の ODBC 経由で接続するツールでも対応できるものは多そうですね。

Written by masayuki.ozawa

7月 28th, 2016 at 12:15 am

Posted in SQL Server

Tagged with ,

One Response to 'Always Encrypted が使用できる Microsoft ODBC Driver 13.1 for SQL Server が公開されました'

Subscribe to comments with RSS or TrackBack to 'Always Encrypted が使用できる Microsoft ODBC Driver 13.1 for SQL Server が公開されました'.

  1. […] Always Encrypted が使用できる Microsoft ODBC Driver 13.1 for SQL Server が公開されました […]

Leave a Reply

*