Oracle Cloud Guardの利用ガイドについて 

CloudGuardは元々CSPM(Cloud Security Posture Managemnet)のサービスです。
ユーザーIDやコンピューティングインスタンス等のリソースを、クラウド環境に対して横断的に構成情報を取得し、設定がベストプラクティスに従っているか、構成検査を自動的に実施することが可能です。
クラウドサービスで発生する多くのセキュリティインシデントが、利用ユーザーの設定ミスや不十分な管理に起因することから、統一的な可視性を得ることは、セキュリティ管理上、非常に有用であるといえます。
実行される検査には、CIS(Cent er for Internet Security)が公表してい
るセキュリティベンチマークや、PCI DSSなど、業界のコンプライアンスへの準拠性チェックに対応したひな形が準備されて簡単に始められることもあり、セキュリディ&コンプライアンスリスクの管理に活用できます。発表以来、Threat Intelligenceサービスがthreat Ditectorレシピとしてまた今年6月にVSS(脆弱性スキャンサービス)もインスタンス管理Detectorレシピとして統合され、OCIのセキュリティ対策の中核をなすサービスとして進化しています。

# 機能概要
Cloud Guardの機能は下記の通り大きく３つあります。

1.検知
システム構成設定内容やユーザー操作内容を監視してSecurity Compliance/Policy違反を検知

2.可視化(リスク評価)
ダッシュボードなどの画面を用いてテナンシ全体のリスク可視化をはかり。分析評価、セキュリティ健全性をスコアリング

3.対応
アラートによりセキュリティ担当者への通知と、Compliance/Policy違反に対する修正対応の提案、もしくは対応実施の自動化

![スクリーンショット 2024-09-12 10.56.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/f1dc3225-e179-b042-8132-dc3848a4f968.png)

# 前提条件
Cloud Guardの全体の管理(RecipeやCongfigの作成、変更、削除)を実施するには次のPolicy作成が必要です。
```
allow group CloudGuardUsers to manage cloud-guard-family in tenancy
```
Cloud GuardのDahboardの情報を照会するだけであれば下記のPolicyが必要です。
```
allow group CloudGuardUsers to read cloud-guard-family in tenancy
allow group CloudGuard_ReadOnly to read compartments in tenancy
allow group CloudGuard_ReadOnly to read announcements in tenancy
```

# 導入設定

## １.有効化
Cloud Guardの利用を開始するには、まず有効化が必要です。Cloud Guard有効化については下記リンクを参照ください。

https://qiita.com/western24/items/d1469545749866867191

設定画面では以下をご注意ください、

[レポート・リージョン]
レポートリージョンはテナンシーで１つ、Cloud Guardのインスタンスの配置先です。監視対象ではありませんので、東京リーションをレポート・リージョンに指定しても、大阪リーションのリソースは監視できます。

[モニターするコンパートメント]
どのコンパートメントも指定できますが、まず最初は(テナンシー)ルート・コンパートメント指定することを推奨します。理由は、Security標準フレームワークCIS OCI Benchmarksの下記ルールからです。

4.14 Ensure Cloud Guard is enabled in the root compartment of the tenancy

https://www.cisecurity.org/cis-benchmarks
(Oracle Cloud Infrastructureを選択してダウンロード)

[レシピについて]
構成ディテクタレシピ(Oracle管理)とアクテビティディタクタレシピ(Oracle管理)がDefualtで指定されています。インスタンスセキュリティとレスポンダを利用するのであればここで追加指定してください。

有効化したらハンバーガーアイコン(ナビゲーションメニュー)より[アイデンティティとセキュリティ]-[クラウド・ガード]より概要画面が現れます。

![スクリーンショット 2024-09-12 10.49.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/b7a8107a-62a4-1ff3-98ab-0e412e46172d.png)

## ２.基本構成
通常Oracle管理レシピを変更カストマイズすることはないので、まずOracle管理レシピをコピーしてユーザー管理レシピを作成します。

