アジアクエスト クラウドインテグレーション部の呉蜀魏です。
本記事では、iPadからActive Directory(AD)認証を用いて、Amazon FSx for NetApp ONTAP(以下、FSx ONTAP)へ接続する検証を行った際のポイント・課題・最終構成をまとめます。
AWSの標準サービス設定だけでは完結せず、ONTAPレイヤーの追加作業が必要になる部分が多かったため、今後のプロジェクトで同様の構成を扱う方の参考になれば幸いです。
今回の検証の目的は次のとおりです。
構成図は次のとおりです。
ファイル閲覧の検証では、主に「iPad標準アプリのプロトコル制限」と、それに伴う「AWSコンソールだけでは完結しないONTAP側でのSMB共有設定・管理」の2点が大きなハードルとなりました。 具体的な課題と解決手順は以下のとおりです。
当初、FSx ONTAPに対してNFS接続を想定していましたが、iPadの標準「ファイル」アプリはSMBプロトコルしかサポートしていません。 そのため、SMBプロトコルでの接続に切り替える必要がありました。
AD認証でiPadから接続はできたものの、ファイル一覧が見えない・作成できない・削除できないといった問題が発生しました。
調査の結果、AWSコンソールの設定だけではSMBアクセスが完結せず、ONTAP側でSMB共有(Share)の作成が別途必要であることが判明しました。 この点はFSx ONTAP特有の注意点といえます。
本来ならNetApp ONTAPはNetApp BlueXP Connectorを使うことでGUIベースで管理可能ですが、BlueXP Connector等を実現するためのデプロイが複雑だったため、今回は断念しました。
代替として、Windowsベースの管理用EC2サーバを使用したONTAP CLIによる直接管理に切り替えました。
管理用EC2からFSx ONTAPにSSHでログインし、以下のコマンドでSMB共有を作成しました。
vserver cifs share create \
-vserver <SVM名> \
-share <共有名> \
-path <SMBパス>
共有を作成したことで、WindowsからもiPadからもファイルが参照できるようになり、ここでようやくアクセスが通るようになりました。
次の要件は、ユーザーごとにアクセス可能なフォルダを分離することでした。
これはWindowsサーバ側でNTFS権限を設定することで実現できます。
ユーザーがiPadからフォルダを作成した場合、そのフォルダに自動で「作成者本人 + 管理者」のみがアクセス可能となるよう、CREATOR OWNERを活用しました。
最初はONTAP側のSMB共有権限がEveryone: Full Controlの状態でした。 これにより、NTFSの継承設定が優先されず「すべてのフォルダが見えてしまう」状態になっていました。
以下のように共有ACLを最小権限に変更することで、NTFS側の権限設定が正しく機能するようになりました。
結果として、iPadからiPadUserで接続すると、自分のフォルダしか見えない状態を実現できました。
最終的に構築されたアクセス制御の動きは以下のとおりです。
下の画像のように親フォルダTest-folderの権限を設定しました。
下の画像のように、Test-folderの下に作成したadmintestフォルダでは、Adminのみに権限が付与されます。
iPadUserには権限がないため、admintestフォルダ自体も確認できなくなります。
iPadの画面から新たなフォルダIpadtest2を作成しました。
そうしてWindowsサーバからNTFS権限確認すると、iPadUserとAdminに対して権限が自動付与されます。
SMB共有ACLとNTFS権限が矛盾なく連携し、意図したアクセス制御が実現しました。
今回の検証で得られた知見は以下のとおりです。
共有ACLの確認:
vserver cifs share access-control show -vserver <SVM名>
※SVM: ストレージ仮想マシン(FSx ONTAPがホストされている仮想サーバ)
Everyone権限の削除:
vserver cifs share access-control delete \
-vserver <SVM名> -share <共有名> \
-user-or-group Everyone
権限追加:
vserver cifs share access-control create \
-vserver <SVM名> -share <共有名> \
-user-or-group "BUILTIN\\Administrators" -permission full_control
vserver cifs share access-control create \
-vserver <SVM名> -share <共有名> \
-user-or-group "DOMAIN\\Domain Users" -permission change