IBM Cloud Monitoring: Sysdig Secureを使うとこんなに便利 - 第2回: Runtime Policyのアクション

---

[IBM Cloud Monitoring: Sysdig Secureを使うとこんなに便利 - 第1回: Activity Audit](https://qiita.com/testnin2/items/671b4af0ab514b4405a4)
[IBM Cloud Monitoring: Sysdig Secureを使うとこんなに便利 - 第2回: Runtime Policyのアクション](https://qiita.com/testnin2/items/9f855c6a2dd088ae2407)

----
# 1. Runtime Policyのアクション概要
[前回](https://qiita.com/testnin2/items/671b4af0ab514b4405a4)も説明した通り、Sysdig Secureには「実行時の挙動を検知する際のルールの組み合わせとその際のアクション」を定義しているRuntime Policyが存在する。
前回は、`Suspicious Container Activity`というポリシーの中に、`Terminal shell in container`というルールが存在することについて言及したが、検知した際のアクションも指定できる。

- Policies -> Thread Detection -> Runtime PoliciesからSuspicious Container Activityを選択し、編集ボタンを押下する。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/b1ac051d-baf1-ce57-3df5-9b9bb429c3de.png)
- 検知時のアクション項目として、以下が存在する。単なるイベントをコンソールで確認するだけであれば、`Nothing(notify only)`だが、他に以下の項目が選択できるので、その挙動を確認してみる。
    - Containers
        - Nothing(notify only)
        - Kill
        - Stop
        - Pause
    - Capture
    - Notify
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/347d493a-16db-17aa-e5ed-4449b3129c86.png)


# 2. Runtime Policyのアクション: Containers


```txt:killを選択した時。ログイン直後に強制的にexitされた。(Exit Code 137 (SIGKILL))
[root@new-syasuda-tok1-vpc1 ~]# oc get pods
NAME                         READY   STATUS    RESTARTS   AGE
samplephp-7cdd647b76-bv7wx   1/1     Running   0          81s
samplephp-7cdd647b76-jgtsg   1/1     Running   0          76s

[root@new-syasuda-tok1-vpc1 ~]# oc rsh samplephp-7cdd647b76-bv7wx
sh-4.4$ command terminated with exit code 137

[root@new-syasuda-tok1-vpc1 ~]# oc get pods
NAME                         READY   STATUS    RESTARTS     AGE
samplephp-7cdd647b76-bv7wx   1/1     Running   1 (3s ago)   2m14s
samplephp-7cdd647b76-jgtsg   1/1     Running   0            2m9s
```
```txt:Stopを選択した時。ログイン直後に強制的にexitされた。
[root@new-syasuda-tok1-vpc1 ~]# oc get pods
NAME                         READY   STATUS    RESTARTS      AGE
samplephp-7cdd647b76-bv7wx   1/1     Running   1 (56s ago)   3m7s
samplephp-7cdd647b76-jgtsg   1/1     Running   0             3m2s

[root@new-syasuda-tok1-vpc1 ~]# oc rsh samplephp-7cdd647b76-bv7wx
sh-4.4$ exit

[root@new-syasuda-tok1-vpc1 ~]# oc get pods
NAME                         READY   STATUS             RESTARTS     AGE
samplephp-7cdd647b76-bv7wx   0/1     CrashLoopBackOff   1 (9s ago)   3m27s
samplephp-7cdd647b76-jgtsg   1/1     Running            0            3m22s
```
```txt:Pauseを選択した時。ログインしたがコマンドを何も打てない。しばらくすると、強制的にexitされた。(Exit Code 137 (SIGKILL))
[root@new-syasuda-tok1-vpc1 ~]# oc get pods
NAME                         READY   STATUS    RESTARTS      AGE
samplephp-7cdd647b76-bv7wx   1/1     Running   2 (92s ago)   4m50s
samplephp-7cdd647b76-jgtsg   1/1     Running   0             4m45s

[root@new-syasuda-tok1-vpc1 ~]# oc rsh samplephp-7cdd647b76-bv7wx
sh-4.4$ 
↓
↓しばらく待った後、以下に遷移
↓
[root@new-syasuda-tok1-vpc1 ~]# oc rsh samplephp-7cdd647b76-bv7wx
sh-4.4$ command terminated with exit code 137

（他のコンソールで実施）
[root@new-syasuda-tok1-vpc1 ~]# oc get pods
NAME                         READY   STATUS    RESTARTS        AGE
samplephp-7cdd647b76-bv7wx   1/1     Running   3 (10s ago)     5m38s
samplephp-7cdd647b76-jgtsg   1/1     Running   0               5m33s
```

# 3. Runtime Policyのアクション: Capture

IBM Cloudで導入されるSysdig Agentは、デフォルトでSysdig Capture機能が無効になっている。

```
[root@new-syasuda-tok1-vpc1 ~]# oc get configmap sysdig-agent -n ibm-observe -o yaml | grep sysdig_capture_enabled
    sysdig_capture_enabled: false
```
Capture機能を利用するためには、configmapを以下のように変更。
```
[root@new-syasuda-tok1-vpc1 ~]# oc get configmap sysdig-agent -n ibm-observe -o yaml | grep sysdig_capture_enabled
    sysdig_capture_enabled: true
```
configmapの変更はPodには自動的に反映されないのでrolloutを実施。
```txt:Podに反映
oc rollout restart daemonset sysdig-agent -n ibm-observe
```

その上で、以下のようにRuntime Policyを変更して保存する。イベント発生5秒前からイベント発生後15秒を記録する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/5df6a7b4-7bd7-4387-efc2-562cb3e1cc16.png)