### レシピのクローン作成
Cloud Gurad概要画面の左メニューより[レシピ]ー[ディテクタ・レシピ]でディテクタ・レシピの一覧が現れるので、「クローンボタン」を押し、ディテクタ・レシピのクローニング画面で、(「ターゲット名のクローニング」に)コピー元のOracle管理レシピを選択して、新規に作成するユーザー管理レシピの名前を入力してクローンボタンを押します。ここではOCI Configuration Detector Recipe (Oracle管理)のクローンを作成します。
![スクリーンショット 2024-09-12 16.48.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/da894787-b96a-3609-5ed8-a15b0d2ae58c.png)

同様にCloud概要画面より[レシピ]ー[レスポンダ・レシピ]を選択すればレスポンダの一覧が現れるので「クローンボタン」を押し上記と同様の手順で、OCI Responder Recipe (Oracle管理)のクローンを作成します。
![スクリーンショット 2024-09-12 16.50.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/3fa284ef-d676-1196-136b-12bf70b573fa.png)

*ユーザー管理レシピとクローン元のOracle管理レシピは同期します、Oracle管理レシピに変更・追加があった場合はクローン先のユーザー管理レシピに反映されます。ただし、新規ルールが追加された場合は最初は無効化されているので、必要に応じて有効化してください。

### レシピ・ルール変更
上記で作成したユーザー管理レシピのルール変更を行います。お客様固有のSecurity Policy/Ruleに合わせてルールの有効化/無効化及び入力設定を行います。

クラウド・ガードの概要画面の左にあるメニューよりレシピを選択、変更の必要のあるユーザー管理構成レシピを選択するとレシピ詳細画面が現れます。ここではディテクタ・ルールから"Database system patch is not applied"を選択して編集を押します。

![スクリーンショット 2024-12-06 11.32.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/1631862e-0401-67bc-910f-ac655a4b298e.png)

下記画面でステータス、リスクレベル、入力設定を変更できます。
DBパッチを４半期毎に適用する運用ルールになっていれば、10日を90日に変更します。

![スクリーンショット 2024-12-06 11.20.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/71a7e5b8-90aa-317d-076d-17869e4bc955.png)

当画面で条件グループも指定できますが、後ほど「アラートされた問題の対応」のところで説明します。

### レシピの構成
次に編集したユーザー管理レシピを実際利用するためにターゲット構成に追加します。
[クラウド・ガード]-[構成]-[ターゲット]を選択すると、有効化の時指定したターゲット名、コンパートメント名が現れるのでターゲット名をクリック、
![スクリーンショット 2024-09-13 10.05.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/99c3705b-340a-e3dd-0b24-e17957aa3b25.png)

構成画面にデフォルトのOracle管理のディテクタ・レシピ３つとレスポンダ・レシピ１つが表示されます。ここではOracle管理のレシピを上記でクローン作成したユーザー管理レシピに置き換えていきます。
![スクリーンショット 2024-09-12 16.46.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/78eacb93-fdd4-9094-6e99-0e2962d341fa.png)

まずレシピ一覧画面よりコピー元のOracle管理レシピを選択して削除、ここではOCI Configuration Detector Recipe (Oracle管理)を削除
![スクリーンショット 2024-09-13 10.30.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/80d8914a-3c42-93a1-d0f8-4e4757cbb04a.png)

![スクリーンショット 2024-09-13 10.33.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/22cbe182-a0e1-5a38-3754-8cfff38a68e6.png)
元のレシピ一覧画面に戻ったあと、レシピの追加ボタンを押し上記で作成したユーザー管理レシピを指定
![スクリーンショット 2024-09-13 10.35.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/e6096039-5a31-5ce9-6697-901bdce7894e.png)

構成ディテクター以外のユーザー管理レシピも同様にターゲット構成に追加します。ここまでで、Cloud Guradの基本構成の設定は完了です。

## ３.問題の対応
Cloud Guardの有効化、基本構成の完了まで済ませればディテクターレシピのルールに違反した問題がすでに上がってきているはずです。次にこれら問題の代表的な対応方法を紹介します。

[アラート]ー[問題]を選択すると問題の一覧ページが現れます。問題名、リスクレベル、デイテクタタイプ、リソース等が表示されています。赤枠で囲った３つの問題の処理対応を見ていきます。

