Amazon FSx for NetApp ONTAPで拡張子に基づいて書き込みを制限する方法
Amazon FSx for NetApp ONTAP では FPolicy 機能を利用することで、特定の拡張子以外の書き込みを制限することができるので試してみました。
FPolicy とはファイルアクセスの監視と管理に利用されるファイルアクセス通知のフレームワークです。
特定の拡張子のファイルを制限するユースケースとして次の例があります。
- 動画などの大容量ファイルを制限して容量を節約
- ランサムウェア対策
ランサムウェア対策となる理由の補足ですが、ランサムウェアの中には暗号化したファイルの拡張子を特定の拡張子に変更する動作のものがあり、書き込みを許可していない拡張子だった場合に暗号化処理を防止できる可能性があるためです。
(参考)ランサムウエア対策特設サイト
試してみた
動作確認を行った FSx for ONTAP の構成図です。テスト目的のためシングル AZ 構成にしています。
FSx for ONTAP ではストレージ仮想マシン(SVM)とボリュームvol1
を作成している状態です。
::> vserver show Admin Operational Root Vserver Type Subtype State State Volume Aggregate ----------- ------- ---------- ---------- ----------- ---------- ---------- test-fsx-ontap-svm01 data default running running test_fsx_ aggr1 ontap_ svm01_root ::> volume show Vserver Volume Aggregate State Type Size Available Used% --------- ------------ ------------ ---------- ---- ---------- ---------- ----- test-fsx-ontap-svm01 test_fsx_ontap_svm01_root aggr1 online RW 1GB 972.5MB 0% test-fsx-ontap-svm01 vol1 aggr1 online RW 1GB 972.5MB 0% 2 entries were displayed.
設定の流れ
FPolicy は次の順番で設定します。
- (FPolicy 外部エンジンの作成)
- FPolicy イベントの作成
- FPolicy ポリシーの作成
- FPolicy ポリシーのスコープを設定
- FPolicy ポリシーの有効化
今回設定する拡張子に基づいたファイル書き込み制限のみが要件の場合は、始めの手順の外部 FPolicy エンジンとの作成は必須ではなく、内部のネイティブエンジンを利用することで実現できます。
(参考)FPolicy の設定タイプ
それでは、Amazon Linux 2 の EC2 インスタンスから SVM にアクセスして設定していきます。
$ ssh vsadmin@<SVMの管理IPアドレス>
イベントの作成
イベントでは、FPolicy ポリシーで監視する対象の操作を定義します。今回の例では create, open, rename
の 3 つを指定しています。
::> vserver fpolicy policy event create -event-name test-event -file-operations create,open,rename -protocol nfsv4 ::> vserver fpolicy policy event show -event-name test-event Event: test-event Protocol: nfsv4 File Operations: create, open, rename Filters: - Send Volume Operation Notifications: false
パラメータで指定できる値は次のドキュメントに記載があります。
Plan the FPolicy event configuration overview
ポリシーの作成
ポリシーの作成では、監視する必要がある複数のイベントを関連付けます。今回は先ほど作成した 1 つのイベントの関連付けのみです。また、FPolicy エンジンは内部のネイティブエンジンである native
を指定します。
::> vserver fpolicy policy create -policy-name test-policy -events test-event -engine native -is-mandatory true -allow-privileged-access no -is-passthrough-read-enabled false ::> vserver fpolicy policy show -policy-name test-policy Policy: test-policy Events to Monitor: test-event FPolicy Engine: native Is Mandatory Screening Required: true Allow Privileged Access: no User Name for Privileged Access: - Is Passthrough Read Enabled: false
イベント同様に次のドキュメントにパラメータの説明があります。
Plan the FPolicy policy configuration overview
スコープの設定
スコープの設定では、ポリシーで管理する必要があるボリュームや拡張子を指定します。ボリュームvol1
の .txt
と .md
以外の拡張子は書き込みできないように設定してみます。file-extensions-to-include
オプションで全ての拡張子を対象として、file-extensions-to-exclude
オプションで除外したい拡張子を指定しています。
::> vserver fpolicy policy scope create -policy-name test-policy -volumes-to-include vol1 -file-extensions-to-include * -file-extensions-to-exclude txt,md ::> vserver fpolicy policy scope show -policy-name test-policy Policy: test-policy Shares to Include: - Shares to Exclude: - Volumes to Include: vol1 Volumes to Exclude: - Export Policies to Include: - Export Policies to Exclude: - File Extensions to Include: * File Extensions to Exclude: txt, md
今回は file-extensions-to-exclude
オプションを活用して除外設定した拡張子以外のファイルの書き込みを制限しましたが、file-extensions-to-include
オプションを用いて指定した拡張子のみの書き込みを制限することもできます。次は mp4
のみ書き込みを禁止する例です。
::> vserver fpolicy policy scope create -policy-name test-policy -volumes-to-include vol1 -file-extensions-to-include mp4 ::> vserver fpolicy policy scope show -policy-name test-policy Policy: test-policy Shares to Include: - Shares to Exclude: - Volumes to Include: vol1 Volumes to Exclude: - Export Policies to Include: - Export Policies to Exclude: - File Extensions to Include: mp4 File Extensions to Exclude: -
スコープのパラメータを説明したドキュメントです。
Plan the FPolicy scope configuration overview
ポリシーの有効化
最後に、ポリシーを有効化します。有効化後に status が on
になっていることを確認できました。
::> vserver fpolicy enable -policy-name test-policy -sequence-number 1 ::> vserver fpolicy show Sequence Vserver Policy Name Number Status Engine ------------- ----------------------- -------- -------- --------- test-fsx-ontap-svm01 1 on native test-policy
動作確認
Amazon Linux 2 からスコープで指定したボリュームをマウントします。この際に NFS のバージョンは4.1
ではなく4.0
にする必要があります。バージョン4.1
は FPolicy が現状では未対応のためです。
Cloud Secure: Simulating an Attack
$ mkdir /home/ec2-user/fsx $ sudo mount -t nfs -o vers=4.0 10.0.10.227:/vol1 /home/ec2-user/fsx $ sudo chown ec2-user:ec2-user /home/ec2-user/fsx
始めに制限されていない拡張子である .txt
と .md
は作成できました。
$ touch file.txt $ touch file.md $ ls file.md file.txt
次に file.csv
を作成しようとしたところ、意図した通り拒否されました。
$ touch file.csv touch: `file.csv' に touch できません: Permission denied
拡張子の種類に応じて、ファイルの書き込みを制限できることを確認できました。
さいごに
ランサムウェア対策の 1 つとしても利用できる拡張子に基づいたファイル書き込み制限を試してみました。この機能だけですべてのランサムウェアを防ぐことができるわけではありませんが、次のブログでも紹介されている CloudSecure と組み合わせて利用することで感染リスクを減らすことが期待できます。