SQL Server 2016 新機能 セキュリティ編

2016.05.16

YDCのわーすーです。前回インストールしたSQL Server 2016を使って新機能を試してみたいと思います。
いろいろな機能が搭載されていますが、今回はすぐに試せるセキュリティの機能を使ってみたいと思います。

環境
ホスト名 OS メモリ SQLServer
sv01 Windows Server 2012 R2 2G SQL Server 2016 RC3(x64)

動的データマスク(Dynamic Data Masking)

動的データマスクはカード番号やメールアドレスなどの秘密情報をマスクして権限のないユーザーへの
漏洩を防ぐことができます。
create tableでテーブル作成時に列に対して設定をすることができます。

まずはテスト用のデータベースにユーザー、テーブルを作成し、データの登録をします。
colBからcolEにはmasked withを記述してマスクの設定をします。

sqlserver_2_0.jpg

結果からわかるとおり、特権ユーザーは通常通りデータを参照することができます。
では、次に一般ユーザーからのアクセスを試してみます。

sqlserver_2_1.jpg

一般ユーザーではデータがマスクされていていることが確認できます。

※functionでdefaultを指定している場合、文字データは「xxxx」に数値データは「0」に日付データは
「1900-01-01 00:00:00.000」となります。
また、emailを指定することでメールアドレスをマスクできます。

そのほかのマスク関数として数値データを乱数にする「randam」や
任意の文字列にマスクできる「partial」があります。ぜひ試してみてください。

行レベルセキュリティ

行レベルでアクセス制限ができる機能です。ユーザーごとに参照できる行を制限できるようになります。

今回はuser1、user2、ownerという3つのユーザーを作成し、colAにはsysname関数を指定し、
アクセス可能なユーザーを登録します。

sqlserver_2_2.jpg

次にユーザーにテーブルに対する参照権限を与え、 ユーザー定義関数とセキュリティポリシーを作成します。

sqlserver_2_3.jpg

func1という関数を作成し、引数に@usernameを指定することでユーザー名を受け取れるようにします。
引数として受け取ったユーザー名が等しい、またはownerの場合に1を返します。
また、pol1というポリシーを作成することでテーブルにfunc1関数でフィルターをかけ、
関数へ与える引数にcolA列を与えることができます。

これで権限のないユーザーは参照することができません。

sqlserver_2_4.jpg

次にownerで。すべて参照できます。

sqlserver_2_5.jpg

最後にuser1とuser2。それぞれ自分の列しか参照できないことを確認できました。

sqlserver_2_6.jpg

Always Encryptedによる列データの暗号化

Always Encryptedはネットワーク上に流れるデータもデータベース上のデータも
すべて暗号化してしまう機能です。
これはウィザードから設定できるので簡単です。

まずはデータを登録します。

sqlserver_2_7.jpg

暗号化の設定をします。

sqlserver_2_8.jpg

暗号化する列をチェックして、暗号化の種類を選択します。

sqlserver_2_9.jpg

マスターキーの構成ではキーをどこに作成するかを設定します。

sqlserver_2_10.jpg

続行して今すぐ完了を選択します。

sqlserver_2_11.jpg

確認して完了します。

sqlserver_2_12.jpg

暗号化されていることを確認します。

sqlserver_2_13.jpg

かなり駆け足でしたが、SQL Server 2016のセキュリティに関する新機能をご紹介しました。
SQL Server 2016にはまだまだ新機能が存在するので引き続き検証してお伝えしていくつもりです。
お楽しみに。

Standby Expressに関するお問合わせ

  • TEL 042-333-6217
  • FAX 042-352-6101
  • LINE
  • Mail