OCI DevOps ProfessionalのLeaning Pathを確認する 3

# はじめに
OCI DevOps ProfessionalのLeaning PathにあるLabを実際にやってみて、OCIにおけるDevOpsの設定や動作を確認します。

https://mylearn.oracle.com/ou/learning-path/become-an-oci-devops-professional-2023/121756

今回は以下の2つのLabになります。

[09. コンテナイメージの脆弱性スキャン](#09-コンテナイメージの脆弱性スキャン)
[10. DevOpsのイベント発生時のアクション定義](#10-devopsのイベント発生時のアクション定義)

# 09. コンテナイメージの脆弱性スキャン
OCIRの脆弱性スキャンを有効にして、OCIRに保存されるコンテナイメージの脆弱性を診断します。

## ポリシーの設定
以下のポリシーを設定します。

```
Allow dynamic-group <動的グループ名> to manage repos in compartment <コンパートメント名>
Allow dynamic-group <動的グループ名> to manage vss-family in compartment <コンパートメント名>
Allow service vulnerability-scanning-service to read repos in compartment <コンパートメント名>
Allow service vulnerability-scanning-service to read compartments in compartment <コンパートメント名>
```

## 認証トークンの作成

[ここ](https://qiita.com/dingtianhongjie/items/7d1270bfd327da800bbd#%E8%AA%8D%E8%A8%BC%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%81%AE%E4%BD%9C%E6%88%90)で作成したトークンを使用しますので、ここでは割愛します。

## リポジトリの作成
OCIRに新しいリポジトリを作成します。

![スクリーンショット 2023-06-27 16.10.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/81980070-8e1e-0022-7fe0-6c03797c5e0e.png)

![スクリーンショット 2023-06-27 16.11.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/efd0e0bc-9f2f-9528-eb04-9e97fd8557d5.png)

作成したリポジトリの`アクション`から`スキャナの追加`を選択します。
※`スキャナの追加`が出るまで少し時間がかかります。

![スクリーンショット 2023-06-27 16.16.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/fe276f7f-a236-29d6-31fb-47d49682ffee.png)

以下の設定で追加します。

![スクリーンショット 2023-06-27 16.17.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/dcaf6967-d3b0-9696-c111-a271abc7623c.png)

`アイデンティティとセキュリティ`->`スキャン・レシピ`で作成したスキャナが確認できます。

![スクリーンショット 2023-06-27 17.17.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/ab3f6693-de77-6bb5-f756-9ed11c892926.png)


## OCIRへのコンテナイメージのPush
パブリックなコンテナイメージ（今回はmaven）をPullして、Tag付け、OCIRへPushします。

OCIRにログインします。

```
$ sudo docker login lhr.ocir.io
Username: <tenancy-namespace>/<username>
Password: <認証トークン>
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
```

コンテナイメージをPullします。

```
$ sudo docker pull maven:latest
latest: Pulling from library/maven
3f94e4e483ea: Pull complete 
857412f02e8d: Pull complete 
84539186750f: Pull complete 
f48e8861e72e: Pull complete 
d057f354194c: Pull complete 
f95bc2c6dd70: Pull complete 
b0372eb803f6: Pull complete 
1f5765d9a90f: Pull complete 
40ea0bb3fbb0: Pull complete 
Digest: sha256:7a011deae45b0396209a490925cd85408c5bcbd7cca78a730ed3b3e7e03424cc
Status: Downloaded newer image for maven:latest
docker.io/library/maven:latest
$ sudo docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
maven        latest    c8f83a9dcc01   18 hours ago   549MB
```

Tag付けします。

```
$ sudo docker tag maven:latest lhr.ocir.io/orasejapan/lhr-dop-lab09-1-ocir-1/oci_demo_imagescan_01:1.0
$ sudo docker images
REPOSITORY                                                            TAG       IMAGE ID       CREATED        SIZE
lhr.ocir.io/orasejapan/lhr-dop-lab09-1-ocir-1/oci_demo_imagescan_01   1.0       c8f83a9dcc01   18 hours ago   549MB
maven                                                                 latest    c8f83a9dcc01   18 hours ago   549MB
```

Tag付けしたイメージをPushします。

```
$ sudo docker push lhr.ocir.io/orasejapan/lhr-dop-lab09-1-ocir-1/oci_demo_imagescan_01:1.0
The push refers to repository [lhr.ocir.io/orasejapan/lhr-dop-lab09-1-ocir-1/oci_demo_imagescan_01]
674d48c02916: Pushed 
cd0796680885: Pushed 
99fb0a9ec8fc: Pushed 
d1bc5e890782: Pushed 
17eae923607e: Pushed 
6e2d046e5002: Pushed 
bfd37c6f3336: Pushed 
35a8360e0628: Pushed 
cdd7c7392317: Pushed 
1.0: digest: sha256:8a9c74050bfed1db37b88f270397d6e41a7da68862aa3d1e1a7e178f0e12de87 size: 2205
```

コンソールでも確認します。

![スクリーンショット 2023-06-27 16.40.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/8da4d7ea-5de6-19da-5fcb-e900acc3028c.png)


## スキャン結果の表示
上記のコンソール画面で`スキャン結果`のタブをクリックし、スキャン結果を確認します。

![スクリーンショット 2023-06-27 16.42.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/4d516af5-5717-79b8-a91e-e60f58c488c3.png)

右の`︙`から`詳細の表示`をクリックします。

![スクリーンショット 2023-06-27 16.43.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/c76a7f28-a9ff-7d72-46f1-aeda2a4d01a6.png)

![スクリーンショット 2023-06-27 16.43.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/f38f9161-eca0-978a-9988-13765b8c2b1e.png)

## 各脆弱性レポートの表示
OCIコンソールの`アイデンティティとセキュリティ`->`脆弱性レポート`をクリックします。

以下の画面が表示される場合は`スキップ`をクリックします。

![スクリーンショット 2023-06-27 16.49.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/917b64cd-efe6-cf47-9789-575df0e7c26f.png)

脆弱性レポートの一覧が表示されます。
CVE IDのリンクをクリックすると、各脆弱性の詳細を確認できます。また、CSVでエクスポートすることもできます。

![スクリーンショット 2023-06-27 16.51.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/1ddb0ea9-e001-6192-5df1-e627715e75f3.png)

この画面からCVE IDのリンクをクリックすると、

![スクリーンショット 2023-06-27 16.54.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/a8b9bd65-0fd5-c3f1-641a-59d8285a15b7.png)

以下のNISTのリンクを確認できます。

![スクリーンショット 2023-06-27 16.54.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/01a067ac-7d66-7bee-d77b-ac14b24b7b9f.png)

https://nvd.nist.gov/vuln/detail/CVE-2023-2603

## コンテナイメージのスキャン結果の確認
`スキャン・レポート`から`コンテナ・イメージ`のタブをクリックします。

![スクリーンショット 2023-06-27 17.00.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/2cb36683-034b-5eda-41c8-b1c13f1e3f2d.png)

コンテナ・イメージのリンクをクリックすると、以下の画面になります。イメージごとの脆弱性が確認できます。
`問題ID`のリンクをクリックすると、脆弱性レポートと同じ画面に飛びます。

![スクリーンショット 2023-06-27 17.02.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/2bf9a403-7d19-6ca7-fca4-47099582f529.png)


# 10. DevOpsのイベント発生時のアクション定義
EventsとNotificationsを使用して、DevOpsのイベント発生をトリガーとして通知するルールを設定します。

## ポリシーの設定
以下のポリシーを設定します。

```
Allow dynamic-group <動的グループ名> to manage ons-topics in compartment <コンパートメント名>
Allow dynamic-group <動的グループ名> to manage cloudevents-rules in compartment <コンパートメント名>
```

## Notificationsの設定

### トピックの作成
OCIコンソールの`通知`から`トピックの作成`をクリックし、以下の設定で作成します。

![スクリーンショット 2023-06-28 16.17.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/353880e1-dcb3-ff63-c0aa-c0cb81708678.png)

### サブスクリプションの作成
作成したトピックから`サブスクリプションの作成`をクリックします。今回は`電子メール`を使用します。

![スクリーンショット 2023-06-28 16.18.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/9c0bc2aa-65dc-3308-3b8c-8500476bdcf9.png)

作成した直後はステータスが`Pending`になります。

![スクリーンショット 2023-06-28 16.18.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/5744d40c-4711-87a5-146b-d1fee4abd74d.png)

以下のメールが届いているので、`Confirm subscription`をクリックします。

![スクリーンショット 2023-06-28 16.19.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/a94b0509-2e92-1d34-dcef-dbf21ccc43a2.png)

この画面が表示されます。

![スクリーンショット 2023-06-28 16.19.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/bcaa8273-e2e2-4c83-76a6-650d3c9daf85.png)

Confirmするとサブスクリプションのステータスが`Active`になります。

![スクリーンショット 2023-06-28 16.19.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/884f4d00-7bac-2d51-35c1-b162c3b7cc21.png)

## Eventsの作成
通知するトリガーとアクションを設定します。

OCIコンソールの`イベント`から`ルールの作成`をクリックし、以下の設定でルールを作成します。
今回は
- ルール条件（トリガー）
    - DevOpsのBuildがスタートしたら
- アクション
    - 作成したトピックで通知します。
    
ルール条件やアクションは複数設定することができます。

![スクリーンショット 2023-06-28 16.31.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/88981cf2-43eb-7cc6-88a6-dfea85b2e779.png)

## テスト
DevOpsのビルドパイプラインを実行して設定した通知がされるか確認します。

[06. CI/CD Pipelineの設定と実行](https://qiita.com/dingtianhongjie/items/19d0ee610c2d697b2b31#06-cicd-pipeline%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%81%A8%E5%AE%9F%E8%A1%8C)で作成したビルドパイプラインを実行します。

![スクリーンショット 2023-06-28 16.39.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/d0a48a7f-97a1-8199-7732-531b914a26bf.png)

サブスクリプションで設定したメールアドレスにメールが来ているか確認します。

![スクリーンショット 2023-06-28 16.40.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/443d6e3a-0384-85e5-b091-5e2cfa21fce6.png)

イベントで設定したルールでアクションが実行されていることが確認できます。