はじめに
OCI DevOps ProfessionalのLeaning PathにあるLabを実際にやってみて、OCIにおけるDevOpsの設定や動作を確認します。
今回は以下の2つのLabになります。
09. コンテナイメージの脆弱性スキャン
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 <コンパートメント名>
認証トークンの作成
ここで作成したトークンを使用しますので、ここでは割愛します。
リポジトリの作成
OCIRに新しいリポジトリを作成します。
作成したリポジトリのアクションからスキャナの追加を選択します。
※スキャナの追加が出るまで少し時間がかかります。
以下の設定で追加します。
アイデンティティとセキュリティ->スキャン・レシピで作成したスキャナが確認できます。
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
コンソールでも確認します。
スキャン結果の表示
上記のコンソール画面でスキャン結果のタブをクリックし、スキャン結果を確認します。
右の︙から詳細の表示をクリックします。
各脆弱性レポートの表示
OCIコンソールのアイデンティティとセキュリティ->脆弱性レポートをクリックします。
以下の画面が表示される場合はスキップをクリックします。
脆弱性レポートの一覧が表示されます。
CVE IDのリンクをクリックすると、各脆弱性の詳細を確認できます。また、CSVでエクスポートすることもできます。
この画面からCVE IDのリンクをクリックすると、
以下のNISTのリンクを確認できます。
コンテナイメージのスキャン結果の確認
スキャン・レポートからコンテナ・イメージのタブをクリックします。
コンテナ・イメージのリンクをクリックすると、以下の画面になります。イメージごとの脆弱性が確認できます。
問題IDのリンクをクリックすると、脆弱性レポートと同じ画面に飛びます。
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コンソールの通知からトピックの作成をクリックし、以下の設定で作成します。
サブスクリプションの作成
作成したトピックからサブスクリプションの作成をクリックします。今回は電子メールを使用します。
作成した直後はステータスがPendingになります。
以下のメールが届いているので、Confirm subscriptionをクリックします。
この画面が表示されます。
ConfirmするとサブスクリプションのステータスがActiveになります。
Eventsの作成
通知するトリガーとアクションを設定します。
OCIコンソールのイベントからルールの作成をクリックし、以下の設定でルールを作成します。
今回は
- ルール条件(トリガー)
- DevOpsのBuildがスタートしたら
- アクション
- 作成したトピックで通知します。
ルール条件やアクションは複数設定することができます。
テスト
DevOpsのビルドパイプラインを実行して設定した通知がされるか確認します。
06. CI/CD Pipelineの設定と実行で作成したビルドパイプラインを実行します。
サブスクリプションで設定したメールアドレスにメールが来ているか確認します。
イベントで設定したルールでアクションが実行されていることが確認できます。