この状態で、先ほどのPodにログインしてみると、以下のイベントが発生した。
- Actionsとして`Capture covering xxxx`という記述があり、キャプチャーされたことがわかる。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/2eba10fe-7746-083c-f8d0-7e51ab7e0ff6.png)
- `Respond`を押下すると、`View Capture with Inspect`が選択できる。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/0ecff9f5-9cc2-fb67-4458-130b17d403aa.png)
- `View Capture with Inspect`を押下した結果。Inspectの画面が現れる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/95f4dc31-0fe6-ca9b-0a29-c8b79fb50be4.png)
- Inspectにて、`Spy Users`に移動した結果。コンテナ内部で実行されたコマンドがキャプチャーされている。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/a586593f-b05e-a7ec-d506-67501c7f765e.png)
- Inspectにて、`Connections`に移動した結果。コンテナ内部で実行されたネットワーク接続情報がキャプチャーされている。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/8ba83531-3327-0fee-56d8-7cfa544a0458.png)
- Inspectにて、`I/O Streams`を選択した結果。curlで実行されていたHTTPアクセスの情報が参照できる。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/21365c7b-d17d-b48f-7551-3dde21f270e3.png)



# 参考. ホストにおけるCaptureは実行されない

デフォルトでは、`sysdig_capture_enabled: false`になっているが、これを`sysdig_capture_enabled: true`に変更してagentを再起動(`systemctl restart dragent`)しても、イベント検知時にCaptureされることはなかった。このCapture機能は、コンテナ実行時にしか稼働されないのかもしれない。

```txt:/opt/draios/etc/dragent.yaml
customerid: c63e9a9a-7b13-4d44-a111-8b9f4373bd2f
collector: ingest.private.jp-tok.monitoring.cloud.ibm.com
collector_port: 6443
ssl: true
sysdig_capture_enabled: false
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/6bf219b5-380e-5e72-d1cc-bd5f7e81ef8a.png)



# 4. Runtime Policyのアクション: Notify

- Notificationには、SlackやWebhookやPagerDutyやTeamsなど、いろいろな通知方法があるが、今回はメールで通知するものとする。あらかじめ、以下のようにメールでのNotificationを構成をしておく。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/0a1eaf69-00cf-2442-6d09-a16f1b403e0a.png)
- Runtime Policyのアクションとしてこのメール通知を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/4c5f9095-ce5d-cfa0-3c5c-d53dd34a4aa4.png)


この状態で、先ほどのPodにログインしてみると、以下のようなメールが通知されている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/f4a3ea8d-a56e-ecf6-d30d-acbaa33f5f9a.png)