AWSにFileストレージを構築するメモ

はじめに

会社の環境として、共有のファイルサーバを構築することになった。
外部委託で作ってもらって、それを利用するという方法もあるが、時間もあることだし、自分で作ってみることにしてみた。
(今回は、まだ本番ではなく、リサーチ的な意味合い)
なんとなく簡単にできるような気がしたのであるが、意外と時間がかかってしまった。
まぁ、自分の理解不足の部分があったのだけれども、とりあえず構築できたっぽいので、本番に向けてのメモとして残しておく。

最終目的

以下のような機能があるならば、なるべく安いことが望ましい。

・ActiveDirectoryで管理
(対外的にセキュリティの説明が簡単に済む)
・容量は、ある程度で大丈夫
・AWSへの接続は、VPNで行う

構築する物

・AWS managed Microsoft AD
・ADを管理するためのEC2
・ファイルを格納するためのストレージ(FSx)

簡単な構築メモ

基本的に、あまり深く考えずに作成していくのが良い結果な気がする。

1.ADの作成
ドメイン名を決めるように言われるので、それっぽい名前を考える。
kawasaki.directoryとかで大丈夫。
VPC(VirtualPrivateCloud)を作成せよ、と言われるので、素直に作る。

2.VPCの作成
サブネットが2つ作成されるが、名前を付けておくと、ちょっと便利。

3.管理用EC2の作成
ADには、管理画面なんぞは無いので、管理用のサーバが必要になる。
冗長性を持たせるためには、2つのサブネットに作成するべきかとも思うが、なんせ費用が...ということで、どちらかのサブネットに設定する。
この時に、サブネットに名前が付いてると、どちらを選んだかが分かりやすい。
t2.microというのを選ぶと、1年間は無料になるらしい。

4.サーバ証明書の作成
この後に作成するクライアントVPNエンドポイントに必要なので、サーバ証明書を作成する。
以下に詳しく書いてあるので、参照するのが正しい方法。
https://docs.aws.amazon.com/ja_jp/vpn/latest/clientvpn-admin/authentication-authorization.html#mutual
今回は、相互認証はしないので、必要なのはサーバ証明書のみ。
windowsPCでも作ることは出来るようですが、今回は、AWSに作成してあった、LightSailのコンソールで作成してみた。
使用するのは、OpenVPN easy-rsa というツール。

1.ツールを入手
git clone https://github.com/OpenVPN/easy-rsa.git
2.ディレクトリを移動
cd easy-rsa/easyrsa3
3.初期化
./easyrsa init-pki
4.CA構築
./easyrsa build-ca nopass
5.サーバ証明書とキー入手
./easyrsa build-server-full server nopass

5.AWS Certificate Manager (ACM)への登録
SSL/TLS証明書を一元管理してくれて、AWSで必要になったら簡単に使うことができるようになる。
登録自体は簡単で、4で作成した証明書とキーをACM管理画面から登録するだけ。

6.クライアントVPNエンドポイントの作成
VPCへの接続は、ここで作成するエンドポイントからのみとする。
クライアントに設定するipアドレスは、192.168.4.0/22みたいにする。
サーバ証明書は、5で登録したものが選択できるようになっている。
とりあえず相互認証にしなくてもいいかなぁ、という感じ。
AWSに接続しながらも、インターネットに繋ぐために、スプリットトンネルを有効にする。
作成後の設定で、subnetの関連付けと、VPCへの認証許可を作成する。
接続するには、OpenVPN ベースのクライアントアプリケーション、なんてのが必要になりますが、以下でも入手できる。
https://aws.amazon.com/jp/vpn/client-vpn-download/
クライアントアプリをインストールして、接続用のファイルを利用してVPCに接続できることを確認しておく。

7.EC2をドメインに参加させる
EC2のコンソール画面で、接続用の情報を入手する。
その後、VPN接続し、リモートデスクトップでEC2を操作する。
(今更ながらであるが、3の流れで簡単に出来たのではないか、疑惑があるが、とりあえず手動で参加する方法を書いておく)
詳しくは以下を参照するのが正解。
https://docs.aws.amazon.com/ja_jp/directoryservice/latest/admin-guide/join_windows_instance.html

