Amazon FSx for NetApp ONTAPのファイルアクセスの監査ログを確認してみた
誰がどんなファイルに対してどんな操作をしたのか確認したいな
こんにちは、のんピ(@non____97)です。
皆さんは「Amazon FSx for NetApp ONTAP(以降FSx for ONTAP)で誰がどんなファイルに対してどんな操作をしたのか確認したいな」したいなと思ったことはありますか? 私はあります。
以下記事では、FSx for ONTAPの管理アクティビティの監査ログを確認する方法を紹介しました。
こちらはFSx for ONTAPに対してONTAP CLIやONTAP REST APIの操作を記録する監査ログであり、SMBやNFSでファイルに対してアクセスする際の監査ログとは別です。
FSx for ONTAPではファイルアクセス時の監査ログも取得することが可能です。
AWS公式ドキュメントでも監査ログの出力方法が紹介されています。
実際に設定してみたので紹介します。
いきなりまとめ
- FSx for ONTAPのファイルアクセス監査ログを出力までには以下の3つのステップを踏む必要がある
- 監査ログの設定作成
- 監査ログの有効化
- 監査対象としたいフォルダにSACLを設定
- 監査ログはEVTX形式とXML形式で出力可能
- SMB、NFSどちらのプロトコルも出力可能
- NTFSのSACLやDACLはONTAP CLIからも設定可能
- ONTAP CLIでNTFSのSACLとDACLを設定する手順は以下の通り
- セキュリティ記述子の作成
- SACLのACEをセキュリティ記述子に追加
- ファイルセキュリティポリシーの作成
- ファイルセキュリティポリシーへのセキュリティ記述子の追加
- ファイルセキュリティポリシーの適用
- ONTAP CLIでセキュリティ記述子を作成すると自動でDACLも作成される
- 2022/12/7時点でファイルアクセス監査ログをCloudWatch LogsやS3バケット、syslogサーバーなど外部転送することはできない
ファイルアクセスの監査ログの仕様の確認
ファイルアクセスの監査ログは、定義した監査ポリシーに基づいて、ファイルやディレクトリに対するアクセスを記録する機能です。
監査ログはSVMごとに設定し、任意のパスにEVTX形式もしくはXML形式のログファイルを出力することが可能です。EVTX形式の場合はWindowsのイベントビューワーで確認できます。
FSx for ONTAP(というよりもONTAP)では監査ログを出力する際、以下のようなプロセスで行われます。
- 各ノードでステージングファイルと呼ばれる中間バイナリファイルをアグリゲート内のステージングボリュームに出力
- 統合タスクと呼ばれる監査が有効になっている場合に作成されるタスクにより、SVMのメンバーノード全体のステージングファイルから監査レコードを取得する
- 監査レコードを時間順にマージして、ステージングファイルを定期的に監査ログ設定に基づきEVTX形式もしくはXML形式へ変換し、各SVMの監査イベントログのパスに出力する
ステージングボリュームはスONTAPによって作成されるステージングファイルを保存するための専用ボリュームです。ステージングボリュームはの名前はMDV_AUD_
から始まります。FSx for ONTAPの場合、fsxadminであってもステージングボリュームの存在を確認することはできませんでした。
FsxId0d06610c40e394b77::> volume show *MDV* There are no entries matching your query.
ファイルアクセスの監査の基本的な概念については以下NetApp公式ドキュメントにまとまっています。
ファイルアクセスの監査はSMB、NFSどちらも行えます。FSx for ONTAPで監査ログの設定を行い、各プロトコルごとにSACL、監査ACEを設定します。
それぞれ記録できるイベントは以下の通りです。
SMB
Event ID (EVT/EVTX) | Event | Description | Category |
---|---|---|---|
4670 | オブジェクト権限が変更 | OBJECT ACCESS: 権限が変更された | File Access |
4907 | オブジェクトの監査設定が変更 | OBJECT ACCESS: 監査設定が変更された | File Access |
4913 | オブジェクトの集約型アクセスポリシーが変更 | OBJECT ACCESS: CAP が変更された | File Access |
540/4624 | アカウントがログオンに成功 | LOGON/LOGOFF: ネットワーク(SMB)ログオン | Logon and Logoff |
529/4625 | アカウントがログオンに失敗 | LOGON/LOGOFF: ユーザ名が不明またはパスワードが無効 | Logon and Logoff |
530/4625 | アカウントがログオンに失敗 | LOGON/LOGOFF: アカウントログオンの時間制限 | Logon and Logoff |
531/4625 | アカウントがログオンに失敗 | LOGON/LOGOFF: アカウントは現在無効 | Logon and Logoff |
532/4625 | アカウントがログオンに失敗 | LOGON/LOGOFF: ユーザアカウントの有効期限切れ | Logon and Logoff |
533/4625 | アカウントがログオンに失敗 | LOGON/LOGOFF: ユーザはこのコンピュータにログオンできない | Logon and Logoff |
534/4625 | アカウントがログオンに失敗 | LOGON/LOGOFF: ユーザはログオンを許可されていない | Logon and Logoff |
535/4625 | アカウントがログオンに失敗 | LOGON/LOGOFF: ユーザのパスワードが期限切れ | Logon and Logoff |
537/4625 | アカウントがログオンに失敗 | LOGON/LOGOFF: 上記以外の理由でログオンが失敗 | Logon and Logoff |
539/4625 | アカウントがログオンに失敗 | LOGON/LOGOFF: アカウントのロックアウト | Logon and Logoff |
538/4634 | アカウントがログオフ | LOGON/LOGOFF: ローカルまたはネットワークユーザのログオフ | Logon and Logoff |
560/4656 | オブジェクトを開く / オブジェクトを作成 | OBJECT ACCESS: オブジェクト(ファイルまたはディレクトリ)のオープン | File Access |
563/4659 | 削除のためにオブジェクトを開く | OBJECT ACCESS: 削除するためにオブジェクト(ファイルまたはディレクトリ)へのハンドル要求 | File Access |
564/4660 | オブジェクトの削除 | OBJECT ACCESS: オブジェクト(ファイルまたはディレクトリ)の削除 | File Access |
567/4663 | オブジェクトの読み取り / オブジェクトの書き込み / オブジェクトの属性の取得 / オブジェクトの属性の設定 | OBJECT ACCESS: オブジェクトへのアクセスを試行(読み取り、書き込み、属性の取得、属性の設定)
Note: ONTAP はオブジェクトに対する最初の SMB 読み取りおよび最初の SMB 書き込みオペレーション (成功または失敗) のみを監査 |
File Access |
NA/4664 | ハードリンク | OBJECT ACCESS: ハードリンクの作成を試行 | File Access |
NA/4818 | 提案された集約型アクセスポリシーでは、現在の集約型アクセスポリシーと同じアクセス権限が付与されません | OBJECT ACCESS: 集約型アクセスポリシーのステージング | File Access |
NA/NA Data ONTAP Event ID 9999 | オブジェクト名を変更 | OBJECT ACCESS: オブジェクトの名前変更 これは ONTAP イベントです。Windows では現在、単一イベントとしてサポートされていません。 |
File Access |
NA/NA Data ONTAP Event ID 9998 | オブジェクトのリンク解除 | OBJECT ACCESS: オブジェクトのリンクが解除 これは ONTAP イベントです。Windows では現在、単一イベントとしてサポートされていません。 |
File Access |
抜粋 : SMB events that can be audited overview
NFS
- READ
- OPEN
- CLOSE
- READDIR
- WRITE
- SETATTR
- CREATE
- LINK
- OPENATTR
- REMOVE
- GETATTR
- VERIFY
- NVERIFY
- RENAME
抜粋 : NFS file and directory access events that can be audited
ファイルアクセスの監査を行うためにはいくつか前提条件と考慮事項があります。
- 監査を有効にするSVMは、クラスタ内で最大50個まで
- NFSの監査では、監査ACE(タイプU)をサポート
- NFSの監査では、モードビットと監査ACEの間のマッピングはされない
- ACLをモードビットに変換する場合、監査ACEはスキップされる
- モードビットをACLに変換する場合、監査ACEは生成されない
- 監査ログの設定でログ出力先のパスが存在している必要
- 監査ログの設定でログ出力先のパスにシンボリックリンクが含まれていない
- シンボリックリンクが含まれている場合は、監査ログの設定に失敗
- 監査ログファイルを格納する新しいボリュームまたは qtree を作成することを推奨
- ステージングボリューム内に空き容量がある必要がある
- ただし、FSx for ONTAP上でステージングボリューム内の空き容量があるか確認する術がない
- デフォルトではステージングボリュームに保存できない場合は、クライアント処理は拒否される
- 監査ログの出力先のパスのボリュームに利用可能なスペースがある必要がある
- サイズ、時間でローテーションすることでボリュームの空き容量を確保する
- 集約型アクセス ポリシーのステージングイベントを生成するには、ダイナミックアクセス制御を有効にする必要がある
- ダイナミックアクセス制御はデフォルトでは有効になっていない
これら前提条件と考慮事項は以下ドキュメントに記載があります。
検証環境
それでは実際に監査ログを試してみましょう。検証環境は以下の通りです。
今回はSMBで接続できるボリュームに対して監査ログを設定を行います。監査ログはFSx for ONTAPのSVM上の/audit
に出力します。
AD DCについては以下記事の検証で使用したものを流用します。
今回の検証で使用したFSx for ONTAPファイルシステムとSVM、ボリュームは以下の通りです。
# FSx for ONTAPファイルシステム $ aws fsx describe-file-systems { "FileSystems": [ { "OwnerId": "<AWSアカウントID>", "CreationTime": "2022-12-06T04:38:29.897000+00:00", "FileSystemId": "fs-0d06610c40e394b77", "FileSystemType": "ONTAP", "Lifecycle": "AVAILABLE", "StorageCapacity": 1024, "StorageType": "SSD", "VpcId": "vpc-08b84da1f793ed513", "SubnetIds": [ "subnet-08dc789896a48a3b4" ], "NetworkInterfaceIds": [ "eni-043ad15d230cec2bf", "eni-0a32d2b4c975817ca" ], "KmsKeyId": "arn:aws:kms:us-east-1:<AWSアカウントID>:key/365ae19c-8016-4963-9afd-05f703509254", "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:file-system/fs-0d06610c40e394b77", "Tags": [ { "Key": "aws:cloudformation:stack-name", "Value": "FsxnStack" }, { "Key": "aws:cloudformation:logical-id", "Value": "FSxforONTAPfilesystem" }, { "Key": "aws:cloudformation:stack-id", "Value": "arn:aws:cloudformation:us-east-1:<AWSアカウントID>:stack/FsxnStack/78cdb890-5423-11ed-81fb-0eac30df53d1" }, { "Key": "Name", "Value": "fsx-for-ontap-file-system" } ], "OntapConfiguration": { "AutomaticBackupRetentionDays": 7, "DailyAutomaticBackupStartTime": "16:00", "DeploymentType": "SINGLE_AZ_1", "Endpoints": { "Intercluster": { "DNSName": "intercluster.fs-0d06610c40e394b77.fsx.us-east-1.amazonaws.com", "IpAddresses": [ "10.0.1.72", "10.0.1.120" ] }, "Management": { "DNSName": "management.fs-0d06610c40e394b77.fsx.us-east-1.amazonaws.com", "IpAddresses": [ "10.0.1.126" ] } }, "DiskIopsConfiguration": { "Mode": "AUTOMATIC", "Iops": 3072 }, "PreferredSubnetId": "subnet-08dc789896a48a3b4", "ThroughputCapacity": 128, "WeeklyMaintenanceStartTime": "6:17:00" } } ] } # SVM $ aws fsx describe-storage-virtual-machines { "StorageVirtualMachines": [ { "ActiveDirectoryConfiguration": { "NetBiosName": "SVM", "SelfManagedActiveDirectoryConfiguration": { "DomainName": "CORP.NON-97.NET", "OrganizationalUnitDistinguishedName": "OU=FSxForONTAP,DC=corp,DC=non-97,DC=net", "UserName": "FSxServiceAccount", "DnsIps": [ "10.0.1.10" ] } }, "CreationTime": "2022-12-06T05:11:58.096000+00:00", "Endpoints": { "Iscsi": { "DNSName": "iscsi.svm-0e78a70efae897e88.fs-0d06610c40e394b77.fsx.us-east-1.amazonaws.com", "IpAddresses": [ "10.0.1.87", "10.0.1.125" ] }, "Management": { "DNSName": "svm-0e78a70efae897e88.fs-0d06610c40e394b77.fsx.us-east-1.amazonaws.com", "IpAddresses": [ "10.0.1.69" ] }, "Nfs": { "DNSName": "svm-0e78a70efae897e88.fs-0d06610c40e394b77.fsx.us-east-1.amazonaws.com", "IpAddresses": [ "10.0.1.69" ] }, "Smb": { "DNSName": "SVM.CORP.NON-97.NET", "IpAddresses": [ "10.0.1.69" ] } }, "FileSystemId": "fs-0d06610c40e394b77", "Lifecycle": "CREATED", "Name": "SVM", "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:storage-virtual-machine/fs-0d06610c40e394b77/svm-0e78a70efae897e88", "StorageVirtualMachineId": "svm-0e78a70efae897e88", "Subtype": "DEFAULT", "UUID": "88c8c530-7524-11ed-8602-49ce53d235e7" } ] } # ボリューム $ aws fsx describe-volumes { "Volumes": [ { "CreationTime": "2022-12-06T05:12:16+00:00", "FileSystemId": "fs-0d06610c40e394b77", "Lifecycle": "CREATED", "Name": "SVM_root", "OntapConfiguration": { "FlexCacheEndpointType": "NONE", "JunctionPath": "/", "SecurityStyle": "NTFS", "SizeInMegabytes": 1024, "StorageEfficiencyEnabled": false, "StorageVirtualMachineId": "svm-0e78a70efae897e88", "StorageVirtualMachineRoot": true, "TieringPolicy": { "Name": "NONE" }, "UUID": "8ce2dc5c-7524-11ed-8602-49ce53d235e7", "OntapVolumeType": "RW" }, "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:volume/fs-0d06610c40e394b77/fsvol-031bf84dd9112fd69", "VolumeId": "fsvol-031bf84dd9112fd69", "VolumeType": "ONTAP" }, { "CreationTime": "2022-12-06T05:15:21.177000+00:00", "FileSystemId": "fs-0d06610c40e394b77", "Lifecycle": "CREATED", "Name": "audit", "OntapConfiguration": { "FlexCacheEndpointType": "NONE", "JunctionPath": "/audit", "SecurityStyle": "NTFS", "SizeInMegabytes": 1024, "StorageEfficiencyEnabled": true, "StorageVirtualMachineId": "svm-0e78a70efae897e88", "StorageVirtualMachineRoot": false, "TieringPolicy": { "Name": "NONE" }, "UUID": "0285ac65-7525-11ed-8602-49ce53d235e7", "OntapVolumeType": "RW" }, "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:volume/fs-0d06610c40e394b77/fsvol-00fb63a268bb56d8d", "VolumeId": "fsvol-00fb63a268bb56d8d", "VolumeType": "ONTAP" }, { "CreationTime": "2022-12-06T05:15:45.169000+00:00", "FileSystemId": "fs-0d06610c40e394b77", "Lifecycle": "CREATED", "Name": "ntfs", "OntapConfiguration": { "FlexCacheEndpointType": "NONE", "JunctionPath": "/ntfs", "SecurityStyle": "NTFS", "SizeInMegabytes": 1024, "StorageEfficiencyEnabled": true, "StorageVirtualMachineId": "svm-0e78a70efae897e88", "StorageVirtualMachineRoot": false, "TieringPolicy": { "Name": "NONE" }, "UUID": "0ec615e2-7525-11ed-8602-49ce53d235e7", "OntapVolumeType": "RW" }, "ResourceARN": "arn:aws:fsx:us-east-1:<AWSアカウントID>:volume/fs-0d06610c40e394b77/fsvol-0f132f250545b1e17", "VolumeId": "fsvol-0f132f250545b1e17", "VolumeType": "ONTAP" } ] }
ファイルアクセスの監査ログの設定
監査ログの設定作成
ファイルアクセスの監査ログの設定を行います。ファイルアクセスの監査ログの設定は以下の3ステップで行います。
- 監査ログの設定作成
- 監査ログの有効化
- 監査対象としたいフォルダにSACLを設定
まず、監査ログの設定を作成します。こちらの設定はONTAP CLIで行います。
SSHでFSx for ONTAPファイルシステムに接続します。
> ssh fsxadmin@management.fs-0d06610c40e394b77.fsx.us-east-1.amazonaws.com FsxId0d06610c40e394b77::>
事前に用意した監査ログ用のボリュームaudit
が/audit
にマウントされていることを確認します。
FsxId0d06610c40e394b77::> volume show -fields junction-path, security-style vserver volume security-style junction-path ------- -------- -------------- ------------- SVM SVM_root ntfs / SVM audit ntfs /audit SVM ntfs ntfs /ntfs
監査ログの設定はvserver audit createで行います。
イベントログのフォーマットはEVTX形式で、毎日6:00にローテーションを行い365世代保持するよう設定します。
# 監査ログ設定がないことを確認 FsxId0d06610c40e394b77::> vserver audit show This table is currently empty. # 監査ログ設定の作成 FsxId0d06610c40e394b77::> vserver audit create -vserver SVM -destination /audit -format evtx -rotate-schedule-hour 6 -rotate-schedule-minute 0 -rotate-limit 365 # 監査ログ設定が作成されたことを確認 FsxId0d06610c40e394b77::> vserver audit show Vserver State Event Types Log Format Target Directory ----------- ------ ------------------ ---------- ---------------------------- SVM false file-ops, evtx /audit cifs-logon-logoff, audit-policy- change # 作成された監査ログを確認 FsxId0d06610c40e394b77::> vserver audit show -instance Vserver: SVM Auditing State: false Log Destination Path: /audit Categories of Events to Audit: file-ops, cifs-logon-logoff, audit-policy-change Log Format: evtx Log File Size Limit: - Log Rotation Schedule: Month: - Log Rotation Schedule: Day of Week: - Log Rotation Schedule: Day: - Log Rotation Schedule: Hour: 6 Log Rotation Schedule: Minute: 0 Rotation Schedules: @6:00 Log Files Rotation Limit: 365 Log Retention Duration: 0s Strict Guarantee of Auditing: true
監査対象のイベントのカテゴリ(Categories of Events to Audit
)で3つ指定されていますね。こちらのパラメーターで指定できるものは以下の通りです。
- file-ops
- ファイルアクセスイベント (SMBとNFSの両方)
- cifs-logon-logoff
- SMBのログオンおよびログオフのイベント
- cap-staging
- 中央アクセス ポリシー (CAP) ステージングイベント
- file-share
- ファイル共有の設定変更イベント
- 詳細 : ファイル共有イベントの管理
- audit-policy-change
- 監査ポリシー変更イベント
- 詳細 : 監査ポリシー変更イベントの管理
- user-account
- ローカルユーザーアカウント管理イベント
- 詳細 : ユーザアカウントイベントを管理します
- security-group
- ローカルセキュリティグループ管理イベント
- 詳細 : セキュリティグループイベントの管理
- authorization-policy-change
- 認可ポリシー変更イベント
- 詳細 : 認証ポリシー変更イベントを管理します
今回はログローテーションを日時で行っていますが、-rotate-size
を指定することで監査ログのサイズでローテーションすることも可能です。監査ログでボリュームを圧迫しないように、サイズを指定するのが無難でしょう。
ログローテーションの世代数を管理する-rotate-limit
で0
を指定すると、ログのローテーション世代数が無制限になります。
また、デフォルトではStrict Guarantee of Auditing
がtrue
になっています。このパラメーターがtrue
である場合は監査レコードを生成できない場合、ファイルアクセスは拒否されます。このパラメーターがfalse
である場合は監査はベストエフォート行われます。もし、「権限的にはアクセスできるはずなのにアクセスできない」となった場合は、こちらの設定を確認すると良いでしょう。
その他、詳細な説明は以下NetApp公式ドキュメントに記載があります。
監査ログの有効化
次に監査ログの有効化を行います。現時点では監査ログの設定を作成しただけで、有効にはなっていません。
監査ログを有効化する際は、vserver audit enableで行います。
# 監査ログの有効化 FsxId0d06610c40e394b77::> vserver audit enable -vserver SVM # 監査ログが有効化されたか確認 FsxId0d06610c40e394b77::> vserver audit show Vserver State Event Types Log Format Target Directory ----------- ------ ------------------ ---------- ---------------------------- SVM true file-ops, evtx /audit cifs-logon-logoff, audit-policy- change
State
がtrue
になりましたね。
監査ログを無効化する場合はvserver audit disableで行います。
監査対象としたいフォルダにSACLを設定
次に監査対象としたいフォルダにSACLを設定します。
NTFSの監査ポリシーを設定する際は以下の2通りの方法があります。
- 対象のフォルダをマウントし、NTFS SACLを設定
- ONTAP CLIを使用し、対象フォルダにNTFS SACLを設定
それぞれの設定方法は以下NetApp公式ドキュメントに記載されています。
今回は1つ目の方法でSACLを設定します。
監査対象は/ntfs
とします。
マウントする必要があるので、パスを/ntfs
としたファイル共有を作成します。
# ファイル共有の作成 FsxId0d06610c40e394b77::> cifs share create -share-name ntfs -path /ntfs # ファイル共有が作成されたことを確認 FsxId0d06610c40e394b77::> cifs share show Vserver Share Path Properties Comment ACL -------------- ------------- ----------------- ---------- -------- ----------- SVM c$ / oplocks - BUILTIN\Administrators / Full Control browsable changenotify show-previous-versions SVM ipc$ / browsable - - SVM ntfs /ntfs oplocks - Everyone / Full Control browsable changenotify show-previous-versions 3 entries were displayed.
作成したファイル共有をAD DCのZドライブにマウントします。
> net use Z: \\SVM.CORP.NON-97.NET\ntfs The command completed successfully.
マウント後、エクスプローラーを起動しZドライブ上で右クリックし、プロパティのセキュリティからSACLを設定します。今回はEveryoneの成功/失敗関わらず全ての操作を記録するように設定します。
設定したACEが追加されたことを確認しApply
で適用します。
ファイルアクセスの監査ログの確認
SACL設定後、Zドライブ上でフォルダの作成や名前の変更、フォルダの削除を行いました。
監査ログが出力されているか確認しましょう。
監査ログは/audit
に出力するように設定しています。/audit
にアクセスできるようにファイル共有を作成します。
# 監査ログ出力先のファイル共有作成 FsxId0d06610c40e394b77::> cifs share create -share-name audit -path /audit # 監査ログ出力先のファイル共有が作成されたことを確認 FsxId0d06610c40e394b77::> cifs share show Vserver Share Path Properties Comment ACL -------------- ------------- ----------------- ---------- -------- ----------- SVM audit /audit oplocks - Everyone / Full Control browsable changenotify show-previous-versions SVM c$ / oplocks - BUILTIN\Administrators / Full Control browsable changenotify show-previous-versions SVM ipc$ / browsable - - SVM ntfs /ntfs oplocks - Everyone / Full Control browsable changenotify show-previous-versions 4 entries were displayed.
ファイル共有が作成されたら、こちらのファイル共有をAD DCのYドライブにマウントします。マウント後、監査ログが出力されているか確認します。
# 監査ログ出力先のファイル共有をYドライブにマウント > net use Y: \\SVM.CORP.NON-97.NET\audit The command completed successfully. # 監査ログが出力されていることを確認 > ls Y: Directory: Y:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 12/5/2022 7:58 PM 135168 audit_SVM_last.evtx
監査ログが出力されていますね。
Windowsのイベントビューワーで開くと以下のようなイベントが記録されていました。(イベントビューワーのスクリーンショットを撮るのを忘れていました...)
The description for Event ID 4660 from source NetApp-Security-Auditing cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer. If the event originated on another computer, the display information had to be saved with the event. The following information was included with the event: 10.0.1.10 EV_RenderedValue_2.00 false CORP Administrator Security Directory 00000000000403;00;00000060;00047b5e (ntfs);/test Delete on last close; The message resource is present but the message was not found in the message table
10.0.1.10
から接続してきたCORP\Administrator
というユーザー/test
というファイルを削除したのが分かりますね。
こちらのイベントのXMLを確認すると以下のようになっていました。
- <Event xmlns="http://schemas.netapp.com/events/event"> - <System> <Provider Name="NetApp-Security-Auditing" Guid="{3CB2A168-FE19-4A4E-BDAD-DCF422F13473}" /> <EventID>4660</EventID> <EventName>Delete Object Attempt</EventName> <Version>101.3</Version> <Source>CIFS</Source> <Level>0</Level> <Opcode>0</Opcode> <Keywords>0x8020000000000000</Keywords> <Result>Audit Success</Result> <TimeCreated SystemTime="2022-12-06T05:56:47.2292190Z" /> <Correlation /> <Channel>Security</Channel> <Computer>FsxId0d06610c40e394b77/SVM</Computer> <ComputerUUID>4750371e-751e-11ed-8602-49ce53d235e7/88c8c530-7524-11ed-8602-49ce53d235e7</ComputerUUID> <Security /> </System> - <EventData> <Data Name="SubjectIP" IPVersion="4">10.0.1.10</Data> <Data Name="SubjectHostname" Source="" /> <Data Name="SubjectUnix" Uid="0" Gid="1" Local="false" /> <Data Name="SubjectUserSid">S-1-5-21-38571244-2121234638-1230449559-500</Data> <Data Name="SubjectUserIsLocal">false</Data> <Data Name="SubjectDomainName">CORP</Data> <Data Name="SubjectUserName">Administrator</Data> <Data Name="ObjectServer">Security</Data> <Data Name="ObjectType">Directory</Data> <Data Name="HandleID">00000000000403;00;00000060;00047b5e</Data> <Data Name="ObjectName">(ntfs);/test</Data> <Data Name="InformationSet">Delete on last close;</Data> </EventData> </Event>
また、少し待つとUTC 6:00を過ぎたので監査ログがローテーションされていました。
> ls Y: Directory: Y:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 12/5/2022 7:59 PM 135168 audit_SVM_D2022-12-06-T06-00-03_0000000000.evtx -a---- 12/5/2022 8:02 PM 69632 audit_SVM_last.evtx
監査ログの手動ローテーション
次に手動で監査ログをローテーションさせます。
監査ログの手動ローテーションはvserver audit rotate-logで行います。
FsxId0d06610c40e394b77::> vserver audit rotate-log
監査ログがローテーションされたか確認します。
> ls Y: Directory: Y:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 12/5/2022 7:59 PM 135168 audit_SVM_D2022-12-06-T06-00-03_0000000000.evtx -a---- 12/5/2022 10:01 PM 69632 audit_SVM_D2022-12-06-T08-02-02_0000000000.evtx -a---- 12/5/2022 10:08 PM 69632 audit_SVM_last.evtx
ローテーションされましたね。
次にローテーションされた監査ログの保持世代数を6から2に変更して、手動で2回ローテーションします。
# ローテーションされた監査ログの保持世代数を2に変更 FsxId0d06610c40e394b77::> vserver audit modify -vserver SVM -rotate-limit 2 # ローテーションされた監査ログの保持世代数が2に変更されたことを確認 FsxId0d06610c40e394b77::> vserver audit show -instance Vserver: SVM Auditing State: true Log Destination Path: /audit Categories of Events to Audit: file-ops, cifs-logon-logoff, audit-policy-change Log Format: evtx Log File Size Limit: - Log Rotation Schedule: Month: - Log Rotation Schedule: Day of Week: - Log Rotation Schedule: Day: - Log Rotation Schedule: Hour: 6 Log Rotation Schedule: Minute: 0 Rotation Schedules: @6:00 Log Files Rotation Limit: 2 Log Retention Duration: 0s Strict Guarantee of Auditing: true # 監査ログをローテーション FsxId0d06610c40e394b77::> vserver audit rotate-log FsxId0d06610c40e394b77::> vserver audit rotate-log
監査ログを確認します。
> ls Y: Directory: Y:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 12/5/2022 10:08 PM 69632 audit_SVM_D2022-12-06-T08-14-26_0000000000.evtx -a---- 12/5/2022 10:16 PM 69632 audit_SVM_D2022-12-06-T08-18-27_0000000000.evtx -a---- 12/5/2022 10:18 PM 69632 audit_SVM_last.evtx
確かにローテーションされた監査ログの保持世代数が2になっていますね。
ONTAP CLIでSACLを設定する
現在のSACLの削除
せっかくなので、ONTAP CLIでもSACLを設定してみます。
ONTAP CLIでSACLを設定する手順は以下の通りです。
- セキュリティ記述子の作成
- SACLのACEをセキュリティ記述子に追加
- ファイルセキュリティポリシーの作成
- ファイルセキュリティポリシーへのセキュリティ記述子の追加
- ファイルセキュリティポリシーの適用
各手順は以下NetApp公式ドキュメントにも記載されています。
まず、現在設定しているSACLを削除します。エクスプローラーから以下のようにSACLのACEを削除しました。
監査ログの設定を変更
次に監査ログの設定を変更します。特にONTAP CLIでSACLを設定するにあたって設定変更は必要ないですが、なんとなく変更します。
現在はEVTX形式でログ出力するようにしているのでXML形式に変更します。また、ローテーションも10分ごとに最大6世代保持するよう設定します。
# 監査ログの設定変更 FsxId0d06610c40e394b77::> vserver audit modify -format xml -rotate-schedule-hour - -rotate-schedule-minute 0,10,20,30,40,50 -rotate-limit 6 # 監査ログが設定されたことを確認 FsxId0d06610c40e394b77::> vserver audit show -instance Vserver: SVM Auditing State: true Log Destination Path: /audit Categories of Events to Audit: file-ops, cifs-logon-logoff, audit-policy-change Log Format: xml Log File Size Limit: - Log Rotation Schedule: Month: - Log Rotation Schedule: Day of Week: - Log Rotation Schedule: Day: - Log Rotation Schedule: Hour: - Log Rotation Schedule: Minute: 0, 10, 20, 30, 40, 50 Rotation Schedules: @:00,:10,:20,:30,:40,:50 Log Files Rotation Limit: 6 Log Retention Duration: 0s Strict Guarantee of Auditing: true
セキュリティ記述子の作成
次にセキュリティ記述子を作成します。セキュリティ記述子自体の説明は以下NetApp公式ドキュメントをご覧ください。要するにSACLやDACL、権限の継承などセキュリティ情報を定義したデータです。
セキュリティ記述子の作成はvserver security file-directory ntfs createで行います。
# セキュリティ記述子がないことを確認 FsxId0d06610c40e394b77::> vserver security file-directory ntfs show This table is currently empty. # DACLがないことを確認 FsxId0d06610c40e394b77::> vserver security file-directory ntfs dacl show This table is currently empty. # SACLがないことを確認 FsxId0d06610c40e394b77::> vserver security file-directory ntfs sacl show This table is currently empty. # BUILTIN\Administrators 内のユーザー、グループの確認 FsxId0d06610c40e394b77::> cifs users-and-groups local-group show-members Vserver Group Name Members -------------- ---------------------------- ------------------------ SVM BUILTIN\Administrators SVM\Administrator CORP\Domain Admins CORP\FSxAdminGroup BUILTIN\Guests CORP\Domain Guests BUILTIN\Users CORP\Domain Users 3 entries were displayed. # security-descriptor という名前で、所有者が BUILTIN\Administrators のセキュリティ記述子を作成 FsxId0d06610c40e394b77::> vserver security file-directory ntfs create -ntfs-sd security-descriptor -vserver SVM -owner BUILTIN\Administrators # セキュリティ記述子が作成されたことを確認 FsxId0d06610c40e394b77::> vserver security file-directory ntfs show Vserver: SVM NTFS Security Owner Name Descriptor Name ------------ -------------- security-descriptor BUILTIN\Administrators FsxId0d06610c40e394b77::> vserver security file-directory ntfs show -instance Vserver: SVM NTFS Security Descriptor Name: security-descriptor Owner: BUILTIN\Administrators # SACLのACEは自動で作成されていないことを確認 FsxId0d06610c40e394b77::> vserver security file-directory ntfs sacl show This table is currently empty. # DACLのACEは自動で作成されることを確認 FsxId0d06610c40e394b77::> vserver security file-directory ntfs dacl show Vserver: SVM NTFS Security Descriptor Name: security-descriptor Account Name Access Access Apply To Type Rights -------------- ------- ------- ----------- BUILTIN\Administrators allow full-control this-folder, sub-folders, files BUILTIN\Users allow full-control this-folder, sub-folders, files CREATOR OWNER allow full-control this-folder, sub-folders, files NT AUTHORITY\SYSTEM allow full-control this-folder, sub-folders, files 4 entries were displayed.
セキュリティ記述子を作成すると自動でDACLも作成されるようです。BUILTIN\Users
など不要なグループ、ユーザーへの許可を削除したい場合はvserver security file-directory ntfs dacl removeでDACLを削除しましょう。
SACLのACEをセキュリティ記述子に追加
SACLのACEをセキュリティ記述子に追加します。
今回はEveryoneに対して書き込み、削除系の操作を成功/失敗問わず記録するよう指定します。
SACLのACEをセキュリティ記述子に追加する際はvserver security file-directory ntfs sacl addで行います。
# SACLのACEをセキュリティ記述子に追加 (成功操作用) FsxId0d06610c40e394b77::> vserver security file-directory ntfs sacl add -vserver SVM -ntfs-sd security-descriptor -access-type failure -account Everyone -advanced-rights write-data, append-data, write-ea, execute-file, delete-child, delete, write-perm, write-owner # SACLのACEをセキュリティ記述子に追加 (成功操作用) FsxId0d06610c40e394b77::> vserver security file-directory ntfs sacl add -vserver SVM -ntfs-sd security-descriptor -access-type success -account Everyone -advanced-rights write-data, append-data, write-ea, execute-file, delete-child, delete, write-perm, write-owner # SACLのACEが作成されたことを確認 FsxId0d06610c40e394b77::> vserver security file-directory ntfs sacl show Vserver: SVM NTFS Security Descriptor Name: security-descriptor Account Name Access Access Apply To Type Rights -------------- ------- ------- ----------- Everyone failure write-data, append-data, write-ea, execute-file, delete-child, delete, write-perm, write-owner this-folder, sub-folders, files Everyone success write-data, append-data, write-ea, execute-file, delete-child, delete, write-perm, write-owner this-folder, sub-folders, files 2 entries were displayed. # 成功時のSACLのACEの詳細を確認 FsxId0d06610c40e394b77::> vserver security file-directory ntfs sacl show -instance -access-type success Vserver: SVM NTFS Security Descriptor Name: security-descriptor Success or Failure: success Account Name or SID: Everyone Access Rights: - Advanced Access Rights: write-data, append-data, write-ea, execute-file, delete-child, delete, write-perm, write-owner Apply SACL To: this-folder, sub-folders, files Access Rights: write-data, append-data, write-ea, execute-file, delete-child, delete, write-perm, write-owner
ちなみにwrite-ea
はWrite extended attributes = 拡張属性の書き込みのことです。
ファイルセキュリティポリシーの作成
次にファイルセキュリティポリシーの作成をします。
ファイルセキュリティポリシーは複数のセキュリティ記述子をまとめるリソースです。セキュリティ記述子を適用するためにはファイルセキュリティポリシーを作成する必要があります。
ファイルセキュリティポリシーの作成はvserver security file-directory policy createで行います。
# ファイルセキュリティポリシーがないことを確認 FsxId0d06610c40e394b77::> vserver security file-directory policy show This table is currently empty. # security-policy という名前のファイルセキュリティポリシーを作成 FsxId0d06610c40e394b77::> vserver security file-directory policy create -policy-name security-policy -vserver SVM # ファイルセキュリティポリシーが作成されたことを確認 FsxId0d06610c40e394b77::> vserver security file-directory policy show Vserver Policy Name ------------ -------------- SVM security-policy
ファイルセキュリティポリシーへのセキュリティ記述子の追加
次にファイルセキュリティポリシーにセキュリティ記述子を追加します。
ファイルセキュリティポリシーに追加するセキュリティ記述子はタスクとして扱われます。タスクごとにインデックスの番号を指定でき、インデックスが若いタスクから適用されます。
今回はセキュリティ記述子で定義したDACL、SACLを/
から適用します。
ファイルセキュリティポリシーへのセキュリティ記述子の追加はvserver security file-directory policy task addで行います。
# ファイルセキュリティポリシー内のタスクが存在しないことを確認 FsxId0d06610c40e394b77::> vserver security file-directory policy task show This table is currently empty. # ファイルセキュリティポリシーにセキュリティ記述子を追加 FsxId0d06610c40e394b77::> vserver security file-directory policy task add -vserver SVM -policy-name security-policy -path / -security-type ntfs -ntfs-mode propagate -ntfs-sd security-descriptor -index-num 1 -access-control file-directory # ファイルセキュリティポリシーにセキュリティ記述子が追加されたことを確認 FsxId0d06610c40e394b77::> vserver security file-directory policy task show Vserver: SVM Policy: security-policy Index File/Folder Access Security NTFS NTFS Security Path Control Type Mode Descriptor Name ----- ----------- --------------- -------- ---------- --------------- 1 / file-directory ntfs propagate security-descriptor FsxId0d06610c40e394b77::> vserver security file-directory policy task show -instance Vserver: SVM Policy Name: security-policy Position: 1 Path: / Security Type: ntfs NTFS Propagation Mode: propagate NTFS Security Descriptor Name: security-descriptor Access Control Level: file-directory
ファイルセキュリティポリシーの適用
最後にファイルセキュリティポリシーの適用を行います。
適用を行うことで、ファイルセキュリティポリシー内のタスク = セキュリティ記述子が適用されます。
ファイルセキュリティポリシーの適用はvserver security file-directory applyで行います。
# 現在の / のDACLとSACLを確認 FsxId0d06610c40e394b77::> vserver security file-directory show -vserver SVM -path / Vserver: SVM File Path: / File Inode Number: 64 Security Style: ntfs Effective Style: ntfs DOS Attributes: 10 DOS Attributes in Text: ----D--- Expanded Dos Attributes: - UNIX User Id: 0 UNIX Group Id: 0 UNIX Mode Bits: 777 UNIX Mode Bits in Text: rwxrwxrwx ACLs: NTFS Security Descriptor Control:0x8004 Owner:BUILTIN\Administrators Group:BUILTIN\Administrators DACL - ACEs ALLOW-Everyone-0x1f01ff ALLOW-Everyone-0x10000000-OI|CI|IO # ファイルセキュリティポリシーの適用 FsxId0d06610c40e394b77::> vserver security file-directory apply -vserver SVM -policy-name security-policy [Job 55] Job is queued: Fsecurity Apply. Use the "job show -id 55" command to view the status of this operation. # セキュリティ記述子で定義したDACLとSACLが / に適用されていることを確認 FsxId0d06610c40e394b77::> vserver security file-directory show -vserver SVM -path / Vserver: SVM File Path: / File Inode Number: 64 Security Style: ntfs Effective Style: ntfs DOS Attributes: 10 DOS Attributes in Text: ----D--- Expanded Dos Attributes: - UNIX User Id: 0 UNIX Group Id: 0 UNIX Mode Bits: 777 UNIX Mode Bits in Text: rwxrwxrwx ACLs: NTFS Security Descriptor Control:0x8014 Owner:BUILTIN\Administrators Group:BUILTIN\Administrators SACL - ACEs AUDIT-Everyone-0x1d0076-OI|CI|SA|FA DACL - ACEs ALLOW-BUILTIN\Administrators-0x1f01ff-OI|CI ALLOW-BUILTIN\Users-0x1f01ff-OI|CI ALLOW-CREATOR OWNER-0x1f01ff-OI|CI ALLOW-NT AUTHORITY\SYSTEM-0x1f01ff-OI|CI # セキュリティ記述子で定義したDACLとSACLが /ntfs に継承されていることを確認 FsxId0d06610c40e394b77::> vserver security file-directory show -vserver SVM -path /ntfs Vserver: SVM File Path: /ntfs File Inode Number: 64 Security Style: ntfs Effective Style: ntfs DOS Attributes: 10 DOS Attributes in Text: ----D--- Expanded Dos Attributes: - UNIX User Id: 0 UNIX Group Id: 0 UNIX Mode Bits: 777 UNIX Mode Bits in Text: rwxrwxrwx ACLs: NTFS Security Descriptor Control:0xaa14 Owner:BUILTIN\Administrators Group:BUILTIN\Administrators DACL - ACEs ALLOW-Everyone-0x1f01ff ALLOW-Everyone-0x10000000-OI|CI|IO ALLOW-BUILTIN\Administrators-0x1f01ff-OI|CI (Inherited) ALLOW-BUILTIN\Users-0x1f01ff-OI|CI (Inherited) ALLOW-CREATOR OWNER-0x1f01ff-OI|CI (Inherited) ALLOW-NT AUTHORITY\SYSTEM-0x1f01ff-OI|CI (Inherited)
セキュリティ記述子で定義したDACLとSACLが/
に適用されていることが確認できました。セキュリティ記述子で定義したDACLの追加ではなく、上書きされていますね。
なお、SACLの継承はデフォルトで無効になっているので、DACLのみサブフォルダである/ntfs
に適用されていますね。/
からの継承なのでDACLは上書きではなく追加です。
エクスプローラーでも確認してみます。/
のファイル共有であるc$
をAD DCのXドライブにマウントします。
> net use X: \\SVM.CORP.NON-97.NET\c$ The command completed successfully.
エクスプローラーからXドライブのSACLにACEが設定されていることを確認します。
ACEの詳細を確認します。意図した通りに設定されていますね。
また、サブフォルダである/ntfs
のファイル共有をマウントしているZドライブのSACLも確認します。やはりこちらは継承が無効化されているため、ACEは追加されていませんでした。
監査ログの確認
監査ログを確認します。
/
をマウントしているXドライブ、/ntfs
をマウントしているZドライブ上でフォルダを作成したり、フォルダの名前変更、フォルダの削除を行いました。
監査ログを確認すると以下のようなログが記録されていました。
<Event> <System> <Provider Name="NetApp-Security-Auditing" Guid="{3CB2A168-FE19-4A4E-BDAD-DCF422F13473}"/> <EventID>4656</EventID> <EventName>Open Object</EventName> <Version>101.3</Version> <Source>CIFS</Source> <Level>0</Level> <Opcode>0</Opcode> <Keywords>0x8020000000000000</Keywords> <Result>Audit Success</Result> <TimeCreated SystemTime="2022-12-06T09:35:01.368661000Z"/> <Correlation/> <Channel>Security</Channel> <Computer>FsxId0d06610c40e394b77/SVM</Computer> <ComputerUUID>4750371e-751e-11ed-8602-49ce53d235e7/88c8c530-7524-11ed-8602-49ce53d235e7</ComputerUUID> <Security/> </System> <EventData> <Data Name="SubjectIP" IPVersion="4">10.0.1.10</Data> <Data Name="SubjectUnix" Uid="0" Gid="1" Local="false"></Data> <Data Name="SubjectUserSid">S-1-5-21-38571244-2121234638-1230449559-500</Data> <Data Name="SubjectUserIsLocal">false</Data> <Data Name="SubjectDomainName">CORP</Data> <Data Name="SubjectUserName">Administrator</Data> <Data Name="ObjectServer">Security</Data> <Data Name="ObjectType">Directory</Data> <Data Name="HandleID">00000000000401;00;00000066;00043291</Data> <Data Name="ObjectName">(SVM_root);/New folder</Data> <Data Name="AccessList">%%4416 %%4417 %%4419 %%4420 %%4423 %%4424 %%1537 %%1538 %%1539 </Data> <Data Name="AccessMask">719b</Data> <Data Name="DesiredAccess">Read Data; List Directory; Write Data; Add File; Read Extended Attributes; Write Extended Attributes; Read Attributes; Write Attributes; Delete; Read ACL; Write ACL; </Data> <Data Name="Attributes"></Data> </EventData> </Event>
<Event> <System> <Provider Name="NetApp-Security-Auditing" Guid="{3CB2A168-FE19-4A4E-BDAD-DCF422F13473}"/> <EventID>9999</EventID> <EventName>Rename Object</EventName> <Version>101.2</Version> <Source>CIFS</Source> <Level>0</Level> <Opcode>0</Opcode> <Keywords>0x8020000000000000</Keywords> <Result>Audit Success</Result> <TimeCreated SystemTime="2022-12-06T09:35:04.008776000Z"/> <Correlation/> <Channel>Security</Channel> <Computer>FsxId0d06610c40e394b77/SVM</Computer> <ComputerUUID>4750371e-751e-11ed-8602-49ce53d235e7/88c8c530-7524-11ed-8602-49ce53d235e7</ComputerUUID> <Security/> </System> <EventData> <Data Name="SubjectIP" IPVersion="4">10.0.1.10</Data> <Data Name="SubjectUnix" Uid="0" Gid="1" Local="false"></Data> <Data Name="SubjectUserSid">S-1-5-21-38571244-2121234638-1230449559-500</Data> <Data Name="SubjectUserIsLocal">false</Data> <Data Name="SubjectDomainName">CORP</Data> <Data Name="SubjectUserName">Administrator</Data> <Data Name="ObjectServer">Security</Data> <Data Name="OldDirHandle">00000000000401;00;00000040;00299b42</Data> <Data Name="NewDirHandle">00000000000401;00;00000040;00299b42</Data> <Data Name="OldPath">(SVM_root);/New folder</Data> <Data Name="NewPath">(SVM_root);/test</Data> <Data Name="Attributes"></Data> </EventData> </Event>
<Event> <System> <Provider Name="NetApp-Security-Auditing" Guid="{3CB2A168-FE19-4A4E-BDAD-DCF422F13473}"/> <EventID>4656</EventID> <EventName>Open Object</EventName> <Version>101.3</Version> <Source>CIFS</Source> <Level>0</Level> <Opcode>0</Opcode> <Keywords>0x8020000000000000</Keywords> <Result>Audit Success</Result> <TimeCreated SystemTime="2022-12-06T09:35:12.729041000Z"/> <Correlation/> <Channel>Security</Channel> <Computer>FsxId0d06610c40e394b77/SVM</Computer> <ComputerUUID>4750371e-751e-11ed-8602-49ce53d235e7/88c8c530-7524-11ed-8602-49ce53d235e7</ComputerUUID> <Security/> </System> <EventData> <Data Name="SubjectIP" IPVersion="4">10.0.1.10</Data> <Data Name="SubjectUnix" Uid="0" Gid="1" Local="false"></Data> <Data Name="SubjectUserSid">S-1-5-21-38571244-2121234638-1230449559-500</Data> <Data Name="SubjectUserIsLocal">false</Data> <Data Name="SubjectDomainName">CORP</Data> <Data Name="SubjectUserName">Administrator</Data> <Data Name="ObjectServer">Security</Data> <Data Name="ObjectType">Directory</Data> <Data Name="HandleID">00000000000401;00;0000006b;001b6bbe</Data> <Data Name="ObjectName">(SVM_root);/test/New folder</Data> <Data Name="AccessList">%%4423 %%1537 </Data> <Data Name="AccessMask">1080</Data> <Data Name="DesiredAccess">Read Attributes; Delete; </Data> <Data Name="Attributes"></Data> </EventData> </Event>
確かにXML形式でログ記録されていますね。また、SACLが定義されていないためZドライブ上の操作はやはり記録されませんでした。
SACLの更新
SACLのACEを更新
SACLのACEで属性への書き込みwrite-attr
を追加するのを忘れていました。せっかくなのでSACLのACEを更新する手順を確認します。
セキュリティ記述子に追加済みのSACLのACE更新はvserver security file-directory ntfs sacl modifyで行います。
# セキュリティ記述子に追加済みのSACLのACEを更新 FsxId0d06610c40e394b77::> vserver security file-directory ntfs sacl modify -vserver SVM -ntfs-sd security-descriptor -access-type failure -account Everyone -advanced-rights write-data, append-data, write-ea, execute-file, delete-child, delete, write-attr, write-perm, write-owner FsxId0d06610c40e394b77::> vserver security file-directory ntfs sacl modify -vserver SVM -ntfs-sd security-descriptor -access-type success -account Everyone -advanced-rights write-data, append-data, write-ea, execute-file, delete-child, delete, write-attr, write-perm, write-owner # セキュリティ記述子に追加されているSACLのACEを確認 FsxId0d06610c40e394b77::> vserver security file-directory ntfs sacl show Vserver: SVM NTFS Security Descriptor Name: security-descriptor Account Name Access Access Apply To Type Rights -------------- ------- ------- ----------- Everyone failure write-data, append-data, write-ea, execute-file, delete-child, delete, write-attr, write-perm, write-owner this-folder, sub-folders, files Everyone success write-data, append-data, write-ea, execute-file, delete-child, delete, write-attr, write-perm, write-owner this-folder, sub-folders, files 2 entries were displayed.
ファイルセキュリティポリシーのタスクのプロパティ変更
ファイルセキュリティポリシーのタスクのプロパティを変更します。
現在、ファイルセキュリティポリシーのタスクのプロパティはNTFS Propagation Mode
がpropagate
です。NTFS Propagation Mode
で取りうる値は以下の通りです。
propagate
: 継承可能な権限をすべてのサブフォルダとファイルに継承するreplace
: すべてのサブフォルダーとファイルの既存の権限を継承可能な権限に置換するignore
: ファイルまたはフォルダーの権限の置換を許可しない
試しにreplace
に変更して、SACLの継承が無効化されている/ntfs
にSACLが設定されるか確認してみます。
ファイルセキュリティポリシーのタスクの変更はvserver security file-directory policy task modifyで行います。
# NTFS Propagation Mode を replace に変更 FsxId0d06610c40e394b77::> vserver security file-directory policy task modify -vserver SVM -policy-name security-policy -path / -ntfs-mode replace -ntfs-sd security-descriptor -index-num 1 # NTFS Propagation Mode が replace 変更されたことを確認 FsxId0d06610c40e394b77::> vserver security file-directory policy task show -instance Vserver: SVM Policy Name: security-policy Position: 1 Path: / Security Type: ntfs NTFS Propagation Mode: replace NTFS Security Descriptor Name: security-descriptor Access Control Level: file-directory # /ntfs に継承されたか確認 FsxId0d06610c40e394b77::> vserver security file-directory show -vserver SVM -path /ntfs Vserver: SVM File Path: /ntfs File Inode Number: 64 Security Style: ntfs Effective Style: ntfs DOS Attributes: 10 DOS Attributes in Text: ----D--- Expanded Dos Attributes: - UNIX User Id: 0 UNIX Group Id: 0 UNIX Mode Bits: 777 UNIX Mode Bits in Text: rwxrwxrwx ACLs: NTFS Security Descriptor Control:0xaa14 Owner:BUILTIN\Administrators Group:BUILTIN\Administrators DACL - ACEs ALLOW-Everyone-0x1f01ff ALLOW-Everyone-0x10000000-OI|CI|IO ALLOW-BUILTIN\Administrators-0x1f01ff-OI|CI (Inherited) ALLOW-BUILTIN\Users-0x1f01ff-OI|CI (Inherited) ALLOW-CREATOR OWNER-0x1f01ff-OI|CI (Inherited) ALLOW-NT AUTHORITY\SYSTEM-0x1f01ff-OI|CI (Inherited)
設定変更は行いましたが/ntfs
へのSACLの設定はまだ行われていません。変更した際もファイルセキュリティポリシーの適用をしないといけないようですね。
ファイルセキュリティポリシーの適用
ファイルセキュリティポリシーの適用をして、SACLが/ntfs
に設定されることを確認します。
# ファイルセキュリティポリシーの適用 FsxId0d06610c40e394b77::> vserver security file-directory apply -vserver SVM -policy-name security-policy [Job 56] Job is queued: Fsecurity Apply. Use the "job show -id 56" command to view the status of this operation. # セキュリティ記述子で定義したSACLが / に適用されていることを確認 FsxId0d06610c40e394b77::> vserver security file-directory show -vserver SVM -path / Vserver: SVM File Path: / File Inode Number: 64 Security Style: ntfs Effective Style: ntfs DOS Attributes: 10 DOS Attributes in Text: ----D--- Expanded Dos Attributes: - UNIX User Id: 0 UNIX Group Id: 0 UNIX Mode Bits: 777 UNIX Mode Bits in Text: rwxrwxrwx ACLs: NTFS Security Descriptor Control:0x8014 Owner:BUILTIN\Administrators Group:BUILTIN\Administrators SACL - ACEs AUDIT-Everyone-0x1d0176-OI|CI|SA|FA DACL - ACEs ALLOW-BUILTIN\Administrators-0x1f01ff-OI|CI ALLOW-BUILTIN\Users-0x1f01ff-OI|CI ALLOW-CREATOR OWNER-0x1f01ff-OI|CI ALLOW-NT AUTHORITY\SYSTEM-0x1f01ff-OI|CI # セキュリティ記述子で定義したSACLが /ntfs に設定されていることを確認 FsxId0d06610c40e394b77::> vserver security file-directory show -vserver SVM -path /ntfs Vserver: SVM File Path: /ntfs File Inode Number: 64 Security Style: ntfs Effective Style: ntfs DOS Attributes: 10 DOS Attributes in Text: ----D--- Expanded Dos Attributes: - UNIX User Id: 0 UNIX Group Id: 0 UNIX Mode Bits: 777 UNIX Mode Bits in Text: rwxrwxrwx ACLs: NTFS Security Descriptor Control:0x8a14 Owner:BUILTIN\Administrators Group:BUILTIN\Administrators SACL - ACEs AUDIT-Everyone-0x1d0176-OI|CI|SA|FA (Inherited) DACL - ACEs ALLOW-BUILTIN\Administrators-0x1f01ff-OI|CI (Inherited) ALLOW-BUILTIN\Users-0x1f01ff-OI|CI (Inherited) ALLOW-CREATOR OWNER-0x1f01ff-OI|CI (Inherited) ALLOW-NT AUTHORITY\SYSTEM-0x1f01ff-OI|CI (Inherited)
セキュリティ記述子で定義したSACLが/ntfs
に設定されていることを確認できました。また、DACLからEveryoneに対する許可するACEが削除されていたので、DACLが丸っと置換されたことが分かります。
エクスプローラーからも確認しましょう。
継承されたSACLを確認すると、継承元がParent Object
のACEを確認できました。
詳細を開くと以下のようになります。
最後に10分毎にローテーションされ、6世代保持しているか確認します。
PS C:\Users\Administrator> ls Y: Directory: Y:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 12/5/2022 11:00 PM 77 audit_SVM_D2022-12-06-T09-00-02_0000000000.xml -a---- 12/5/2022 11:10 PM 77 audit_SVM_D2022-12-06-T09-10-03_0000000000.xml -a---- 12/5/2022 11:20 PM 77 audit_SVM_D2022-12-06-T09-20-05_0000000000.xml -a---- 12/5/2022 11:30 PM 5949 audit_SVM_D2022-12-06-T09-30-06_0000000000.xml -a---- 12/5/2022 11:40 PM 21191 audit_SVM_D2022-12-06-T09-40-07_0000000000.xml -a---- 12/5/2022 11:50 PM 77 audit_SVM_D2022-12-06-T09-50-09_0000000000.xml -a---- 12/5/2022 11:58 PM 15493 audit_SVM_last.xml
意図した通り、監査ログが10分毎にローテーションされ、6世代保持されていますね。
ファイルアクセスの監査ログが必須要件でも対応できるよ
Amazon FSx for NetApp ONTAPのファイルアクセスの監査ログを確認してみました。
ファイルアクセスの監査ログが必須要件でもFSx for ONTAPは対応できることが分かりました。
クイックスタートガイドなるものもあるので、ファイルアクセスの監査ログを設定する際は一度ご覧ください。
また、今回は行いませんでしたが監査ログが削除されるとよろしくないので、監査ログの出力先ではDACLやエクスポートポリシーで変更を許可しないように設定すると良いと考えます。
なお、2022/12/7時点でファイルアクセス監査ログをCloudWatch LogsやS3バケット、syslogサーバーなど外部転送することはできません。個人的にはS3バケットに出力できるようになると面倒を見るボリュームが減るので期待しています。以下AWS公式ブログではSplunkのEC2インスタンスから監査ログの出力先をマウントして、監査ログを取り込んでいます。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!