この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ワークグループじゃないとローカルユーザーで認証できないとかあるのかな
こんにちは、のんピ(@non____97)です。
皆さんは「Amazon Fsx for NetApp ONTAP(以降FSx for ONTAP)のCIFSサーバーがドメイン参加している状態でもローカルユーザーで認証できるか」と気になったことはありますか? 私はあります。
以前、ワークグループのCIFSサーバー上のCIFSファイル共有に対して、CIFSのローカルユーザーの認証情報を使ってアクセスしたことがあります。
ワークグループのCIFSサーバーをドメイン参加させることもしたことあるのですが、その際、ローカルユーザーで引き続き認証できるかは確認していませんでした。
気になったので検証してみました。
いきなりまとめ
- FSx for ONTAPのCIFSサーバーがドメイン参加している状態でもローカルユーザーで認証できる
- NTFS ACLでCIFSサーバーのローカルユーザーに対して権限を与えることも可能
検証環境
検証環境は以下の通りです。
CIFSサーバーがドメイン参加している状態でSVM上にCIFSのローカルユーザーを作成し、ローカルユーザーの認証情報を使ってCIFSファイル共有にアクセスできることを確認します。
AD DCについては以下記事の検証で使用したものを流用します。
SVM上にCIFSのローカルユーザーを作成
まず、SVM上にCIFSのローカルユーザーを作成します。
今回はcifs-user
というユーザーを作成しました。
# CIFSサーバーがドメインに参加していることを確認
FsxId0edb8330826eb8118::> cifs show -vserver svm1
Vserver: svm1
CIFS Server NetBIOS Name: SVM1
NetBIOS Domain/Workgroup Name: CORP
Fully Qualified Domain Name: CORP.NON-97.NET
Organizational Unit: OU=FSxForONTAP,DC=corp,DC=non-97,DC=net
Default Site Used by LIFs Without Site Membership:
Workgroup Name: -
Authentication Style: domain
CIFS Server Administrative Status: up
CIFS Server Description:
List of NetBIOS Aliases: -
# CIFSのローカルユーザーを作成
FsxId0edb8330826eb8118::> cifs users-and-groups local-user create -vserver svm1 -user-name cifs-user -is-account-disabled false
Enter the password:
Confirm the password:
# CIFSのローカルユーザーが作成されたことを確認
FsxId0edb8330826eb8118::> cifs users-and-groups local-user show -vserver svm1 -instance
Vserver: svm1
User Name: SVM1\Administrator
Full Name:
Description: Built-in administrator account
Is Account Disabled: true
Vserver: svm1
User Name: SVM1\cifs-user
Full Name: -
Description: -
Is Account Disabled: false
2 entries were displayed.
CIFSファイル共有の作成
次に、CIFSファイル共有を作成します。
今回は/vol1
をパスとするcifs-share
というCIFSファイル共有を作成します。
# ボリュームのジャンクションパスを確認
FsxId0edb8330826eb8118::> volume show -fields junction-path -vserver svm1
vserver volume junction-path
------- --------- -------------
svm1 svm1_root /
svm1 svm1_vol1 /vol1
svm1 svm1_vol2 /vol2
svm1 svm1_vol3 /vol1/vol3
4 entries were displayed.
# CIFSファイル共有の作成
FsxId0edb8330826eb8118::> cifs share create -vserver svm1 -share-name cifs-share -path /vol1
# CIFSファイル共有が作成されたことを確認
FsxId0edb8330826eb8118::> cifs share show -vserver svm1
Vserver Share Path Properties Comment ACL
-------------- ------------- ----------------- ---------- -------- -----------
svm1 c$ / oplocks - BUILTIN\Administrators / Full Control
browsable
changenotify
show-previous-versions
svm1 cifs-share /vol1 oplocks - Everyone / Full Control
browsable
changenotify
show-previous-versions
svm1 ipc$ / browsable - -
3 entries were displayed.
CIFSのローカルユーザーの認証情報でCIFSファイル共有にアクセス
それでは、CIFSのローカルユーザーの認証情報でCIFSファイル共有にアクセスします。
アクセス元のクライアントはもちろんドメイン不参加です。また、CIFSファイル共有の権限はEveryoneでフルコントロールになっています。
FsxId0edb8330826eb8118::> cifs share access-control show -vserver svm1
Share User/Group User/Group Access
Vserver Name Name Type Permission
-------------- ----------- --------------------------- ----------- -----------
svm1 c$ BUILTIN\Administrators windows Full_Control
svm1 cifs-share Everyone windows Full_Control
2 entries were displayed.
CIFSファイル共有cifs-share
をZドライブにマウントします。
# ワークグループであることを確認
> Get-WMIObject Win32_ComputerSystem
Domain : WORKGROUP
Manufacturer : Amazon EC2
Model : t3.micro
Name : EC2AMAZ-32078P3
PrimaryOwnerName : EC2
TotalPhysicalMemory : 1043886080
# 現在のユーザーを確認
> whoami
ec2amaz-32078p3\ssm-user
# ZドライブにCIFSファイル共有をマウント
> net use Z: \\svm-031f39baab78abb88.fs-0edb8330826eb8118.fsx.us-east-1.amazonaws.com\cifs-share
The password is invalid for \\svm-031f39baab78abb88.fs-0edb8330826eb8118.fsx.us-east-1.amazonaws.com\cifs-share.
Enter the user name for 'svm-031f39baab78abb88.fs-0edb8330826eb8118.fsx.us-east-1.amazonaws.com': cifs-user
Enter the password for svm-031f39baab78abb88.fs-0edb8330826eb8118.fsx.us-east-1.amazonaws.com:
The command completed successfully.
# ZドライブにCIFSファイル共有をマウントできたことを確認
> Get-PSDrive
Name Used (GB) Free (GB) Provider Root CurrentLocation
---- --------- --------- -------- ---- ---------------
Alias Alias
C 13.68 16.32 FileSystem C:\ Windows\system32
Cert Certificate \
Env Environment
Function Function
HKCU Registry HKEY_CURRENT_USER
HKLM Registry HKEY_LOCAL_MACHINE
Variable Variable
WSMan WSMan
Z 0.00 0.95 FileSystem \\svm-031f39baab78abb88.fs-0edb8...
CIFSサーバーがドメイン参加している状態でもローカルユーザーで認証できました。
NTFS ACLでCIFSのローカルユーザーに対してアクセス制御できるか
Domain Adminsのみフルコントロールを与えた場合
おまけで、NTFS ACLでCIFSのローカルユーザーに対してアクセス制御できるか確認してみます。
まず、許可するグループをDomain Adminsのみにした場合の挙動を確認します。
AD DCでドメインのAdministratorでログインして、CIFSファイル共有をZドライブにマウントします。
# ドメインのAdministratorであることを確認
> whoami
corp\administrator
# ドメインに参加していることを確認
> Get-WMIObject Win32_ComputerSystem
Domain : corp.non-97.net
Manufacturer : Amazon EC2
Model : t3.micro
Name : EC2AMAZ-75JBQCK
PrimaryOwnerName : EC2
TotalPhysicalMemory : 1043886080
# ZドライブにCIFSファイル共有をマウント
> net use Z: \\SVM1.corp.non-97.net\cifs-share
The command completed successfully.
次にCIFSファイル共有にDomain Adminsへのフルコントロールを与えます。
# 現在のNTFS ACLの確認
> Get-Acl Z:\ | Format-Table -AutoSize -Wrap
Directory:
Path Owner Access
---- ----- ------
Z:\ BUILTIN\Administrators Everyone Allow FullControl
Everyone Allow 268435456
# CIFSファイル共有の現在のNTFS ACLを取得
> $folder_path = "Z:\"
> $acl = Get-acl $folder_path
# 許可したいグループもしくはユーザーの名前
> $group_or_user_name = "CORP\Domain Admins"
# フルコントロールを許可
> $permission = ($group_or_user_name, "FullControl", "ContainerInherit" ,"None" ,"Allow")
# ACEの作成
> $access_rule = New-Object System.Security.AccessControl.FileSystemAccessRule $permission
# ACEをNTFS ACLに設定
> $acl.SetAccessRule($access_rule)
# NTFS ACLの適用
> $acl | Set-Acl $folder_path
# 現在のNTFS ACLを確認
> Get-acl $folder_path | Format-Table -AutoSize -Wrap
Directory:
Path Owner Access
---- ----- ------
Z:\ BUILTIN\Administrators Everyone Allow FullControl
Everyone Allow 268435456
CORP\Domain Admins Allow FullControl
確かにDomain Adminsのフルコントロールの許可が追加されました。
次に、Everyoneに対しての許可を削除します。
# 現在のNTFS ACLを取得
> $acl = Get-acl $folder_path
# 削除するACEを取得
> $remove_rule = $acl.Access | Where-Object { $_.IdentityReference -eq 'Everyone' }
# ACEの削除
> $remove_rule |
ForEach-Object {
$acl.RemoveAccessRule($_)
}
# NTFS ACLの適用
> $acl | Set-Acl $folder_path
# 現在のNTFS ACLを確認
> Get-acl $folder_path | Format-Table -AutoSize -Wrap
Directory:
Path Owner Access
---- ----- ------
Z:\ BUILTIN\Administrators CORP\Domain Admins Allow FullControl
Domain Adminsへのフルコントロールの許可のみになりました。
この状態で、CIFSのローカルユーザーでCIFSファイル共有をマウントしているZドライブ配下を表示してみます。
> ls Z:\
ls : Access to the path 'Z:\' is denied.
At line:1 char:1
+ ls Z:\
+ ~~~~~~
+ CategoryInfo : PermissionDenied: (Z:\:String) [Get-ChildItem], UnauthorizedAccessException
+ FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand
PermissionDenied
としっかり怒られましたね。NTFS ACLが正しく動作していることが分かります。
CIFSのローカルユーザーへの読み取りと実行権限をNTFS ACLに設定
次にCIFSのローカルユーザーへの読み取りと実行権限をNTFS ACLに設定した時の動作を確認します。
エクスプローラーからCIFSファイル共有をマウントしているZドライブ上でプロパティを開き、NTFS ACLの設定をします。
ロケーションをCIFSサーバーにしてCIFSのローカルユーザー名を入力しCheck Names
をクリックすると、作成したCIFSのローカルユーザーが選択できました。
読み取りと実行権限を設定します。
設定後、PowerShellからもNTFS ACLを確認してみます。
> Get-acl $folder_path | Format-Table -AutoSize -Wrap
Directory:
Path Owner Access
---- ----- ------
Z:\ BUILTIN\Administrators S-1-5-21-2765139605-3334426874-4031651164-1000 Allow ReadAndExecute, Synchronize
CORP\Domain Admins Allow FullControl
CIFSのローカルユーザーであろうSIDに対して、読み取りと実行権限が許可されていますね。
この状態で、CIFSのローカルユーザーでCIFSファイル共有をマウントしているZドライブ配下で読み書きしてみます。
# Zドライブ配下の読み込み
> ls Z:\
Directory: Z:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----l 11/17/2022 3:09 AM vol3
# Zドライブ配下の書き込み
> echo test > Z:\test.text
out-file : Access to the path 'Z:\test.text' is denied.
At line:1 char:1
+ echo test > Z:\test.text
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (:) [Out-File], UnauthorizedAccessException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand
NTFS ACLで定義した通り、読み込みはできて書き込みは拒否されました。
CIFSのローカルユーザーへのフルコントロールをNTFS ACLに設定
最後に、CIFSのローカルユーザーへのフルコントロールをNTFS ACLに設定した際の挙動を確認します。
先ほどと同様にエクスプローラーからCIFSのローカルユーザーへのフルコントロールをNTFS ACLに設定します。
設定後、PowerShellからNTFS ACLを確認します。
> Get-acl $folder_path | Format-Table -AutoSize -Wrap
Directory:
Path Owner Access
---- ----- ------
Z:\ BUILTIN\Administrators S-1-5-21-2765139605-3334426874-4031651164-1000 Allow FullControl
CORP\Domain Admins Allow FullControl
CIFSのローカルユーザーへのフルコントロールが許可されたことが分かります。
この状態で、CIFSのローカルユーザーでCIFSファイル共有をマウントしているZドライブ配下で読み書きしてみます。
# Zドライブ配下の書き込み
> echo test > Z:\test.text
# 書き込みできたか確認
> ls Z:\
Directory: Z:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----l 11/17/2022 3:09 AM vol3
-a---- 11/17/2022 8:51 AM 14 test.text
書き込みできましたね。
ローカルユーザーに対して権限を割り当てさえすればアクセスできる
FSx for ONTAPのCIFSサーバーがドメイン参加している状態でもローカルユーザーで認証できることを確認しました。
逆に言えば、NTFS ACLやCIFSファイル共有の権限でしっかりと絞ってあげなければ、思わぬ抜け穴になりそうです。(Everyoneで運用することはないと思いますが)
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!