1.ネットワーク接続を開く
%SystemRoot%\system32\control.exe ncpa.cpl
2.接続しているネットワークを右クリックしてプロパティを開く
3.TCP/IPv4のプロパティを開く
4.使用するDNSサーバとして、1で作ったADのアドレスを入力する
5.システムのプロパティを開く
%SystemRoot%\system32\control.exe sysdm.cpl
6.変更をクリック
7.1で作ったドメインに所属する
8.adminとパスワードを入力

8.管理用EC2にActiveDirectoryToolをインストール
詳しくは、以下を参照。
https://docs.aws.amazon.com/ja_jp/directoryservice/latest/admin-guide/ms_ad_install_ad_tools.html
EC2にリモートデスクトップで接続して、以下の感じ

1.メニューで、[Server Manager] を選択
2.[Dashboard] で、[Add Roles and Features] をクリック
3.[Add Roles and Features Wizard] で、[Next] をクリック
4.[Select installation type] ページで、[Role-based or feature-based installation] を選択して、[Next] をクリック
5.[Select destination server] ページで、ローカルサーバーが選択されていることを確認し、[Next] を選択
6.[Select server roles] ページで、[Next] を選択
7.[Select features] ページで、以下の操作を行う
   [Group Policy Management] チェックボックスをオン
   [Remote Server Administration Tools][Role Administration Tools] の順に展開
   [AD DS and AD LDS Tools] チェックボックスをオン
   [DNS Server Tools] チェックボックスをオン
   [Next] を選択
8.[Confirm installation selections] ページで、情報を確認し、[Install] を選択

9.格納用のストレージとしてFSxを作成
AZはシングルで作ってみた。
安いHDDを選ぶと、最低でも2Tの容量を作ることになる。
その他の設定は、あまり悩むこともなく選択。

10.FSxをDirectoryに参加させる

1.FSxコンソールに接続して、作成したFSxのDNS名を調べる
2.管理用EC2にリモート接続して、ファイルエクスプローラーを開く
3.Networkを右クリックで、Map Network Driveを選択
4.driveを選び、フォルダにFSxのDNS名/shareを入力

ということで、ADにユーザを作ったり、FSxにフォルダを作って制限掛けたり、なんてことが出来るようになる。

おまけ

パスワードポリシーを変更する
パスワードポリシーをユーザーに割り当てる手順は、以下の感じ

1.ActiveDirectory 管理センター (ADAC) を起動
2.ツリー表示に切り替え、[System\Password Settings Container] に移動
3.編集対象のきめ細かいポリシーをダブルクリック
4.[Add] をクリックして、ポリシーのプロパティを編集
5.ユーザーまたはセキュリティグループをポリシーに追加

いまのところのボンヤリした感想
LightSailで個人的なコンテンツを作った時は、サーバを1つ立てた、という感覚だったのであるが、今回はちょっと違った。
それぞれのサーバを立ち上げるのでは無く、提供されるのは、あくまでもそれぞれの機能である。
そしてそれに付随して必要なものは、また別の所で設定することができるようになっていく、という流れ。
ハード的な部分はAWSが地道に構築していて、「これがしたい」と言うと、ひっそり用意して、「これを設定して」と言ってくる感じ。
クラウドで環境を構築する、ということはどうゆうことか、というのが何となく分かったような、感覚的に納得できそうな気がしてきたという、なんとも曖昧な状態である。
結局、LightSailで作った時も、「簡単なサーバを構築したい」と言ったから、「じゃぁ、LightSailでいいんじゃね」と言われたという事かと、今になって気づいた感じかな。あってるかどうか知らんけど...
とにかく、何でこれを設定するのか、ってのを一つ一つ確認しながらやってくようにするのが、一番の近道になるのだろうと思う。
ただし、確認したからと言って、理解したり納得したりできるかどうかは、また別問題なところが悩みどころではある。