みなさんこんにちは。
ブログを書く頻度をあげているので、ネタが枯渇気味な構築担当の川合です。
今回は、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で代用することも検討出来ればと思います。
プロフィール
サーバ構築周り全般を対応しております。
LINK
クラウドベリージャム:プロフィールページ