OCI 無償セキュリティ機能 脆弱性スキャンを利用してみた


### 最初に
OCIには無償で利用できるセキュリティサービスが数多くありますが、今回はその中の脆弱性スキャンを利用してみました。
普段はネットワークアクセス、権限等のセキュリティをよく意識するのですが、そういったものとは別視点でのセキュリティ機能/サービスについてはあまり触れたことがなかったので勉強がてら、内容や操作についてまとめてみました。

### Oracle脆弱性スキャン・サービスとは
マニュアルより引用
>「Oracle脆弱性スキャン・サービスは、潜在的な脆弱性をホストおよびコンテナ・イメージを定期的にチェックすることで、セキュリティの状況を改善します。
このサービスでは、開発者、運用およびセキュリティ管理者は、正しく構成されていないリソースまたは脆弱なリソースを包括的に可視化し、これらの脆弱性に関するメトリックと詳細を示すレポートを生成できます。」

上記だけだと少しイメージが湧きづらいかもしれないのでざっくり説明すると、ユーザが設定した実行スケジュールに沿って任意のテナンシ、コンパートメント、サブコンパートメント配下のコンピュート・インスタンス、もしくは個々のコンピュート・インスタンスに対し、CIS等のベンチマークとホストを比較・照らし合わせてセキュアな環境なのかを確認できる機能です。

以下が対応表となっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/b0ce3bc9-772e-83f1-3cc2-0d034a95bfa9.png)

※**脆弱性スキャンサービスの利用料は無償**　(コンピュート等のインフラ利用料は別途発生します)
※コンピュート・サービス(Exadata Cloud Serviceやデータベース・サービスなど)とともに直接作成されなかったホストでは使用できません。

脆弱性スキャンで利用されるコンポーネント

|コンポーネント|内容|
|:---|:---|
|スキャン・レシピ|スキャン・パラメータ(調査する情報や頻度など)|
|ターゲット|特定のレシピを使用してスキャンする1つ以上のクラウド・リソース(≒コンピュート・インスタンス)|
|ホスト・スキャン|スキャンされたコンピュート・インスタンスに関するメトリック(検出された脆弱性、リスク・レベルおよびCISベンチマーク・コンプライアンスなど)。|
|ポート・スキャン|スキャンされたコンピュート・インスタンスで検出されたオープンポート。|
|コンテナ・イメージ・スキャン|スキャンされたコンテナ・レジストリ・イメージに関するメトリック(検出された脆弱性とそのリスク・レベルなど)。|
|脆弱性レポート|1つ以上のターゲットで検出された特定のタイプの脆弱性に関する情報(OSパッケージの更新の欠落など)。|

### 設定までの流れ
以下の流れで設定を実施します。
　①スキャン対象のコンピュートのスキャンエージェントの有効化
　②IAMポリシーの設定
　③スキャン・レシピの作成
　④ターゲットの作成
　⑤スキャンの詳細確認

### スキャン対象のコンピュートに対するエージェント設定
「コンピュート>>インスタンス>>インスタンスの詳細」にアクセス。
脆弱性スキャンを実施するには、対象コンピュートに対して"脆弱性スキャン"のプラグインを有効化する必要があります。
構築時に有効化は可能ですが、デフォルトでは無効になっているかと思いますので、対象コンピュートの詳細画面にて"Oracle Cloudエージェント"タブより、有効化をクリックします。
※有効化/無効化はインスタンス実行中のみ変更可能
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/8014ce8d-2bf3-f260-c397-8ca7b00f12a1.png)

### IAMポリシーの設定
「アイデンティティとセキュリティ>>ポリシー>>ポリシーの作成」にアクセス。
-コンピュート・スキャンに必要なIAMポリシーを作成します。

```
Allow group <group_name> to manage vss-family in compartment <compartment_name>
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/a2b8a3b0-3d62-7c6b-85f9-023ecb198b87.png)

-スキャンエージェントへの権限付与も合わせて実施します。

```
Allow service vulnerability-scanning-service to manage instances in compartment <compartment_name>
Allow service vulnerability-scanning-service to read compartments in compartment <compartment_name>
Allow service vulnerability-scanning-service to read vnics in compartment <compartment_name>
Allow service vulnerability-scanning-service to read vnic-attachments in compartment <compartment_name>
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/ca5f2666-00a3-f933-17b7-58f2eadea28f.png)


