ONTAPのSecurity機能について6【Multi-admin Verification（マルチ管理者検証）】

# はじめに
ONTAPへ管理者でログインすると、当然ながらVolumeやSnapshotの削除という処理が許可されており、実行の際にも、本当に実行するかという確認が発生します。

但し、**ログインユーザが悪意のあるユーザである場合や、確認事項を見ないで誤った操作をしてしまった場合については、そのままでは防止する事ができない**ので、操作ミスによる削除や不本意なSnapshot削除が発生するリスクは残ります。

こういったリスクに対応する為に、ONTAPの機能である**Multi-admin Verification（MAV）を使う事で、複数の管理者による変更操作の承認プロセスを組み込み、誤った変更や意図しない変更の防止、変更のトレース性の確保などが可能**となります。

本記事ではONTAP上でMAVを有効にしてVolume削除時の挙動を確認してみます。
**MAVはONTAP9.11.1から利用可能です。**

![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/5870f426-7ecf-16b0-a67d-e73fd175da63.png)


## 何をしたい？できる？
- **Multi-admin Verification（マルチ管理者検証）を有効にする**
- **Volume削除時に承認が必要になる事を確認する**

:::note info
Volume削除については、MAVとは別にvolume recovery-queueの機能で、完全削除までにデフォルトで12時間の猶予があります。(ゴミ箱のような機能)
:::


## 記事における環境情報
本記事では、以下の環境で実施した内容となります。
- Mail Server : Exchange Server 2019
- 機種: FAS8200＋SATA Disk
- ONTAP  : 9.13.1

環境のイメージとしては以下の通りです。
![002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/89926888-5f73-6aa6-2440-58293cf6f404.png)

## MAVで保護される操作
MAVでは、以下の表の内容を保護する事ができます。

|保護される動作||
|---|---|
|event config modify|volume snapshot policy modify-schedule|
|security login create|volume snapshot policy remove-schedule|
|security login delete|volume snapshot restore|
|security login modify|vserver peer delete|
|system node run|volume snaplock modify (ONTAP9.13.1)|
|system node systemshell|security anti-ransomware volume attack clear-suspect (ONTAP9.13.1)|
|volume delete|security anti-ransomware volume disable (ONTAP9.13.1)|
|volume flexcache delete|security anti-ransomware volume pause (ONTAP9.13.1)|
|volume snapshot delete|volume recovery-query modify (ONTAP9.14.1)|
|volume snapshot policy add-schedule|volume recovery-query purge (ONTAP9.14.1)|
|volume snapshot policy create|volume recovery-query purge-all (ONTAP9.14.1)|
|volume snapshot policy delete|vserver modify (ONTAP9.14.1)|
|volume snapshot policy modify| |

## 実施手順

### 1. Storage管理ユーザの作成
登場人物にあるユーザの作成を実施します。
(admin_bossとadmin_bukaを作成)

なお、事前にActiveDirectory上でboss、bukaのというユーザ作成とExchange server上でMailbox作成は実施済となってます。


```bash:
> security login create -user-or-group-name admin_boss -application ssh -authentication-method password -role admin

Please enter a password for user 'admin_boss':
Please enter it again:

> security login create -user-or-group-name admin_boss -application http -authentication-method password -role admin

#必要ユーザ数分繰り返してから作成されたことの確認

> security login show -vserver PS-8200cl -user-or-group-name admin_b*

Vserver: PS-8200cl
                                                                 Second
User/Group                 Authentication                 Acct   Authentication
Name           Application Method        Role Name        Locked Method
-------------- ----------- ------------- ---------------- ------ --------------
admin_boss     http        password      admin            no     none
admin_boss     ssh         password      admin            no     none
admin_buka     http        password      admin            no     none
admin_buka     ssh         password      admin            no     none
```


### 2. 通知先となるMailサーバと送信元アドレスの設定
```bash:
> event config modify -mail-from fas8200_admin@localhost -mail-server 172.16.10.123


> event config show
                           Mail From:  fas8200_admin@localhost
                         Mail Server:  172.16.10.123
                           Proxy URL:  -
                          Proxy User:  -
 Publish/Subscribe Messaging Enabled:  true
```


### 3. MAVの承認グループを作成 (承認者の定義)
承認グループは管理SVMでのみ設定可能です。
(個々のSVM管理者に移管してMAVが使えない理由)

ここでは2名の管理者を承認者として設定します。

:::note warn
ユーザ用のSVMを指定して設定しようとすると、以下のようなエラーが確認できます。
Error: command failed: Failed to perform the operation because Vserver "XXXX" is not an adminstrative Vserver
:::

```bash:
> security multi-admin-verify approval-group create -vserver PS-8200cl -name mav-group01 -approvers admin_boss -email boss@ps-sc.local

> security multi-admin-verify approval-group show -instance

        Vserver: PS-8200cl
     Group Name: mav-group01
      Approvers: admin, admin_boss
Email Addresses: administrator@ps-sc.local, boss@ps-sc.local
```

### 4. MAVを有効化
ここでは、承認者グループには承認者を2名分定義していても、申請への承認は1名の承認があればでOKとし、申請と承認後の有効時間はデフォルトの1hのままにします。


```bash:
> security multi-admin-verify modify -approval-groups mav-group01 -required-approvers 1 -enabled true

> security multi-admin-verify show
Is      Required  Execution Approval Approval
Enabled Approvers Expiry    Expiry   Groups
------- --------- --------- -------- -----------
true    1         1h        1h       mav-group01
```

### 5. Volume削除を承認対象にする為のルール追加

ここではSVM名　nfs100のVolume削除について承認が必要となるルールを追加します。

