NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

Nutanix Files の監査 Syslog を転送してみる。(Files API v3)

Nutanix CE で利用している Nutanix Files の監査情報を、Syslog 転送してみます。

Nutanix のドキュメントでは、下記の Tech Note が参考になります。

今回の内容です。

 

今回の環境

  • Nutanix CE 2020.09.16
  • Nutanix Files 3.8.1.1。FSVM は 1台構成、SMB 共有のみ利用
  • 転送先 Syslog サーバは Oracle Linux 7.9 の rsyslog

ファイル サーバー は、下記にあるような手順で作成ずみです。

下記のように Syslog 転送環境を構成します。

転送先 Syslog サーバの用意

Syslog サーバの構築

Syslog サーバとして利用する Oracle Linux 7 で、rsyslog がリモート受信できるように設定しておきます。

# cat /etc/system-release
Oracle Linux Server release 7.9

ファイアウォールは停止してしまいます。

# systemctl stop firewalld
# systemctl disable firewalld

TCP/514 ポートで、Syslog をリモート受信できるように設定追加しておきます。

# vi /etc/rsyslog.d/remote.conf
# cat /etc/rsyslog.d/remote.conf
module(load="imtcp")
input(type="imtcp" port="514")

rsyslog サービスを再起動しておきます。

# systemctl restart rsyslog

JSON データを扱うために、jq コマンドをインストールしておきます。

# yum install -y jq

 

Syslog サーバの設定確認

Nutanix Files の FSVM から、logger コマンドでログ転送して、Syslog サーバで受信できることを確認しておきます。

  • FSVM への SSH ログインは、管理ネットワーク(FSVM の eth0)経由です。
  • この環境の FSVM 管理ネットワーク IP アドレスは 192.168.20.91 です。
  • 転送先 Syslog サーバは、192.168.11.61 です。
  • Syslog は、TCP 514 ポートで転送します。
nutanix@NTNX-192-168-20-91-A-FSVM:~$ logger -n 192.168.11.61 --tcp -P 514 test-from-fsvm

 

Syslog サーバ側の /var/log/messages ファイルに、テスト ログが追記されたことを確認しておきます。

この環境では FSVM のクライアント サイド ネットワーク(eth1)からログが転送されるため、転送元は 192.168.20.91 ではなく、192.168.31.11 になっています。

Dec  5 05:16:50 192.168.31.11 nutanix: test-from-fsvm

 

Nutanix Files での Syslog 転送設定

Nutanix Files の Syslog 設定は、Files API v3 を利用します。

 

Nutanix Files API 用ユーザの作成

Nutanix Files API v3 は、FSVM にむけて実行します。そこで、FSVM への API 用ユーザを作成しておきます。

Prism Element の、「ファイル サーバー」→「File Server」を開きます。ファイル サーバーを選択してから、「Manage roles」を開きます。

f:id:gowatana:20211130093125p:plain

そして、「REST API アクセス ユーザー」の「新ユーザー」をクリックして、ユーザーを追加しておきます。今回は「filesapi」というユーザを作成してあります。

f:id:gowatana:20211130093252p:plain

 

Files API v3 での接続確認

Files API v3 のリファレンスは、下記のアドレスで確認できます。

  • https://<FSVM のアドレス>:9440/api/nutanix/v3/api_explorer/

接続に必要な情報を、変数に格納しておきます。

今回のファイル サーバーのアドレスは、「test-fs-01.ntnx.lab」です。

$ FS_USER=filesapi
$ FS_PASS='パスワード'
$ FS_ADDR=test-fs-01.ntnx.lab

curl コマンドで API をコールして、Nutanix Files のバージョンなどを取得してみます。出力結果の JSON データを見やすくするため、jq コマンドを利用しています。

$ curl -ks -u "$FS_USER:$FS_PASS" -H "Content-Type: application/json" -X GET --url "https://$FS_ADDR:9440/api/nutanix/v3/file_servers" | jq -r .
{
  "status": {
    "fs_uuid": "0a1bef2b-099c-4f52-9c89-eac01bd204bb",
    "name": "test-fs-01",
    "resources": {
      "version": "3.8.1.1",
      "configuration_list": [
        {
          "name": "max_backup_snapshots_per_share",
          "value": "20"
        },
        {
          "name": "max_backup_snapshot_diff_reqs",
          "value": "10"
        },
        {
          "name": "max_backup_snapshots_diff_list_retention_in_secs",
          "value": "2592000"
        }
      ]
    }
  },
  "api_version": "3.1",
  "metadata": {
    "kind": "file_server"
  }
}

 