1.Local user authenticated without MFA
手動にて修正対応

2.Instance has a public IP address
外部公開サーバー等個別のセキュリティ要件により今後当問題があがらないように、ディテクターレシピの除外条件(リソースID)を指定

3.Instance is publicly accessible
外部公開サーバー等個別のセキュリティ要件により今後当問題があがらないように、ディテクターレシピの除外条件(tag)を指定

![スクリーンショット 2024-09-12 14.46.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/3ce6fbab-6b51-f84a-35d5-53d475237f68.png)

### [1]Local user authenticated without MFA(手動による修正対応)  
問題の一覧ページよりLocal user authenticated without MFAを選択すると、問題の詳細画面が見れ、「さらに学ぶボタン」を押すと、OCI DOCの該当ページにとび推奨事項、背景、対応コンプラインス(CIS,PCI,MITRE)の番号がわかります。
![スクリーンショット 2024-09-13 12.40.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/9906585c-7c50-418f-b61c-a4eebeceae1e.png)

![スクリーンショット 2024-09-13 12.42.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/a45bc825-b203-d2e6-2393-ae202258824a.png)

対応方法として、Cloud Guard内で処理する方法と、通常のIAMの設定画面から変更する方法の２つあります。Cloud Guard内で処理するのであれば、問題の詳細画面の上部にある修正ボタンを押した後に、Disable UserかDelete Userを選択して、CloudGuard ServiceにIAM設定の変更権限を与えるPolicy作成を求めるボタンが現れるので許可するとPolicyが追加されます、その後確認ボタンを押すと、該当ユーザーが実際に非活動化(Disable User)もしくは削除(Delete User)されることになります。MFAの有効化をするわけではないのでご注意ください。MFAの有効化をするのであれば、通常のIAM設定画面からの変更になりますが、ここでは手順は省略します。MFAの有効化後、問題の詳細画面より「解決済みとしてマーク」のボタンを押すと下記画面が出るのでコメント入力後ボタンを押します。
![スクリーンショット 2024-09-13 12.48.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/e6847f99-52be-b14e-fce9-a2dd6858aa28.png)

問題の一覧画面に戻り左のステータスをオープンから解決済みに変更して確認できます。Cloud Guard内で修正した場合は、自動的にステータスを変更してくれるのでこの処理は不要です。

![スクリーンショット 2024-09-13 12.52.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/9e6db3ed-0836-18eb-cbc5-1af1e4c00006.png)

"解決済みとしてマーク"はCloud Guardのステータスの変更をするだけなので、実際に修正が正しく行われていない場合は、次回のチェツク時に再度問題がオープンされることになります。終了にマークした場合は、問題自体が解決されていなくても再度オープンされることはありません。この場合でもステータスをオープンに戻すことは可能です。

### [2]Instance has a public IP address instance(ディテクターレシピでの除外条件:ocid設定)
問題の一覧ページよりInstance has a public IP address　instance をクリック、問題の詳細画面の一般情報の中のリソース名をクリックするとリソース・エクスプローラに遷移するので該当リソースのocidをのちほど使用するのでノートなどに控えておきます。
![スクリーンショット 2024-09-12 14.47.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/53f7cb4a-7fcc-6d24-642a-2391c37df366.png)

[レシピ]ー[ディテクタ・レシピ]の一覧画面から上記でクローン作成したユーザー管理レシピを選択、ディテクタ・ルールの一覧から
Instance has a public IP address　instanceを選択して右クリックして編集を選択
![スクリーンショット 2024-09-12 14.54.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/9b4d680d-d331-8821-0c42-102cf217956f.png)

ディテクタ・ルールの編集の画面が現れるので、条件グループのところでパラメータ:Instance OCID、演算子:Not in、リスト:カスタムリスト、値:上記でメモしたリソースのocidをそれぞれ指定して保存する。
![スクリーンショット 2024-09-12 14.55.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/85fd1797-26c2-dc62-e7ad-83fff8204aa7.png)