### スキャン・レシピの作成
「アイデンティティとセキュリティ>>スキャン>>スキャン・レシピ」にアクセス。
作成ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/41f95199-fb8d-8346-c0c3-a07a248c77e7.png)

以下の内容で作成します。
　名前：任意
　コンパートメントに作成：任意
　パブリックIPポートのスキャン：標準(上位1000ポート) or 軽量(上位100ポート)を選択。
　エージェント・ベースのスキャン：オン(デフォルト・オン)
　CISベンチマーク：厳密 or 中 or 低を選択。
　スケジュール：任意で選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/08a5d15d-3db0-32a5-b1c1-b0c943e7a64e.png)

### ターゲットの作成
「アイデンティティとセキュリティ>>スキャン>>ターゲット」にアクセス。
作成ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/85f91f08-1472-8633-4765-ac6498493ca9.png)

以下の内容で作成します。
　タイプ：コンピュート
　名前：任意
　コンパートメントに作成：先ほど作成したスキャン・レシピと同場所を選択
　説明：任意
　スキャン・レシピ：先ほど作成したものを選択
　ターゲット：任意で選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/52a0daf7-c8e0-a21a-d6da-a2c92aa6d69a.png)

### スキャン詳細の確認
「アイデンティティとセキュリティ>>スキャン>>スキャンレポート」にアクセス。
ホストタブでは脆弱性スキャンを有効化にしたインスタンスに対し、リスク・レベルを確認できます。
今回だとOracle Linuxで問題が見つかり、Win Serverには問題はなかったようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/970904bf-06fa-eba4-338a-3b1520fc630c.png)


ホスト名をクリックすることでさらに詳細な情報を確認できます。
問題のサマリや脆弱性として診断されている点、オープン・ポートなどを確認し、それぞれ是正するといった対応を実施するような流れになりそうです。

●メトリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/62c78593-30ac-7774-9172-cb65c265111c.png)

●オープン・ポート
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/d3f3be5e-2712-2eb8-39e3-cea66f8ec0d1.png)

●脆弱性
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/e8f41c47-f15f-f554-c4a1-62610be7747f.png)

●CISベンチマーク
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/e3f250b6-7e9f-9892-5e75-19aa47eaf0ec.png)



|リソース名|内容|
|:---|:---|
|メトリック|円グラフで脆弱性の脅威度を図示|
|オープン・ポート|解放されているポートの一覧を確認可能|
|脆弱性|CVE(共通脆弱性識別子)のリストを一覧表示 & CVEの内容を確認可能|
|CISベンチマーク|デバイスやオペレーティング・システムに関するベスト・プラクティスに準拠できているかどうかを確認可能。|


### ハマった点
ターゲット、スキャン・レシピを作成した後、下記のようなインフォメーションが表示されました。
原因は対象のインスタンスの"脆弱性スキャン"のプラグインを実施していなかったためです。(デフォルトで有効になっていると思っていました...)
逆にプラグインは有効化しているのにも関わらず、下記が表示されている場合はポリシー設定に誤りがある場合があるのでその点を再確認いただければと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/b8b3a1b4-14d6-e544-af2c-e82464756fb9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2471135/ec24b68b-e1c4-321c-0b16-2673047d3b34.png)

### 最後に
普段セキュリティ機能について意識するこが少なく、こういった機能を使用したことがなかったので良い勉強になりました。
OCIは多くのセキュリティ機能があり、それらが無償であることも良い特徴の1つだと思っているので、他の機能についても色々情報収集をしようと思います。
脆弱性スキャンは無償で利用できるかつ、簡単に実装できる機能ですので、興味があれば是非利用してみてください。

>別のセキュリティ機能についても調べてみたので興味のある方はご参照ください。
[OCI 無償セキュリティ機能 保護インスタンスを利用してみた](https://qiita.com/kazunishi/items/9122801cc21e843ad594)

### 参考
マニュアル：https://docs.oracle.com/ja-jp/iaas/scanning/home.htm