Syslog 転送の設定

まず、partner server として転送先 Syslog サーバを登録します。

下記のような JSON ファイルを用意しておきます。

nutanix-files_syslog-server-01.json

  • ログ転送では usage_type に「NOTIFICATION」を指定。多種の連携ケースでは BACKUP / AV を指定する。
  • 転送先サーバのアドレスは、192.168.11.61
  • 転送先ポートは TCP 514

gist.github.com

partner_server を追加します。

$ curl -ks -u "$FS_USER:$FS_PASS" -H "Content-Type: application/json" -d @nutanix-files_syslog-server-01.json -X POST --url "https://$FS_ADDR:9440/api/nutanix/v3/partner_servers"

結果として JSON データが出力されるので、ここから partner server の UUID を確認します。

{"status": {"state": "PENDING", "execution_context": {"task_uuid": "80890e37-e3c7-4bc2-b407-c2cd1d3e5c33"}}, "spec": {"name": "syslog-transfer-01", "resources": {"usage_type": "NOTIFICATION", "vendor_name": "syslog", "server_info": {"server_type": "PRIMARY", "address": {"ip": "192.168.11.61", "port": 514}}}}, "api_version": "3.1", "metadata": {"owner_reference": {"kind": "user", "uuid": "fedea42b-7b2a-5faf-93fa-2bd75b93cc74", "name": "filesapi"}, "use_categories_mapping": false, "kind": "partner_server", "spec_version": 0, "uuid": "4f03e62a-5093-4beb-8120-28526c26271f"}}

あらためて UUID を取得して、変数 SERVER_UUID に格納しておきます。。

$ export SERVER_UUID=$(curl -ks -u "$FS_USER:$FS_PASS" -H "Content-Type: application/json"  -X POST -d '{}' --url "https://$FS_ADDR:9440/api/nutanix/v3/partner_servers/list" | jq -r '.entities[] | select(.spec.name=="syslog-transfer-01") | .metadata.uuid')

UUID が取得できました。

$ echo $SERVER_UUID
4f03e62a-5093-4beb-8120-28526c26271f

Syslog を転送する notification policy を定義した JSON ファイルを用意しておきます。

nutanix-files_syslog-policy-01.json

  • ファイル サーバーの、すべての共有フォルダが対象。
    ("all_mount_targets": true)
  • 対象のプロトコルは SMB のみ。
  • file_operation_list には、冒頭の Tech Note を参考に、SMB に関係するオペレーションのみ含めてある。

gist.github.com

envsubst コマンドで変数部分を置き換えつつ、/notification_policies の POST メソッドでポリシーを作成します。

$ cat nutanix-files_syslog-policy-01.json | envsubst | curl -ks -u "$FS_USER:$FS_PASS" -H "Content-Type: application/json" -d @- -X POST --url "https://$FS_ADDR:9440/api/nutanix/v3/notification_policies"

これで、ファイル サーバーの監査ログが Syslog サーバに転送され、/var/log/messages ファイルに保存されるようになります。

 

監査ログの様子

ためしに、「\\test-fs-01.ntnx.lab\share-01\何かのフォルダ\test-file.txt」ファイルを開いてから、削除した様子です。

  • ntnx-192-168-20-91-a-fsvm は、今回の転送元 FSVM のホスト名です。
  • FileRead、FileDelete の 2行が記録されています。
Nov 30 14:46:08 ntnx-192-168-20-91-a-fsvm SMB[43435]: NTNX.LAB\NTNX\Administrator(1100500)|S-1-5-21-2495205253-2353596005-483417297-500|192.168.10.170|FileRead|success|test-fs-01.ntnx.lab/share-01/何かのフォルダ/test-file.txt|256|9
Nov 30 14:46:18 ntnx-192-168-20-91-a-fsvm SMB[43435]: NTNX.LAB\NTNX\Administrator(1100500)|S-1-5-21-2495205253-2353596005-483417297-500|192.168.10.170|FileDelete|success|test-fs-01.ntnx.lab/share-01/何かのフォルダ/test-file.txt|256

以上。

©2023 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。