問題の詳細画面に戻り解決済みとしてマークします。
![スクリーンショット 2024-09-12 16.00.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/ef9ebeb7-cf87-ab4f-9844-4684b270a740.png)

これで今後該当のサーバーについては問題があがらないようになります。

![スクリーンショット 2024-09-12 16.04.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/15802de2-c5ac-df3b-bce8-5c1b1088e9b5.png)

### [3]Instance is publicly accessible(ディテクターレシピでの除外条件:Tag設定)

(1)準備:タグの作成
[ガバナンスと管理]ー[テナンシ管理]ー[タグ・ネームスペース]
Create Tag Namespaceのボタンを押す
![スクリーンショット 2024-09-12 14.57.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/5e2388eb-a686-0c56-8a5c-05eafd12ba81.png)

ネームスペース定義の作成画面
ネームスペース定義名を入力してボタン
![スクリーンショット 2024-09-12 14.58.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/b445ae29-a794-7a3d-a7e5-8b389f9c4147.png)

作成したネームスペースの詳細画面、タグ・キー定義の作成を押す
![スクリーンショット 2024-09-12 14.58.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/ea60c8e4-6f79-df92-2b05-d97dd0304fde.png)

タグ・キー定義の作成画面、
タグ・キー、タグ値のタイプ:値のリストを選択、値にはON、OFFを入力
![スクリーンショット 2024-09-12 15.00.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/64f34612-6d29-85a6-af57-073846deb84f.png)

タグ・キー定義の詳細画面で確認できる
![スクリーンショット 2024-09-12 15.01.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/f3a10cc5-533d-fe1b-1ce2-94798868c651.png)

(2)該当リソースのタグ付け

問題の一覧画面よりInstance is publicly accessibleをクリックして
問題の詳細画面に遷移する。一般情報にあるリソース名をクリックするとリソース・エクスプローラに遷移するので該当のリソース名をクリックする
![スクリーンショット 2024-09-12 15.47.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/95d76579-abbe-3577-37d7-5ca674cf52b1.png)

コンピュートインスタンスインスタンスの詳細が現れる、More actionsよりadd tagsを選択する
![スクリーンショット 2024-09-12 15.50.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/8847d95d-1ed5-35f9-2576-e9507d070493.png)

Add tagsを選択する画面で、上記の準備で作成したTag namespace, Tag Key, Tag Valueをそれぞれ入力
![スクリーンショット 2024-09-12 15.51.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/fc7206ec-657e-be2d-81c6-377b6dbd934d.png)

インスタンスの詳細画面に戻りタグのタブでTag付けされていることを確認
![スクリーンショット 2024-09-12 15.51.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/577c585f-0a17-cc35-9fe2-366f5f08cba2.png)

(3)Detector Recipeの修正
[レシピ]ー[ディテクタ・レシピ]の一覧画面から上記で作成したユーザー管理レシピ
を選択、ディテクタ・ルールの一覧から
Instance is publicly accessibleを選択して右クリックして編集を選択
![スクリーンショット 2024-09-12 15.54.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/22cf1fbb-3fd3-776a-df6b-3fea73836f51.png)

ディテクタ・ルールの編集の画面が現れるので、条件グループのところでパラメータ:Tags、演算子:Not in、リスト:カスタムリストを指定して値の右側にあるタグの選択ボタンを押す。
![スクリーンショット 2024-09-12 15.55.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/cf1ca8d3-2a4f-bdad-b069-c3de9e2670b9.png)

タグの選択画面が現れるのでネームスペース、キー、値を指定する
![スクリーンショット 2024-09-12 15.55.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/737f2177-c791-7a82-f68c-4ea2fc886daf.png)

ディテクタ・ルールの編集画面に戻り、値に正しく入力されたことを確認して保存する。
![スクリーンショット 2024-09-12 15.56.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/eb771f6a-1de6-4b4b-c62a-62e460faf44e.png)

問題の一覧画面に戻り解決済みとしてマークします。
![スクリーンショット 2024-09-12 15.59.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/23130367-6e4b-bf58-aeed-e13de72dcb2a.png)

