...

IBM BigInsights 4.1 - HDFS暗号化検証レポート

by user

on
Category: Documents
15

views

Report

Comments

Transcript

IBM BigInsights 4.1 - HDFS暗号化検証レポート
IBM BigInsights 4.1
HDFS 暗号化検証レポート
2016 年 6 月 30 日
クリエーションライン株式会社
1. 目次
2. 変更履歴 ........................................................................................................................... 3
3. はじめに.............................................................................................................................. 4
3.1. 暗号化の意義と本検証の観点....................................................................................... 4
4. 検証環境 ........................................................................................................................... 5
4.1. 検証環境 1: 機能検証環境 ......................................................................................... 5
4.1.1. 検証機スペック .......................................................................................................... 5
4.1.2. ネットワーク構成 ........................................................................................................ 6
4.1.3. ソフトウェア構成 ........................................................................................................ 7
4.2. 検証環境 2: 性能検証環境 ......................................................................................... 8
4.2.1. 検証機スペック .......................................................................................................... 8
4.2.2. ネットワーク構成 ........................................................................................................ 8
4.2.3. ソフトウェア構成 ...................................................................................................... 10
5. 検証の前提 ...................................................................................................................... 11
5.1. BigInsights の利用形態 ........................................................................................... 11
5.2. 検証方法と目的 ........................................................................................................ 11
検証1)暗号化適用検証.............................................................................................. 11
検証2)性能検証 ........................................................................................................ 12
6. ベンチマーク検討................................................................................................................ 12
6.1. ベンチマークソフトウェア検討 .......................................................................................... 12
6.2. ベンチマーク構成検討.................................................................................................. 13
7. 暗号化解説および設定手順............................................................................................... 15
7.1. 非暗号化(デフォルト状態)........................................................................................... 15
7.2. HDFS 暗号化 ........................................................................................................... 15
<HDFS 暗号化手順> ................................................................................................. 15
7.3. LUKS 暗号化 ........................................................................................................... 19
<LUKS 暗号化手順> ................................................................................................. 19
8. ベンチマーク・性能評価 ....................................................................................................... 22
8.1. DFSIO ベンチマークと暗号化による性能劣化傾向 .......................................................... 22
8.2. Hibench ベンチマークによる性能傾向 ........................................................................... 23
9. 議論と考察....................................................................................................................... 25
9.1. 適用難易度に関する考察 ........................................................................................... 25
9.2. 性能への影響 ............................................................................................................ 25
1
9.3. ユーザビリティに関する考察 .......................................................................................... 25
10. まとめ ............................................................................................................................. 25
付録 .................................................................................................................................... 26
2
2. 変更履歴
更新日
Ver
変更内容
2016/6/30
1.0
初版
3
3. はじめに
本文書は IBM BigInsights 4.1(以下 BigInsights と呼称)の主要な構成要素である、Hadoop
Distributed filesystem(以下 HDFS)の暗号化による利点と、その影響を検討・検証することを目的と
する。
3.1. 暗号化の意義と本検証の観点
コンピュータにおける暗号化は、記録媒体上のデータ(静止データ)に適用する暗号化と、通信中のデ
ータ(移動データ)に適用する暗号化の 2 種類に大別され、今回検証する HDFS データは「静止データ
に対する暗号化」に属する。一般的に Hadoop システムに格納され分析されるデータは企業の売り上げ
データや顧客情報など、企業内に秘匿すべきデータが含まれることが多い。従ってこれらのデータを暗号化
することによって、ハードウェア廃棄の際にデータを削除し忘れたとしても、第三者にデータが漏えいする可能
性を低く抑えることが可能になる。
静止データに適用される暗号化の大きな利点は記録媒体(ハードディスク、テープ、CD、DVD など)
の盗難の際に、記録情報の読み出しを妨害する点である。具体的な適用例としてはノートパソコンやサー
バの盗難に対する耐性の確保、廃棄したハードディスクや DVD から他者がデータを抽出することに対する
記録データ抽出の阻止が想定される。ただし一般的にはこれら記録媒体は正当な利用者が使用している
際にはユーザの利便性を損なうことのない透過的なデータの読み出し、書き込みが期待される。
またハードディスクや DVD などの記録媒体上のデータは後述する移動データに比べ、個々のファイルは完
結したデータであることが多い。従って仮に暗号が解読されると、情報が完全に露呈する可能性が高い。従
って静止データに対する暗号は、移動データに対する暗号に比べて暗号化・復号化に対する難易度の高
いアルゴリズムが選択され、よりコンピューティング資源(処理能力、メモリ量)を消費する傾向にある。
移動データに適用する暗号の大きな利点は通信の秘匿を保ち、盗聴を妨害することにある。具体的な
適用例としては、通信経路におけるデータの盗聴に対する抑止が想定される。一般的な TCP/IP ネットワ
ークにおいて、多くの場合実データは複数の TCP パケットに分割されて送信されるため、一部のデータの盗
聴に成功しても完全なデータを復元できるわけではなく、静止データの読み出し、書き込み以上に即時性
を求められることや、対象デバイスが多様であることを踏まえ、暗号化アルゴリズムは比較的難易度の低い
ものが選択されることが多い。
4
ただし暗号化による影響で処理性能が極端に低下する場合は、システム本来の目的であるところの適
宜適切なデータ処理が難しくなる場合があるため、暗号化に伴う処理の遅延はある程度現実的な範囲に
収まることが望ましいと言える。同様に適用前の運用方法が極端に変わったり非現実的な前提条件が求
められる場合も、暗号化の現実的な適用は難しいといえる。
従って本検証を行うにあたり以下の事項を観点として取り上げ、複数の暗号化方式において検討・検証
を行った。
● 暗号化そのものの適用難易度
● 暗号化によるユーザビリティへの影響
● 暗号化による性能への影響
4. 検証環境
本検証に際して 2 つの検証環境を構築し、それぞれ異なる観点の検証を行った。
4.1. 検証環境 1: 機能検証環境
本検証環境は比較的小規模な検証環境であり以下の用途に使用した。
● 暗号化適用難易度検証
● 暗号化手順の検証、手順確立
4.1.1. 検証機スペック
<ホストマシンスペック>
機種:
Lenovo ThinkPad W540 x2 台
CPU:
Intel Core i7-4710M (2.50GHz, 4core, 8thread)
メモリ:
32GB
HDD:
東芝 HG6 SSD 512GB x1 台
(型番: THNSNJ512GBSU)
ネットワーク:
1Gb Ethernet
ホスト OS:
Windows 7 Professional 64bit
仮想化ソフトウェア:
VMware Workstation 10.0.3
5
<仮想マシンスペック(仮想マシン 1 台あたり)>
仮想 CPU:
2
仮想メモリ:
8GB
仮想 HDD:
50GB
仮想ネットワーク:
ブリッジ接続
4.1.2. ネットワーク構成
<物理ネットワーク構成>
<論理ネットワーク構成>
6
4.1.3. ソフトウェア構成
<バージョン情報>
OS:
Red Hat Enterprise Linux 6.7 (64bit)
BigInsights: 4.1
<システム構成>
Node
仮想マシン(1)
BigInsight Cluster
Ambari Server
IP Addr
Server
仮想マシン(2)
仮想マシン(3)
仮想マシン(4)
仮想マシン(5)
仮想マシン(6)
仮想マシン(7)
Node1
Node2
Node3
Node4
Node5
Node6
192.168.20.1
192.168.20.10
192.168.20.10
192.168.20.1
192.168.20.1
192.168.20.1
192.168.20.10
11
0
1
02
04
05
6
Ambari Server
NameNode
SNameNode
DataNode
DataNode
DataNode
DataNode
DataNode
DataNode
Metrics
Collector
7
Metrics Monitor
Client
Metrics
Metrics
Metrics
Metrics
Metrics
Monitor
Monitor
Monitor
Monitor
Monitor
ZooKeeper
ZooKeeper
ZooKeeper
Server
Server
Server
HDFS Client
HDFS Client
HDFS Client
HDFS Client
ZooKeeper
HDFS Client
HDFS Client
HDFS Client
Client
4.2. 検証環境 2: 性能検証環境
本検証環境は中規模な検証環境であり以下の用途に使用した。
● 暗号化による性能への影響
4.2.1. 検証機スペック
使用物理マシン数:
16
<マシンスペック(1 台あたり)>
CPU:
Intel Xeon E5-2680 v3 (12core) x2socket
メモリ:
256GB
HDD(1):
OS 領域
Intel SSD 320 120GB x2 基(RAID-1)
HDD(2):
データ領域
900GB SAS 10,000RPM HDD x16 基
Avago MegaRAID-SAS RAIDcard
ネットワーク:
Cisco VIC vNIC 10Gbps x1
4.2.2. ネットワーク構成
<物理ネットワーク構成>
8
<論理ネットワーク構成>
9
4.2.3. ソフトウェア構成
<バージョン情報>
OS:
Red Hat Enterprise Linux 6.7 (64bit)
BigInsights: 4.1
<システム構成>
Node
BigInsights Cluster
マシン(1)
マシン(2)
マシン(3)-(16)
Node1
Node2
Node3-15
IP Addr
172.16.21.11
Server
Ambari Server
172.16.21.12
NameNode
SNameNode
DataNode
DataNode
172.16.21.13-26
DataNode
YARN ResourceManager
YARN NodeManager
YARN NodeManager
YARN NodeManager
Metrics Collector
Client
Metrics Monitor
Metrics Monitor
Metrics Monitor
ZooKeeper Server
ZooKeeper Server
ZooKeeper Server
HDFS Client
ZooKeeper Client
10
5. 検証の前提
5.1. BigInsights の利用形態
BigInsights の各コンポーネントは、BigInsights クラスタを構成しているマシンに直接ログイン(OS 認
証)して使用するもの、または、Knox を経由(LDAP 認証)して使用するものがある。本検証は HDFS を
直接操作するため、マシンに直接ログイン(OS 認証)する方法を行った。Kerberos 認証もサポートされて
いるが、本検証においては HDFS の暗号化とその影響を検証することが趣旨であり、実際の実用において
はどのようなユーザ認証方式でも利用できると考える。
5.2. 検証方法と目的
検証方法については以下のとおりとする。
検証1)暗号化適用検証
● 検証環境1を使用する
● HDFS を導入した BigInsights クラスタに以下の暗号化を施し、それぞれの適用難易度や、ユ
ーザが使用する際に考慮スべきことがあるかなどユーザビリティへの影響を検証する
○ 検証する暗号化方式は以下の 2 形式
11
■ HDFS 暗号化
Hadoop が提供している HDFS 暗号化方式。暗号化/復号化を行うのは
Hadoop クライアントである(後述)
■ LUKS 暗号化
RHEL が正式サポートしている Device Mapper を使用した暗号化方式。暗
号化を行うのは OS(カーネルプロセスの kcryptod)
検証2)性能検証
● 検証環境2を使用する
● 検証1)で行った暗号化方式および、非暗号化状態の HDFS ボリュームに対してベンチマークを
行う。非暗号化状態に比べどの程度の性能劣化がみられるかを検証する
6. ベンチマーク検討
検証で使用するベンチマークソフトウェア、ベンチマーク構成について検討を行った。それぞれ以下に解説
する。
6.1. ベンチマークソフトウェア検討
(1) DFSIO
比較的標準的に使用されているベンチマーク。実運用環境における使用例が多いため、他のベ
ンチマークソフトウェアの実行結果と比べるための基準として使用されることが多い。
BigInsights では標準の hadoop パッケージに含まれている1。
(2) HiBench/DFSIO-e
DFSIO ベンチマークの結果出力はサマリの表示にとどまるため、状況によってより詳細なデータが
ほしい場合に情報が不足することがある。HiBench に含まれる”Enhanced DFSIO(DFSIO-
1
プログラムの実態は /usr/iop/4.1.0.0/hadoop-mapreduce/hadoop-mapreduce-
client-jobclient-2.7.1-IBM-8-tests.jar もしくは /usr/iop/4.1.0.0/hadoopmapreduce/hadoop-mapreduce-client-jobclient-tests.jar である。
12
e)”は DFSIO と同様のテストを行い、より詳細な結果(例えばベンチマーク中のパフォーマンスの
推移)を出力するため、ベンチマーク結果比較の際により踏み込んだ分析が可能となる。
HiBench および DFSIO-e は標準の Hadoop ディストリビューションおよび BigInsights には
含まれていないが、GitHub でソースコードが公開されている。( https://github.com/intelhadoop/HiBench )
(3) LoadGenerator
HDFS のパフォーマンスに関して、DataNode に対するスループットとともに、NameNode の性
能に依存するファイルの作成、削除などの処理速度は、プログラムの特性によっては重要な指標に
なることがある。
LoadGenerator は NameNode に特に負荷を与えるベンチマークソフトウェアであり、HDFS
におけるファイルの生成速度などを観測することができる。前述の DFSIO が MapReduce ジョブ
を投入することで性能を観測するのに対して、LoadGenerator はシングルプログラム・マルチスレ
ッドで動作し、開始時に作成したファイル・ディレクトリのリストからランダムにパスを選定し、ファイルを
作成し、その作成速度を計測する。
LoadGenerator は Hadoop 標準ディストリビューションに含まれているが、BigInsights には
含まれていないようである。
ただし今回は検証の時間が限られていること、使用されるハードウェア構成が大量のファイルの作
成、削除に向いていないことから、ディスクのボトルネックによって暗号化有無における有意差を見
いだせないと思われることから、今回の検証対象からは除外した。
上記より、今回の検証においては、DFSIO、HiBench/DFSIO-e の 2 種類のベンチマークを行うこととし
た。
6.2. ベンチマーク構成検討
ベンチマークの実施に際して、極力ハードディスクがボトルネックにならないよう構成を検討した。具体的に
は以下のように構成を行った。
● 内蔵されているハードディスク 24 本を 8 本づつに分け、RAID-0 で構成した。RAID 構成には
MegaRAID-SAS 内蔵コントローラを使用した
● ファイルシステムには XFS を使用した。フォーマット時の各種オプション値はデフォルトのままとした
● ベンチマークの実施においては実施前にバッファキャッシュをクリアしてから実行した。実際のアプリケ
ーション利用の際には、書き込んだ直後のデータを読む場合があり、その際にはメインメモリ上のキャ
ッシュされたデータを読み込むため、必ずしも今回のベンチマーク結果に沿わない場合があるが、今
13
回はベンチマークにおける I/O 性能劣化要因が暗号化の有無にあるかどうかを明らかにするため、
あえてバッファキャッシュを極力利用したい方針とした
● ベンチマークにおける 1 ファイルサイズは 64MB および 1024MB の2種類とした。ベンチマーク時
に各ノードに均等に I/O 負荷がかかるとともに、CPU、メモリを極力消費するようベンチマーク実行
時の実行ファイル数は適宜調整を行った。
● 計測ノード数は 4 台から開始し、4,8,12 台と増やしながら計測することとした。これには以下の
要素を見る意図がある
○ ノードが増えるごとに暗号化の負荷が増加するか
○ (暗号化の有無に関わらず)ノードが増えるごとにノードあたりの性能が変化するか
○ (暗号化の有無に関わらず)ノードが増えるごとにクラスタ全体の性能が改善するか。仮に
ノードあたりの性能が劣化した場合でも、所定のノード数によって目標性能を確保すること
が可能かどうかを確認する
上記検討事項を以下に図示する。
<ベンチマーク設定>
● DFSIO および Hibench
○ 測定ファイルサイズ(fileSize):
64MB および 1024MB
14
○ ファイル数(nrFiles):
■ 4 ノード時:
100
■ 8 ノード時:
200
■ 12 ノード時:
300
7. 暗号化解説および設定手順
7.1. 非暗号化(デフォルト状態)
BigInsights 導入直後の HDFS には特に暗号化処理は行われていない。この状態でベンチマークを行
い、性能比較のための基準値取得した。
7.2. HDFS 暗号化
Hadoop では 2.3.0 より HDFS の透過的な暗号化機能が追加されており2、HDFS の中の任意のデ
ィレクトリ以下を暗号化することが可能になっている。暗号化および復号化はクライアント(MapReduce,
YARN ジョブの場合はジョブの末端プロセス)にて行われ、HDFS NameNode および DataNode そのも
のが暗号化/復号化を行うわけではない。暗号キー自体は別途構成する Key Management
Server(KMS)上に格納され、プログラム内で対象ディレクトリにアクセスする場合に必要に応じて取得され
る。また KMS の動作、管理は Hadoop クラスタの管理外で行うことができるため、暗号化キーの管理者
を Hadoop 管理者と別にすることができる。従って Hadoop クラスタと独立した場所に暗号化キーを保存
することができるため、Hadoop クラスタのディスクを廃棄するだけでデータの復元を抑止することができる。
(詳細解説3)
<HDFS 暗号化手順>
<要素の関係>
2
3
https://issues.apache.org/jira/browse/HDFS-6134
http://www.slideshare.net/cloudera/hdfs-encryption
15
HDFS 暗号化においては、Hadoop クラスタ外に暗号化/復号化に使用する共通鍵を保管し、クライアン
トの必要に応じて提供するための Key Management Server(KMS)を構築する。その後、HDFS の
設定で KMS と正しく通信するための設定を追加することで、HDFS 暗号化を利用することができるように
なる。
<KMS の構築と、HDFS 暗号化初期設定手順>
1. KMS を動作させるホスト上で
# mkdir -p /usr/kms
2. NameNode 上で
# scp /usr/iop/current/hadoop-client/mapreduce.tar.gz
root@KMSHOST:/usr/kms
3. KMS を動作させるホスト上で
# cd /usr/kms ; tar xvf mapreduce.tar.gz
4. # cd /usr/kms/hadoop/sbin ; ./kms.sh run
5. Ambari WebUI を開き、トップページから
[Services]-[HDFS]を選択する。サブペインから[Configs]を選択する
16
6. [Adcanced]を選択
7. “Custom core-site”を開き、”Add Property…”をクリック
以下のように項目を追加する
Key:
hadoop.security.key.provider.path
Value:
kms://http@<KMSHOST>:16000/kms
追加後の状態は以下のようになる
8. 同様に”Custom hdfs-site”を開き、”Add Property…”をクリック
以下のように項目を追加する
Key:
dfs.encryption.key.provider.uri
Value:
kms://http@<KMSHOST>:16000/kms
追加後の状態は以下のようになる
17
9. 画面上部の[Save]ボタンをクリックし、変更を保存
10.
[Service Actions]から[Restart All]を選択し、HDFS サービスを再起動する
<HDFS の暗号化・解除・キーの削除>
1. HDFS クライアント上で暗号化キーを生成する
$ hadoop key create key1 -size 256
2. キーの情報を表示する
$ hadoop key list -metadata
Listing keys for KeyProvider:
KMSClientProvider[http://bi00.mkhome:16000/kms/v1/]
key1 : cipher: AES/CTR/NoPadding, length: 256,
description: null, created: Tue Jun 14 13:08:09 JST 2016,
version: 1, attributes: [key.acl.name=key1]
3. 暗号化対象のディレクトリを作成する
$ hdfs dfs -mkdir /securelogs
4. 対象ディレクトリを暗号ゾーンに追加する
$ hdfs crypto -createZone -keyName key1 -path /securelogs
5. 暗号化対象ディレクトリの一覧を取得
$ hdfs crypto -listZones
/securelogs key1
6. 暗号化を解除することはできない。対象ディレクトリを削除すると、自動的に暗号化対象リ
ストからも削除される
$ hdfs dfs -rm -r -skipTrash /securelogs
7. 暗号化キーを削除するには以下のコマンドを実行する
$ hadoop key delete key1
You are about to DELETE all versions of key key1 from
KeyProvider
KMSClientProvider[http://bi00.mkhome:16000/kms/v1/].
Continue? (Y or N) Y
Deleting key: key1 from KeyProvider:
KMSClientProvider[http://bi00.mkhome:16000/kms/v1/]
key1 has been successfully deleted.
KMSClientProvider[http://bi00.mkhome:16000/kms/v1/] has
been updated.
18
7.3. LUKS 暗号化
LUKS(Linux Unified Key Setup-on-disk-format)暗号化は Red Hat Enterprise Linux が
標準的にサポートしているブロックデバイス暗号化手法である。ブロックデバイス全体を暗号化するため上位
のファイルシステムやアプリケーションを問わない暗号化が可能である。暗号化は複数設定できるキーフレー
ズ(パスフレーズ)によって行われる。従ってデバイス暗号化時にパスフレーズを使って暗号化し、別のパスフレ
ーズを使って起動時に自動的に暗号化デバイスをオープンし、マウントするといった使用方法が可能である。
LUKS は Linux 標準の Device Mapper の仕組みを使ってデバイスを管理する。
<LUKS 暗号化手順>
以下に既存の BigInsights の HDFS ボリュームを暗号化する手順について記述する。
例では全てのホストの/dev/sdd を暗号化対象のディスクとして使用している。
<移行元>は/hadoop/hdfs/data、暗号化デバイスのマウント先(=<移行先>)は、
/hadoop/hdfs/cryptdata としているので、実際の適用に当たっては適宜読み替え、変更するこ
と。
1. 暗号化対象デバイス(/dev/sdd)が HDFS 含め既存のアプリケーションで使用されていないこと
を確認する
2. # umount /dev/sdd
3. # cryptsetup luksFormat /dev/sdd
パスフレーズを指定する(A)
4. # cryptsetup luksOpen /dev/sdd crypthdfs
パスフレーズ(A)を入力する
成功すると、/dev/mapper/crypthdfs が作成される
5. # mkfs -t ext4 /dev/mapper/crypthdfs
6. # mkdir -p /hadoop/hdfs/cryptdata
7. # mount /dev/mapper/crypthdfs /hadoop/hdfs/cryptdata
8. 続いて起動時に自動的に暗号化デバイスをオープンし、マウントするように設定する
9. 暗号化キーファイルを作成する(起動時の自動マウント用)
# dd if=/dev/urandom of=/boot/luks_key_sdd bs=1 count=1024
# chmod 0600 /boot/luks_key_sdd
10. # cryptsetup luksAddKey /dev/sdd /boot/luks_key_sdd
パスフレーズ(A)をタイプ
19
11. /etc/crypttab を編集
[cryptsetup デバイス名] [/dev 名] [キーファイルへのパス] [LUKS 拡張が必要である旨]
実際には以下のように記述する
crypthdfs /dev/sdd /boot/luks_key_sdd luks,timeout=5
12. /etc/init.d/mountcryptfs を作成
https://bitbucket.org/snippets/m-kiuchi/d6a6A
(以下はコピペするとダブルクオートが化けるので上記のスニペットを推奨)
#!/bin/bash
# chkconfig: 345 50 40
# description: mount crypted HDFS devices
case “$1” in
start)
mount /dev/mapper/crypthdfs /hadoop/hdfs/cryptdata
;;
stop)
umount /hadoop/hdfs/cryptdata
;;
*)
echo $”Usage: $0 {start|stop}”
exit 2
esac
【注意】/etc/fstab への記述によるマウントは安定的な動作を行わない場合があるため、推
奨できない。また/etc/rc.local への記述も BigInsights の起動と連動できないことから避
けること。
13.
# chmod +x /etc/init.d/mountcryptfs
14.
# chkconfig --add /etc/init.d/mountcryptfs
15. テストを行う
必ず stop->start の順にテストする
# service mountcryptfs stop
暗号化デバイスがアンマウントされていることを確認する
# service mountcryptfs start
start ののちに暗号化デバイスがマウントされていることを確認する
16. この時点でデータ移行を行う
ambari で、[Service]-[HDFS]を選択
20
[Actions]-[Stop]を選択し、HDFS サービスを停止する
17.
データ移行を行う
# cd <移行元>
# tar cf - . ; ( cd <移行先> ; tar xvf - )
18. ambari で、[Service]-[HDFS]を選択
Config タブの、[DataNode]-”DataNode directories”を移行後のディレクトリに修正し、
[Save]ボタンを押下
19. 各ノードを再起動する
再起動後暗号化ファイルシステムが/hadoop/hdfs/cryptdata にマウントされていることを
確認する
21
20. ambari で、[Service]-[HDFS]を選択
[Actions]-[Start]を選択し、HDFS サービスをスタートする
8. ベンチマーク・性能評価
8.1. DFSIO ベンチマークと暗号化による性能劣化傾向
暗号化による性能の劣化については、特に書き込み時に観測することができた。以下はそれぞれの暗号
化手法を適用した場合の DFSIO ベンチマークにおける読み込み性能および書き込み性能を図示してい
る。
22
ここで HDFS 暗号化による性能劣化がほぼ見受けられないことに注目されたい。HDFS 暗号化適用時
における性能傾向は非暗号化時における性能傾向とほぼ同じであり、HDFS 暗号化に際して統計的、
体感的な性能劣化がなく、暗号化に関するオーバーヘッドが無視できるほど軽微であることを示唆してい
る。とはいうものの、LUKS 暗号化においてもファイル読み込み時における性能は非暗号化時とほぼ同等の
傾向を示しており、実際の適用にあたってファイルの読み込みがほとんどである場合は LUKS 暗号化も十
分適用の余地があると考えられる。
また暗号化の有無によらず、クラスタノードを増やし、テストファイル数を増加しても、ノード当たりの書き込
み性能は同等か、劣化している。ただしノード数が増えたことによりクラスタ全体の読み込み、書き込み性
能はいずれの手法でも向上していることを確認した。全体的には書き込み時における性能の劣化が見受
けられるが、これは読み込み時におけるメモリキャッシュの効果によるものと思われる。ただし LUKS 暗号化
における 1024MB/file 書き込み時においては顕著な性能劣化を観測した。
上記の結果から、暗号化による性能劣化は全般的には軽微であるが、LUKS 暗号化を使用し地得る
場合、特定のアクセスにおいては特に書き込み時において大きな性能劣化の可能性があるということができ
る。
8.2. Hibench ベンチマークによる性能傾向
続いて Hibench/DFSIO-e ベンチマークにおける性能傾向を以下に図示する。
23
Hibench/DFSIO-e においても、先に記述した DFSIO ベンチマークと同様の傾向を示している。読み
込みにおいては暗号化手法によらず性能劣化はほぼ見受けられないのに対して、書き込みにおいては
30%程度の性能劣化が見受けられる。ただし、クラスタ全体の性能はノード数の増加とともに向上する傾
向にある。
24
9. 議論と考察
9.1. 適用難易度に関する考察
HDFS 暗号化の適用手順は LUKS 暗号化の適用手順よりも簡便であり、非暗号化領域と暗号化領
域を混在して運用することができること、暗号化領域の削除が可能であることから、適用難易度が低いと
考えることができる。
ただし従来の一般的な Linux 管理に慣れた管理者にとっては HDFS 独自の暗号管理手法には抵抗
があるかもしれない。運用にあたっては HDFS クラスタ独自の管理手法に習熟するためのトレーニングが必
要になるため、若干負担が増えることになると考える。
9.2. 性能への影響
前章に記述したとおり、HDFS 暗号化は非暗号化に比べた性能劣化がほとんど見受けられない。これは
HDFS 暗号化と LUKS 暗号化の実装レイヤの差異に起因するものと考えられる。ただし HDFS 暗号化
においては、暗号強度の選択幅が LUKS 暗号化に比べて狭いため、環境によっては適用できない可能性
があることは留意すべきである。
9.3. ユーザビリティに関する考察
いずれの暗号化手法においても、ユーザは従来の利用方法、プログラムの変更などの対応は不要であ
り、ユーザビリティは高いと考えられる。
10. まとめ
一般的に Hadoop システムに格納され分析されるデータは企業の売り上げデータや顧客情報など、企
業内に秘匿すべきデータが含まれることが多い。従ってこれらのデータを暗号化することによって、ハードウェア
廃棄の際に第三者にデータが漏えいする可能性を低く抑えることが可能になる。
考えうる情報漏えいの機会の中で最も高いものは、Hadoop システム廃棄の際に廃棄過程の中で起こ
りうる情報の漏洩であり、HDFS 暗号化は暗号鍵を Hadoop クラスタと分けて管理することができるため、
漏洩の可能性をより低減させることが可能であると考える。ただし、適切に鍵と Hadoop システムを分離す
25
るように設計、運用されなければならず、Hadoop システム内に暗号鍵管理サーバ(Key Management
Server, KMS)を共存させた場合の漏洩リスクは LUKS 暗号化と同等となることに注意されたい。
懸念された性能への影響に関しても、非暗号化時と遜色のない性能が期待できることを確認した。
HDFS 暗号化の構築・管理にかかる難易度が低いことを鑑み、システム管理者は積極的な HDFS 暗号
化を検討すべきであると考える。
付録
本検証に当たる関連資料を以下に記述する。
1. ベンチマーク実行スクリプト
https://bitbucket.org/creationline/biginsight-eval
2. Hibench 構築手順書
<別紙>
3. ベンチマーク測定結果一覧
<別紙>
26
27
Fly UP