:::note warn
既にMAVが有効になっているので、ルール追加時にMAVの承認が必要となります。
adminユーザでCLI実施したのであれば、設定したadmin_bossで別途ログインして承認を実施します。
:::



```bash:
> security multi-admin-verify rule create -operation "volume delete" -query "-vserver nfs100"

Warning: This operation requires multi-admin verification. To create a verification request use "security multi-admin-verify request
         create".
         Would you like to create a request for this operation? {y|n}: y

Error: command failed: The security multi-admin-verify request (index 1) is auto-generated and requires approval.


> security multi-admin-verify request show
                                                           Pending
Index Operation              Query                State    Approvers Requestor
----- ---------------------- -------------------- -------- --------- ---------
    1 security multi-admin-verify rule create
                             -vserver PS-8200cl -operation "volume delete" -auto-request-create true -query "-vserver nfs100"
                                                  pending  1         admin
```

**別ユーザ(この環境ではadmin_boss)で操作を承認します。**
```bash:
> security multi-admin-verify request approve -index 1
```

再度ルール追加のCLIをadminユーザで実施します。

```bash:
> security multi-admin-verify rule create -operation "volume delete" -query "-vserver nfs100"

> security multi-admin-verify rule show
                                                       Required  Approval
Vserver     Operation                                  Approvers Groups
----------- ------------------------------------------ --------- -------------
PS-8200cl
            security login password                    -         -
              Query: -multi-admin-approver true -different-user true
            security login unlock                      -         -
              Query: -username diag
            security multi-admin-verify approval-group create -  -
            security multi-admin-verify approval-group delete -  -
            security multi-admin-verify approval-group modify -  -
            security multi-admin-verify approval-group replace - -
            security multi-admin-verify modify         -         -
            security multi-admin-verify rule create    -         -
            security multi-admin-verify rule delete    -         -
            security multi-admin-verify rule modify    -         -
            set                                        -         -
              Query: -privilege diagnostic
            volume delete                              -         -
              Query: -vserver nfs100

```



### 6. Volume削除(申請)を実施

admin_bukaユーザでログインを行い、Volumeの削除を実施します。
**nfs100というsvmのvolumeの場合、削除できない事が確認できます。**

```bash:
#別SVMのvolumeは消せることの確認
> volume delete  -vserver nfs200 -volume vol200

Info: Volume "vol200" in Vserver "nfs200" will be marked as deleted and placed in the volume recovery queue. The space used by the
      volume will be recovered only after the retention period of 12 hours has completed. To recover the space immediately, get the
      volume name using (privilege:advanced) "volume recovery-queue show vol200_*" and then "volume recovery-queue purge -vserver
      nfs200 -volume <volume_name>" command. To recover the volume use the (privilege:advanced) "volume recovery-queue recover
      -vserver nfs200 -volume <volume_name>" command.

Warning: Are you sure you want to delete volume "vol200" in Vserver "nfs200" ? {y|n}: y
[Job 1121] Job succeeded: Successful

#対象SVMのVolume削除ができない事の確認
> volume delete  -vserver nfs100 -volume vol100

Warning: This operation requires multi-admin verification. To create a verification request use "security multi-admin-verify request
         create".
         Would you like to create a request for this operation? {y|n}: y

Error: command failed: The security multi-admin-verify request (index 5) is auto-generated and requires approval.
```


### 7. 承認者ユーザで承認処理の実施
申請が実施されると、以下のようなメールが通知されます。
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/8d3775ef-bc3d-b605-f5b3-a6de912b04c1.png>


メール記載にあるように、CLIかGUI(system Manager)で承認を実施します。
ルール追加時にCLIでの承認は実施したので、ここではSystemManagerで承認します。

<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/eba65e0e-781c-a2e7-df33-be8cde97f57c.png>

<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/a338bfc3-2dd2-7717-503a-76e67342f2f1.png>


### 8. Volume削除の実行

削除申請が承認されたので、Volumeの削除を実行することが可能になります。

```bash:
> security multi-admin-verify request show
                                                           Pending
Index Operation              Query                State    Approvers Requestor
----- ---------------------- -------------------- -------- --------- ---------
    3 set                    -privilege diagnostic
                                                  expired  1         admin
    4 security multi-admin-verify modify
                             -approval-groups mav-group01 -required-approvers 1 -enabled false
                                                  executed 0         admin
    5 volume delete          -vserver nfs100 -volume vol100 -foreground true
                                                  approved 0         admin_buka
3 entries were displayed.


> volume delete  -vserver nfs100 -volume vol100

Info: Volume "vol100" in Vserver "nfs100" will be marked as deleted and placed in the volume recovery queue. The space used by the
      volume will be recovered only after the retention period of 12 hours has completed. To recover the space immediately, get the
      volume name using (privilege:advanced) "volume recovery-queue show vol100_*" and then "volume recovery-queue purge -vserver
      nfs100 -volume <volume_name>" command. To recover the volume use the (privilege:advanced) "volume recovery-queue recover
      -vserver nfs100 -volume <volume_name>" command.

Warning: Are you sure you want to delete volume "vol100" in Vserver "nfs100" ? {y|n}: y
[Job 1122] Job succeeded: Successful
```

**削除が実施されたという内容は、承認者に通知されます。**
<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/29b9aadf-29cf-6fae-613c-308ac3661b16.png>



## 参考及びリンク

[Multi-admin verification overview](https://docs.netapp.com/us-en/ontap/multi-admin-verify/index.html)
[NetApp ONTAP 9セキュリティ設定ガイド](https://www.netapp.com/ja/media/63103-tr4569.pdf)
[Administrator authentication and RBAC overview with the CLI](https://docs.netapp.com/us-en/ontap/authentication/index.html)