これで今後該当のサーバーについては問題があがらないようになります。
![スクリーンショット 2024-09-12 16.04.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/15802de2-c5ac-df3b-bce8-5c1b1088e9b5.png)

## ４.問題の通知について
問題の通知に関しては過検知やノイズの煩わしさを避けるため、上記３で記述した問題~レシピ変更を問題毎に実施してレシピ内容が安定したのちに、通知設定することをお勧めします。この場合も最初はcriticalな問題のみEventであげるようにしてください。ここではイベント及び通知(トピックとサブスクリプション)を設定することになりますが手順に関しては下記リンクを参考ください。

https://qiita.com/rodeeeen/items/5e16710d282aca156733

## ５.問題の自動修正(SOAR)　     
Cloud GuardのSOAR(Security Orchestration Automation and Response）の設定方法を見ていきます。Responderレシピの設定より自動修正が可能になります。

Cloud Guardの概要画面から[レシピ]ー[レスポンダ・レシピ]からでは自動修正の設定は行えません。[構成]ー[ターゲット]で対象のターゲット名をクリックしてユーザー管理のレスポンダ・レシピを選択、レスポンダ・ルールの一覧が現れ、NOTIFICATION(通知)及びREMEDATION(修正)タイプのレスポンダ・ルールが表示されます、Make Bucket Privateを右クリックして編集
![スクリーンショット 2024-09-12 16.05.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/5e3f1804-f0e3-0c17-5307-945615440a35.png)

レスポンダ・ルールの編集画面になるので、必須のポリシー・ステートメントで追加ボタンを押し設定のところで自動的に実行を選択、自動的な実行の確認にチェックを入れます。条件グループの指定が必要になり、ここではResource IDに該当のObject Storage Backetのocidを入力して保存します。
![スクリーンショット 2024-09-13 17.04.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/5a88e6e3-8d60-e4ab-bc6a-5bafa1e3d931.png)

Cloud Guardの概要画面から[レシピ]ー[ディテクタ・レシピ]にて利用中の構成ディテクタ・レシピを選択してディテクタ・ルール一覧から、Bucket is publicのルールの関連付けられたレスポンダがMake Bucket Privateであることが確認できます。これで、Object StorageのBucketがPublicアドレスに設定されたら,Cloud Guardが検知して自動的にPrivateに変更されるようになります。
![スクリーンショット 2024-09-12 16.28.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3849840/4222f0c8-51a8-40bc-1dcf-691503753dd0.png)

# CLI/APIの利用方法

よく使われるCLIコマンドは以下の４つです。

1.問題の一覧表示
    oci cloud-guard problem list　--compartment-id
 
2.問題の詳細表示
    oci cloud-guard problem get --problem-id

3.構成さているDetecorレシピ表示
    oci cloud-guard target-detector-recipe list --compartment-id

4.レシピのルール一覧照会
    oci cloud-guard detector-recipe-detector-rule list　--detector-recipe-id 

コマンド・サンプルと実行結果を記載します。

### 問題に関して

GUI画面では過去3ヶ月までしか表示されませんが、CLIを使えば過去6ヶ月までの問題一覧の取得が可能です。(2024/12現在：画面からでも過去6ヶ月まで見れるようになりました）
```
$oci cloud-guard problem list --compartment-id ocid1.tenancy.oc1..aaaaaaaa********** --access-level ACCESSIBLE --compartment-id-in-subtree TRUE --all
```
{
  "data": {
    "items": [
      {
        "compartment-id": "ocid1.compartment.oc1..aaaaaaaa**********",
        "detector-id": "IAAS_CONFIGURATION_DETECTOR",
        "detector-rule-id": "INSTANCE_WITH_PUBLIC_IP",
        "id": "ocid1.cloudguardproblem.oc1.ap-tokyo-1.amaaaaaanyabxs2qrnlyzht6gbuy4gds5p5mfm5nu7xyilt5nkwmvqudcnoa",
        "labels": [
          "CIS_OCI_V1.0_NETWORK",
          "COMPUTE",
          "CIS_OCI_V1.1_NETWORK"
        ],
        "lifecycle-detail": "OPEN",
        "lifecycle-state": "ACTIVE",
        "locks": null,
        "region": "ap-tokyo-1",
        "regions": [
          "ap-tokyo-1"
        ],
        "resource-id": "ocid1.instance.oc1.ap-tokyo-1.anxhiljrnyabxsycmjy2z2kkczrvy6gvymx5hisnjzyeohtbw6gi6yrhva2a",
        "resource-name": "discovery-instance-20240601-1143",
        "resource-type": "Instance",
        "risk-level": "HIGH",
        "risk-score": null,
        "target-id": "ocid1.cloudguardtarget.oc1.ap-tokyo-1.amaaaaaanyabxsyadzaicdohxopgdi3pteyqy25nnow4gejlqme4lm3erhsq",
        "time-first-detected": "2024-12-02T03:35:35.071000+00:00",
        "time-last-detected": "2024-12-04T03:40:01.500000+00:00"
      },
以下省略

それぞれ検知された問題がどのDetector ruleに違反したかがわかります。上記結果は"IAAS_CONFIGURATION_DETECTOR"のレシピの
"INSTANCE_WITH_PUBLIC_IP"の問題です。

さらに問題の詳細情報を取得するには、上記の結果よりidを取得して、下記の通り--problem-idに指定することになります。

```
oci cloud-guard problem get --problem-id ocid1.cloudguardproblem.oc1.ap-tokyo-1.amaaaaaanyabxs2qrnlyzht6gbuy4gds5p5mfm5nu7xyilt5nkwmvqudcnoa
```
{
  "data": {
    "additional-details": {
      "Subnet Access Type and Public IPs": "[{\"subnetAccessType\":\"Public\",\"vnicPublicIp\":\"140.238.63.193\"}]",
      "vnicDetails": "[{\"vnicAttachmentId\":\"ocid1.vnicattachment.oc1.ap-tokyo-1.anxhiljrnyabxsycafbmgzdtndrbxb4kkey3zyxrdbauc2v6ejgalpyphq6a\",\"vnicAttachmentDisplayName\":null,\"vnicId\":\"ocid1.vnic.oc1.ap-tokyo-1.abxhiljrercp5dwydtnlf5h7dfcyhvgmodrqj5yv62wsgrcohvijejisn3la\",\"vnicDisplayName\":\"discovery-instance-20240601-1143\",\"vnicPublicIp\":\"140.238.63.193\"}]"
    },
    "auto-resolve-date": null,
    "comment": null,
    "compartment-id": "ocid1.compartment.oc1..aaaaaaaa6y4uxky3hgvglyzkhhwznlw7b55whohwnibe7sbw2rtvohxfyafa",
    "description": "Checks public IP only",
    "detector-id": "IAAS_CONFIGURATION_DETECTOR",
    "detector-rule-id": "INSTANCE_WITH_PUBLIC_IP",
    "id": "ocid1.cloudguardproblem.oc1.ap-tokyo-1.amaaaaaanyabxs2qrnlyzht6gbuy4gds5p5mfm5nu7xyilt5nkwmvqudcnoa",
    "impacted-resource-id": null,
    "impacted-resource-name": null,
    "impacted-resource-type": null,
    "labels": [
      "CIS_OCI_V1.0_NETWORK",
      "COMPUTE",
      "CIS_OCI_V1.1_NETWORK"
    ],
    "lifecycle-detail": "OPEN",
    "lifecycle-state": "ACTIVE",
    "locks": null,
    "peak-risk-score": null,
    "peak-risk-score-date": null,
    "peak-risk-score-lookup-period-in-days": 14,
    "recommendation": "Carefully consider allowing internet access to any instances. For example, you do not want to accidentally allow internet access to sensitive database instances.",
    "region": "ap-tokyo-1",
    "regions": [
      "ap-tokyo-1"
    ],
    "resource-id": "ocid1.instance.oc1.ap-tokyo-1.anxhiljrnyabxsycmjy2z2kkczrvy6gvymx5hisnjzyeohtbw6gi6yrhva2a",
    "resource-name": "discovery-instance-20240601-1143",
    "resource-type": "Instance",
    "risk-level": "HIGH",
    "risk-score": null,
    "target-id": "ocid1.cloudguardtarget.oc1.ap-tokyo-1.amaaaaaanyabxsyadzaicdohxopgdi3pteyqy25nnow4gejlqme4lm3erhsq",
    "time-first-detected": "2024-12-02T03:35:35.071000+00:00",
    "time-last-detected": "2024-12-04T03:40:01.500000+00:00"
  },
  "etag": "54d91dd111adc4e65f91b77636ae0e63861d6decdee77a2fbebd1484325e272b--gzip"
}
"resource-name"に検知対象インスタンス名、またadditional-detailsにPublic IPアドレスの情報が取れます。

### 構成情報に関して

構成されたDetectorレシピの一覧を取得します。
compartment-idに対象となるTenancyのルートcompartmentを指定します。

```
oci cloud-guard target-detector-recipe list --compartment-id ocid1.tenancy.oc1..aaaaaaaa******** --target-id ocid1.cloudguardtarget.oc1.ap-tokyo-1.amaaaaaanyabxsyadzaicdohxopgdi3pteyqy25nnow4gejlqme4lm3erhsq
```

{
  "data": {
    "items": [
      {
        "compartment-id": "ocid1.tenancy.oc1..aaaaaaaa**********",
        "description": "This is an Oracle managed Oracle Cloud Infrastructure recipe with activity detector rules. To create your own recipe, clone an existing Oracle managed recipe from the root compartment",
        "detector": "IAAS_ACTIVITY_DETECTOR",
        "detector-recipe-id": "ocid1.cloudguarddetectorrecipe.oc1.ap-tokyo-1.amaaaaaanyabxs2qhrofz5atjizyy327dqtcmazlerjbgmqkwepeamayniea",
        "detector-recipe-type": "STANDARD",
        "display-name": "OCI Activity Detector Recipe",
        "id": "ocid1.cloudguarddetectorrecipe.oc1.ap-tokyo-1.amaaaaaanyabxs2qrhqlem4pabzzvw4pe6j765j5qenl26ol5cfnuwz7yscq",
        "lifecycle-details": null,
        "lifecycle-state": "ACTIVE",
        "locks": null,
        "owner": "ORACLE",
        "source-data-retention": null,
        "time-created": "2024-03-20T01:56:35.613000+00:00",
        "time-updated": "2024-03-20T01:56:35.613000+00:00"
      },
      {
        "compartment-id": "ocid1.tenancy.oc1..aaaaaaaa**********",
        "description": "This is an Oracle managed Oracle Cloud Infrastructure recipe with threat detector rules. To create your own recipe, clone an existing Oracle managed recipe from the root compartment",
        "detector": "IAAS_THREAT_DETECTOR",
        "detector-recipe-id": "ocid1.cloudguarddetectorrecipe.oc1.ap-tokyo-1.amaaaaaanyabxs2qtqmunx5t6nfxeiyw3ojqa4ffm4aqwiafyj5oicokv7ga",
        "detector-recipe-type": "STANDARD",
        "display-name": "OCI Threat Detector Recipe",
        "id": "ocid1.cloudguarddetectorrecipe.oc1.ap-tokyo-1.amaaaaaanyabxs2qxou3zmr32jfbsurxkyljrizd2oprcgvb7evpmm23unna",
        "lifecycle-details": null,
        "lifecycle-state": "ACTIVE",
        "locks": null,
        "owner": "ORACLE",
        "source-data-retention": 90,
        "time-created": "2024-09-03T05:20:40.477000+00:00",
        "time-updated": "2024-09-03T05:20:40.477000+00:00"
      },
      {
        "compartment-id": "ocid1.tenancy.oc1..aaaaaaaa***********",
        "description": null,
        "detector": "IAAS_CONFIGURATION_DETECTOR",
        "detector-recipe-id": "ocid1.cloudguarddetectorrecipe.oc1.ap-tokyo-1.amaaaaaanyabxsyaby7ghflsck4nlbf3uw6nkm5wm3ehqqy56pm2jjsr4f5a",
        "detector-recipe-type": "STANDARD",
        "display-name": "detrec",
        "id": "ocid1.cloudguarddetectorrecipe.oc1.ap-tokyo-1.amaaaaaanyabxs2qk6b3tplfrk4v2eziostpwajdmqt3f2cnbbboahoqjhuq",
        "lifecycle-details": null,
        "lifecycle-state": "ACTIVE",
        "locks": null,
        "owner": "CUSTOMER",
        "source-data-retention": null,
        "time-created": "2024-09-13T01:35:59.790000+00:00",
        "time-updated": "2024-09-13T01:35:59.790000+00:00"
      }
    ],
    "locks": null
  }
}
ここではDetectorレシピに "IAAS_ACTIVITY_DETECTOR",
"IAAS_THREAT_DETECTOR","IAAS_CONFIGURATION_DETECTOR",
の３つが構成されていることがわかります。次にレシピのルールの一覧を照会します。上記結果よりIAAS_CONFIGURATION_DETECTORのIDを取得して
下記コマンドの--detector-recipe-idに指定すればIAAS_CONFIGURATION_DETECTORのルールがわかります。

```
oci cloud-guard detector-recipe-detector-rule list --compartment-id ocid1.tenancy.oc1..aaaaaaaa********* --detector-recipe-id ocid1.cloudguarddetectorrecipe.oc1.ap-tokyo-1.amaaaaaanyabxsyaby7ghflsck4nlbf3uw6nkm5wm3ehqqy56pm2jjsr4f5a
```
{
  "data": {
    "items": [
      {
        "candidate-responder-rules": [],
        "data-source-id": null,
        "description": "Changing IAM API keys at least every 90 days is a security best practice. The longer that IAM credentials remain unchanged, the greater the risk that they can become compromised.",
        "detector": "IAAS_CONFIGURATION_DETECTOR",
        "detector-details": {
          "condition": null,
          "configurations": [
            {
              "allowed-values": [],
              "allowed-values-data-type": null,
              "config-key": "apiKeyTooOldConfig",
              "data-type": "int",
              "name": "Days",
              "value": "90",
              "values": null
            }
          ],
          "data-source-id": null,
          "description": "Changing IAM API keys at least every 90 days is a security best practice. The longer that IAM credentials remain unchanged, the greater the risk that they can become compromised.",
          "entities-mappings": null,
          "is-configuration-allowed": true,
          "is-enabled": true,
          "labels": [
            "CIS_OCI_V1.0_IAM",
            "CIS_OCI_V1.1_IAM"
          ],
          "problem-threshold": null,
          "recommendation": "Rotate API keys regularly, at least every 90 days.",
          "risk-level": "HIGH",
          "sighting-types": [],
          "target-types": []
        },
        "display-name": "API key is too old",
        "entities-mappings": null,
        "id": "API_KEY_TOO_OLD",
        "lifecycle-details": null,
        "lifecycle-state": null,
        "managed-list-types": [
          "RESOURCE_OCID"
        ],
        "recommendation": "Rotate API keys regularly, at least every 90 days.",
        "resource-type": "IAMKey",
        "service-type": "IAM",
        "time-created": "2024-09-03T07:07:21.473000+00:00",
        "time-updated": "2024-11-22T03:15:33.047000+00:00"
      },
以下省略

追加でCloud Guardのreport Regionを取得するのは下記コマンドになります。

```
oci cloud-guard configuration get --compartment-id ocid1.tenancy.oc1..aaaaaaaa******** --query 'data."reporting-region"'
```
"ap-tokyo-1"


# 参考文献
1.クラウド・ガード(Oracle Cloud Infrastructureドキュメント)
https://docs.oracle.com/ja-jp/iaas/cloud-guard/home.htm

2.クラウド・ガード リリースノート(https://docs.oracle.com/ja-jp/iaas/releasenotes/services/cloud-guard/)

3.クラウド・ガード CLI(https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.52.1/oci_cli_docs/cmdref/cloud-guard.html)

4.クラウド・ガード API(https://docs.oracle.com/en-us/iaas/api/#/en/cloud-guard/20200131/)