SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

直近開催のイベントはこちら!

EnterpriseZine編集部ではイベントを随時開催しております

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

今さら聞けないSQL Serverのメモリ最適化テクノロジーと、押さえておきたいSQL Serverのデータベースセキュリティ

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

 今回は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がデータを抜き出したとしても、そのデータはあくまでも暗号化されたデータであるために情報漏えいを防ぐことが可能となっています。また、暗号化・復号化による負荷をデータベース側ではなくアプリケーション側にオフロードすることにより、データベースに余分な負荷がかかることもありません。

次のページ
2.暗号化するためのキーはどのように保護されているか

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
今さら聞けないSQL Serverのメモリ最適化テクノロジーと、押さえておきたいSQL Serverのデータベースセキュリティ連載記事一覧

もっと読む

この記事の著者

中川(ナカガワ)

日本マイクロソフト株式会社
クラウド&ソリューションビジネス統括本部
データプラットフォーム技術部日本マイクロソフトでSQL Serverを中心としたデータプラットフォーム製品群の技術営業を担当しているチームに所属しています。国内SIer、外資系データベースベンダーを経てMSに入社し、データベースとしてSQL Server、およびOracle Databaseのスキルを擁し、最近ではHadoopや機械学習なども担当しています。学生の頃に少しか...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/8555 2016/11/02 06:00

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング