Amazon Elastic File System

EFSでデータ転送時の暗号化を試してみる

みなさんこんにちは。
ブログを書く頻度をあげているので、ネタが枯渇気味な構築担当の川合です。

今回は、EFSではファイルの暗号化とファイル転送時の暗号化が出来るとは知っていたのですが
実際に試したことはなかったので、どんな手順で作業すればいいのか調べてみたお話です。

概要

検証用に作成したEC2からEFSをマウントしてみます。
※環境は、CentOS7系の最新版を利用しています

EC2からEFSをマウントしてTLSのオプションを付与することで、データ転送時も暗号化されるようになります。

導入準備

まず、EC2にAmazon EFS マウントヘルパーをインストールする必要があります。
【amazon-efs-utils】というパッケージをインストールする必要があり、このパッケージはCentOSではyumで提供されていません。

rpm -q git
git-1.8.3.1-23.el7_8.x86_64
rpm -q make
make-3.82-24.el7.x86_64
rpm -q rpm-build
rpm-build-4.11.3-43.el7.x86_64

ファイルは、Gitでファイルをクローンしてrpmパッケージを作成する手法を取ります。
rpmファイルを作成する作業で上記のパッケージが必要になりますので、インストールされていない場合はインストールをお願いします。

作業ディレクトリに移動して、以下のコマンドを実行します。

git clone https://github.com/aws/efs-utils

すると、【efs-utils】というディレクトリが出来ているはずです。

その後、【efs-utils】のディレクトリに移動して、rpmファイルを作成します。

cd efs-utils
make rpm

設定作業

今までの作業でrpmファイルが【efs-utils】ディレクトリ内の【build】というディレクトリの下にrpmファイルができています。

作成されたrpmファイルを使って、パッケージをインストールします。

yum install /作業ディレクトリ/efs-utils/build/amazon-efs-utils-1.26-2.el7.noarch.rpm
=====================================================================================================================
 Package                   Arch            Version                Repository                                    Size
=====================================================================================================================
Installing:
 amazon-efs-utils          noarch          1.26-2.el7             /amazon-efs-utils-1.26-2.el7.noarch          107 k
Installing for dependencies:
 stunnel                   x86_64          4.56-6.el7             base                                         146 k

Transaction Summary
=====================================================================================================================
Install  1 Package (+1 Dependent package)

インストールが完了したら、EFSをマウントするディレクトリを作成します。

mkdir /mnt/efs

で実際にEFSをマウントしてみます。

mount -t efs -o tls fs-77686856.efs.ap-northeast-1.amazonaws.com:/ /mnt/efs

WARNING: Your client lacks sufficient controls to properly enforce TLS. Please upgrade stunnel, or disable "stunnel_check_cert_hostname" in /etc/amazon/efs/efs-utils.conf.
See https://docs.aws.amazon.com/console/efs/troubleshooting-tls for more detail.

すると、エラーが発生してマウントすることが出来ません。
stunnelをアップデートするように警告が表示されます。

今のstunnelのバージョンを確認してみます。

stunnel -version
stunnel 4.56 on x86_64-redhat-linux-gnu platform

今は、4.56がインストールされています。これをアップデートしていきます。

今インストールされているのは、yumで提供されているバージョンなので
最新バージョンを利用するには、ソースインストールする必要があります。

ソースインストールを行うので、gccなどの開発パッケージもインストールします。

yum install gcc openssl-devel tcp_wrappers-devel

wget https://www.stunnel.org/downloads/stunnel-5.56.tar.gz

tar zxvf stunnel-5.56.tar.gz

cd stunnel-5.56/

./configure

make

rm /bin/stunnel

ln -s /usr/local/bin/stunnel /bin/stunnel

stunnel -version
stunnel 5.56 on x86_64-pc-linux-gnu platform

現時点で最新バージョンは、5.56でしたのでこちらのバージョンをインストールします。
yumでインストールされたstunnelを削除したわけではないので、パスの設定を変更します。
※今のパスを削除して、新しいパスにはりかえます

ちゃんと適用されていれば、同じコマンドを実行しても新しいバージョンで動いていることを確認できます。
4.56から5.56にアップデートできました。

では、再度EFSをマウントしてみます。

mount -t efs -o tls fs-77686856.efs.ap-northeast-1.amazonaws.com:/ /mnt/efs

今度は問題なくマウントすることが出来ました。
tlsのオプションも付与しているので、転送時も暗号化されることになります。

まとめ

CentOSでは、マウントヘルパーをインストールするために一部ソースインストールが必要になるので少し手間になってしまうかなと感じました。
マウントしてNFSサーバとして利用するだけなら、従来のnfs-utilsで事足ります。
セキュリティの要件でファイルの暗号化・転送時も暗号化が必要であれば、この手法をデータ転送時まで暗号化する。
不要であれば管理・運用の観点からnfs-utilsで代用することも検討出来ればと思います。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA