Amazon FSx for NetApp ONTAPのファイルアクセスの監査ログを確認してみた

ファイルアクセスの監査ログが必須要件でも対応できるよ
2022.12.07

誰がどんなファイルに対してどんな操作をしたのか確認したいな

こんにちは、のんピ(@non____97)です。

皆さんは「Amazon FSx for NetApp ONTAP(以降FSx for ONTAP)で誰がどんなファイルに対してどんな操作をしたのか確認したいな」したいなと思ったことはありますか? 私はあります。

以下記事では、FSx for ONTAPの管理アクティビティの監査ログを確認する方法を紹介しました。

こちらはFSx for ONTAPに対してONMTAP CLIやONTAP REST APIの操作を記録する監査ログであり、SMBやNFSでファイルに対してアクセスする際の監査ログとは別です。

FSx for ONTAPではファイルアクセス時の監査ログも取得することが可能です。

AWS公式ドキュメントでも監査ログの出力方法が紹介されています。

実際に設定してみたので紹介します。

いきなりまとめ

  • FSx for ONTAPのファイルアクセス監査ログを出力までには以下の3つのステップを踏む必要がある
    1. 監査ログの設定作成
    2. 監査ログの有効化
    3. 監査対象としたいフォルダにSACLを設定
  • 監査ログはEVTX形式とXML形式で出力可能
  • SMB、NFSどちらのプロトコルも出力可能
  • NTFSのSACLやDACLはONTAP CLIからも設定可能
  • ONTAP CLIでNTFSのSACLとDACLを設定する手順は以下の通り
    1. セキュリティ記述子の作成
    2. SACLのACEをセキュリティ記述子に追加
    3. ファイルセキュリティポリシーの作成
    4. ファイルセキュリティポリシーへのセキュリティ記述子の追加
    5. ファイルセキュリティポリシーの適用
  • ONTAP CLIでセキュリティ記述子を作成すると自動でDACLも作成される
  • 2022/12/7時点でファイルアクセス監査ログをCloudWatch LogsやS3バケット、syslogサーバーなど外部転送することはできない

ファイルアクセスの監査ログの仕様の確認

ファイルアクセスの監査ログは、定義した監査ポリシーに基づいて、ファイルやディレクトリに対するアクセスを記録する機能です。

監査ログはSVMごとに設定し、任意のパスにEVTX形式もしくはXML形式のログファイルを出力することが可能です。EVTX形式の場合はWindowsのイベントビューワーで確認できます。

FSx for ONTAP(というよりもONTAP)では監査ログを出力する際、以下のようなプロセスで行われます。

  1. 各ノードでステージングファイルと呼ばれる中間バイナリファイルをアグリゲート内のステージングボリュームに出力
  2. 統合タスクと呼ばれる監査が有効になっている場合に作成されるタスクにより、SVMのメンバーノード全体のステージングファイルから監査レコードを取得する
  3. 監査レコードを時間順にマージして、ステージングファイルを定期的に監査ログ設定に基づき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

ファイルアクセスの監査を行うためにはいくつか前提条件と考慮事項があります。

  1. 監査を有効にするSVMは、クラスタ内で最大50個まで
  2. NFSの監査では、監査ACE(タイプU)をサポート
  3. NFSの監査では、モードビットと監査ACEの間のマッピングはされない
    • ACLをモードビットに変換する場合、監査ACEはスキップされる
    • モードビットをACLに変換する場合、監査ACEは生成されない
  4. 監査ログの設定でログ出力先のパスが存在している必要
  5. 監査ログの設定でログ出力先のパスにシンボリックリンクが含まれていない
    • シンボリックリンクが含まれている場合は、監査ログの設定に失敗
    • 監査ログファイルを格納する新しいボリュームまたは qtree を作成することを推奨
  6. ステージングボリューム内に空き容量がある必要がある
    • ただし、FSx for ONTAP上でステージングボリューム内の空き容量があるか確認する術がない
    • デフォルトではステージングボリュームに保存できない場合は、クライアント処理は拒否される
  7. 監査ログの出力先のパスのボリュームに利用可能なスペースがある必要がある
    • サイズ、時間でローテーションすることでボリュームの空き容量を確保する
  8. 集約型アクセス ポリシーのステージングイベントを生成するには、ダイナミックアクセス制御を有効にする必要がある
    • ダイナミックアクセス制御はデフォルトでは有効になっていない

これら前提条件と考慮事項は以下ドキュメントに記載があります。

検証環境

それでは実際に監査ログを試してみましょう。検証環境は以下の通りです。

Amazon FSx for NetApp 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ステップで行います。

  1. 監査ログの設定作成
  2. 監査ログの有効化
  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つ指定されていますね。こちらのパラメーターで指定できるものは以下の通りです。

今回はログローテーションを日時で行っていますが、-rotate-sizeを指定することで監査ログのサイズでローテーションすることも可能です。監査ログでボリュームを圧迫しないように、サイズを指定するのが無難でしょう。

ログローテーションの世代数を管理する-rotate-limit0を指定すると、ログのローテーション世代数が無制限になります。

また、デフォルトではStrict Guarantee of Auditingtrueになっています。このパラメーターが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

Statetrueになりましたね。

監査ログを無効化する場合はvserver audit disableで行います。

監査対象としたいフォルダにSACLを設定

次に監査対象としたいフォルダにSACLを設定します。

NTFSの監査ポリシーを設定する際は以下の2通りの方法があります。

  1. 対象のフォルダをマウントし、NTFS SACLを設定
  2. 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の成功/失敗関わらず全ての操作を記録するように設定します。

SACLの確認

設定したACEが追加されたことを確認しApplyで適用します。

NTFS監査設定

ファイルアクセスの監査ログの確認

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を設定する手順は以下の通りです。

  1. セキュリティ記述子の作成
  2. SACLのACEをセキュリティ記述子に追加
  3. ファイルセキュリティポリシーの作成
  4. ファイルセキュリティポリシーへのセキュリティ記述子の追加
  5. ファイルセキュリティポリシーの適用

各手順は以下NetApp公式ドキュメントにも記載されています。

まず、現在設定しているSACLを削除します。エクスプローラーから以下のようにSACLのACEを削除しました。

SACL削除

監査ログの設定を変更

次に監査ログの設定を変更します。特に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が設定されていることを確認します。

ルートでSACLが設定されていることを確認

ACEの詳細を確認します。意図した通りに設定されていますね。

SACLの詳細確認

また、サブフォルダである/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 Modepropagateです。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を確認できました。

Parent Object

詳細を開くと以下のようになります。

サブフォルダーで設定されたことを確認

最後に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)でした!