Shoeisha Technology Media

EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

クラウドでの利用も安心! SQL Server におけるデータ暗号化

2016/11/02 06:00

 今回はSQL Server 2016 で機能強化されたAlways Encryptedという機能について掘り下げてご紹介したいと思います。ただ、弊社プレミアフィールドエンジニアである本間が以前「Always Encrypted登場!(前編)(後編)」と題しまして細かな設定等については記事を載せておりますので、本記事ではもう少し俯瞰的な観点でAlways Encryptedについてご紹介いたします。

 まず初めに、SQL Server 2014までの各種暗号化の機能には以下のような特徴があります。

 それぞれ特徴があるため、よりセキュリティ強度の高いシステムを実現するためには各種機能を組み合わせて実装いただくことを推奨しておりますが、それでもDBAの権限が悪用されると、データを暗号化していても、その意味をなさなくなってしまう可能性があります。SQL Serverに限らず一般的な商用データベースでは、職務分掌を実現しDBAがユーザーデータにアクセスできないように制御することも可能な製品が多いですが、現実的には非常に運用面に負担がかかるためにそういった制御を実装していないシステムが多いのも事実です。そういったジレンマを解消するために、SQL Server 2016 では Always Encrypted という機能を実装いたしました。Always Encrypted はアプリケーション側で(正確にはドライバーが透過的に)データの暗号化・復号化を行うことにより、データベースは暗号化されたデータを管理するのみとなります。データベース側ではデータを復号化するためのキーを使用することができないために、DBA権限を悪用された際にもデータの漏えいを防ぐことができるという仕組みとなっています。

 以下ではAlways Encryptedをご利用いただくにあたり理解しておいていただきたいポイントをお伝えします。

 まず、一般的なお話として暗号化については大きく以下三点について把握しておく必要があります。

  1. キーを使用してデータはどのように暗号化されるか
  2. 暗号化するためのキーはどのように保護されているか
  3. キーを交換する際にはどのように対処すべきか

 一つ一つをAlways Encryptedに照らし合わせながら見ていきたいと思います。なお、厳密には”暗号化”の対になるのは”復号”と思いますが、本記事では SQL Server のマニュアルに合わせるために”暗号化”、”復号化”と表現させていただきます。

1.キーを使用してデータはどのように暗号化されるか

 Always Encrypted では、列暗号化キー(対称キー)を用いてデータを暗号化しますが、データを暗号化・復号化する箇所はアプリケーション側のドライバー部分となります。データベース側で、どのテーブルの、どの列に対し、どの列暗号化キーを使って暗号化するかを定義し、ドライバーはその情報をデータベース側から取得し、必要な列に対してドライバー内にキャッシュした列暗号化キーを使ってデータの暗号化・復号化を実施します。

Always Encrypted におけるデータ暗号化・復号化
Always Encrypted におけるデータ暗号化・復号化

 特徴的なのは、データベース側で暗号化・復号化を実施せずにアプリケーション側にあるドライバーで実施する点です。これによりデータベース 側はあくまでも暗号化されたデータを格納、取り出すだけとなり、データベース側にてデータを復号化することはできません。そのため、DBAがデータを抜き出したとしても、そのデータはあくまでも暗号化されたデータであるために情報漏えいを防ぐことが可能となっています。また、暗号化・復号化による負荷をデータベース側ではなくアプリケーション側にオフロードすることにより、データベースに余分な負荷がかかることもありません。

※この続きは、会員の方のみお読みいただけます(登録無料)。


著者プロフィール

  • 中川(ナカガワ)

    日本マイクロソフト株式会社 クラウド&ソリューションビジネス統括本部 データプラットフォーム技術部 日本マイクロソフトでSQL Serverを中心としたデータプラットフォーム製品群の技術営業を担当しているチームに所属しています。国内SIer、外資系データベースベンダーを経てMSに入社し...

バックナンバー

連載:今さら聞けないSQL Serverのメモリ最適化テクノロジーと、押さえておきたいSQL Serverのデータベースセキュリティ
All contents copyright © 2007-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5