[CGPM]Agentless Workload Postureを試してみた
こんにちは、岩城です。
CGPMは、Cloud Guard Posture Managementの略称で昔はDome9と呼ばれていた、CheckPoint社が開発するCSPMソリューションです。
CSPMとは???という方は、以下をご確認ください。
CGPMの新機能として、Agentless Workload Posture(以下、AWP)が追加されましたので試してみました。
AWPとは
EC2インスタンスにエージェントをインストールすることなく、脆弱性、シークレット、マルウェアのスキャンを24時間に1回の頻度で継続的スキャンを行う機能です。
具体的には、EBSボリュームのスナップショットを作成し、専用のAWPスキャナーマシンでパッケージ、依存関係、ライブラリを静的スキャンします。
スキャンモードは2種類提供されており、専用のAWPスキャナーマシンによるスキャンをCGPMのAWSアカウントで起動するか、自身のAWSアカウントで起動するか選択できます。
前者はSaaSモード
、後者はIn Accountモード
と呼ばれています。
スキャンに用いるセキュリティデータベースは、CheckPoint社が独自に所有するものであり、現在のセキュリティトレンドに合わせて毎日更新されます。
スキャンが完了すると、CGPMのコンソールにEC2インスタンスのスキャン結果が表示され、脆弱性が検出されるとその修復方法も確認することができます。
次の節から、スキャンモードについて説明します。
SaaSモード
図:SaaSモードのアーキテクチャ(引用元)
SaaSモードは、スキャン対象のEC2インスタンスのEBSボリュームのスナップショットをユーザーのAWSアカウント内で作成し、CGPMのAWSアカウントにコピーした後スキャンされます。 このモードでは、CGPMのAWSアカウントでAWPスキャナーマシンが起動されるため、ユーザーはスキャンに関わるAWS利用料を支払う必要がありません。 一方でEBSボリュームのスナップショットを外部のAWSアカウントにコピーするため、機密情報の取り扱いには注意が必要です。 外部にコピーさせたくないニーズに対して、次のIn Accountモードが提供されています。
In Accountモード
In Accountモードは、ドキュメントに記載はありませんが、2023/02/20時点でアーリーアクセスな機能であり、GAされていません。 機能としては利用可能な状態にありますが、GAされていないことに注意してください。
なお、GAされていない機能であるため、本エントリでは詳細な機能確認は控えておきます。
図:In Accountモードのアーキテクチャ(引用元)
SaaSモードと違い、AWPスキャナーマシンをユーザーのAWSアカウント上で起動します。スキャン結果はCGPMへ連携されますが、EBSボリュームのスナップショットをコピーすることなくスキャン可能です。 ただし、AWPスキャナーマシンに関わるAWS利用料を追加で支払う必要があります。
想定問答集
その他、AWPについて疑問を持ちそうな観点を想定問答集として記載しておきます。
- ライセンス費は追加で発生するのか
- 追加のライセンス費は発生しません
- CGPMのライセンス費に内包されています
- スキャン対象の条件とは
- Linuxのみをサポートし、Windowsはサポートしません
- 起動中のEC2インスタンスのみをスキャンし、停止中のEC2インスタンスははスキャンされません
- AMI (Amazon Machine Image) には適用されません
- 明示的にスキャン対象外にするには
- EC2インスタンスのタグに
CG_AWP_SKIP_SCAN
を設定すると、起動中のインスタンスを対象外にできます
- EC2インスタンスのタグに
やってみた
SaaSモードでの機能確認をしていきます。
オンボーディング
前提として、CGPMとAWSアカウントは既に連携済みである必要があります。
その上で、CGPMのコンソールにある手順に沿って、Cloudformationにより関連リソースを作成します。
SaaSモード
を選択して、Create Cross Account Role
をクリックすると、Cloudformationのコンソールに遷移するのでスタックを作成します。
AWP関連リソースは、バージニアリージョンに存在することが前提なので、必ずバージニアリージョンで実行してください。
また、一見IAMロールの作成だけに見えますが、CloudWatch Logsのロググループ、Lambda関数、KMSキーが作成される点に注意してください。
これまでの手順に問題がなければ、AWPが有効化されます。
動作確認
パブリックインスタンス、プライベートインスタンス共にスキャンできること、CG_AWP_SKIP_SCAN
タグを付与したインスタンスはスキャン対象外となることを確認していきます。
EC2インスタンスを起動し、しばらく経つとCGPMに認識されスキャンされます。起動してからCGPMに認識されるまで体感で20分くらい掛かりました。
たとえば、パブリックインスタンスをクリックすると、OVERVIEWが表示され、リスクスコア、脆弱性の有無、脆弱性に対する是正アクションのレコメンドなどが表示されます。
EC2インスタンスに関する様々なセキュリティ情報を確認できるのですが、AWPの機能に関わる情報はOVERVIEWタブと脆弱性タブで確認します。脆弱性タブでは、CVEs、Threats、Secrets、Remediation Summaryを確認することができます。
CVEsでは、具体的にどのパッケージにどのくらいの脆弱性が存在するのか、パッケージのインストールパス、パッケージマネージャ、修正方法、依存関係を重要度順に表示をして確認することができます。
Treatsでは、悪意あるのあるURL、悪意のあるIP、マルウェアが見つかった場合に情報が表示されます。今回の検証では、単純にEC2インスタンスを起動しただけですので空欄でした。なお、ドキュメントに近日公開の機能と書いてありましたので、まだGAされていないものと思われます。
Secretsは、EC2インスタンス内で見つかったクレデンシャル情報が表示されます。今回の検証では、Session Managerを利用していますので、それらの情報が検出されていました。これらは問題ないので除外できるよ良さそうに思いましたが、今のところ除外機能はありませんでした。こちらも、ドキュメントに近日公開とありましたので、GAされていない機能だと思います。
Remediation Summaryでは、CVES、Treats、Secretsで検出された結果がまとめられると共に、修正情報が表示されます。
ここまで、パブリックインスタンスのスキャン結果を確認してきましたが、プライベートインスタンスであっても同様にスキャンできました。
スキャン中のスナップショット
スキャン時にEBSボリュームのスナップショットが取得されます。説明にCreate by AWP CloudGuard
の記載と、共有アカウントにCGPMがホストされているAWSアカウントIDの記載があり、CGPMに共有されていることがわかります。なお、このスナップショットはスキャンが完了しましたら、ごみ箱からも削除されますので残り続けることはありません。
インスタンスをスキャン対象外とする方法
EC2インスタンスにCG_AWP_SKIP_SCAN
タグを付与すると、スキャン対象外となります。AWPを有効化すると起動中のLinuxインスタンスがスキャンされますので、スキャンさせたくないインスタンスが決まっている場合は、AWP有効前にタグを付与して予め除外しておくことをおすすめします。
スキャン対象外の場合、スキャンステータスがSkipped
になってました。
おわりに
主にAWPのSaaSモード
利用について紹介しました。AWP利用のためにCGPMを導入するにはライセンス費の観点で難しいと思いますが、既にCGPMを利用しているユーザーはAWPを使用してみてはいかがでしょうか。2023/02/20時点ではSaaSモード
しかGAされていないため、機密情報が格納されているEC2インスタンスでの利用はご注意ください。
検証中に、Inspector V2との違いが気になりましたので、別エントリでまとめたいと思います。
本エントリがどなかたのお役に立てれば幸いです。
リファレンス
CloudGuard Administration Guide - Agentless Workload Posture