【Cortex Cloud】AWS接続時に作成される権限と用途

前回はCortex CloudとAWSの環境を接続してアラートを取得してみました。
今回はCortexCloudにAWSアカウントを接続したときにAWS側に作成される権限とその権限の差異について調査してみました。
この記事を見るとどういった権限が付与されて作成されたリソースがどのような用途に使われているのかがわかりますので、参考にしてみてください。

Cortex CloudにはVM(Virtual Machine)のスキャン方法が以下2種類あります。
・Cloud Scan
・Scan with Outpost
今回はCloud Scanを使用して権限の調査を行っています。
※Cortex Cloudとクラウド環境を接続後にスキャン方法は設定変更はできませんでした。

作成される権限に差異が出そうな2種類の設定を取り上げ、設定値を変更したときの権限の差異を調査しました。
今回差異を調査する2種類の設定値と説明は以下です。

設定値 説明
Additional Security Capabilities セキュリティアドオンを追加
Log Collection Configuration ログの収集方法の機能

今回作成される権限の一覧は以下公式ドキュメントから参照できます。
Cloud service provider permissions

機能がすべてオフのパターン

はじめに先ほど説明した2種類の設定をオフにした状態で権限どのようなものが作成されるのか確認します。

機能をすべてオフにしても以下機能はデフォルトで有効化されています。
・Discovery engine
・Cloud security posture management
・Cloud infrastructure entitlement management
・AI security posture management

まずは機能をすべてオフのパターンの新規作成をしていきます。
Settings > Data Sources > 右上の「Add Data Source」を押下します。

接続したいサービスを選択し、Connect Another Instanceを押下します。
今回はAWSを指定します。

「Additional Security Capabilities」「Log collection configuration」のチェックをすべて外します。
左下の「Save」を押下します。

以下画像の様に遷移したら「Automated」か「Manual」CloudFormationを実行します。
Automatedは「Excute in AWS」を押下するとログイン済みのAWSアカウントに遷移し、CloudFormationスタック作成画面に遷移します。
Manualは「Download CloudFormation」をダウンロードし手動でCloudFormationスタックを作成します。
※どちらを選択しても作成される権限に違いはありません。

作成後、以下権限とリソースが作成されます
なおリソース名に含まれる CortexCloudProject ID とはCortex Cloudのテナント識別番号を表しています。

AWSサービス名 CFn内の名前 リソース名 用途
IAMPolicy
CortexDISCOVERYPolicy
arn:aws:iam::{アカウントID}:policy/Cortex-DISCOVERY-Policy-m-a-{CortexCloudProject ID}

AWS環境のリソース情報を取得する機能用(Discovery Engine)のIAMポリシー

このポリシーの権限は以下です。
・CloudWatch: 読み取り
・ComprehendMedical: 読み取り
・Connect Outbound Campaigns: リスト、読み取り
・Control Tower: フルアクセス
・Direct Connect: フルアクセス
・Directory Service: リスト、読み取り
・Forecast: 読み取り
・Glue: フルアクセス
・Lake Formation: フルアクセス
・MemoryDB: 読み取り
・WorkSpaces: フルアクセス

 
IAMRole
CortexPlatformRole
CortexPlatformRole-m-a-{CortexCloudProject ID}

AWS環境のリソース情報を取得する機能(Discovery Engine)がAssumeRoleするためのロール

この許可ポリシーは以下です。
・AmazonMemoryDBReadOnlyAccess
・AmazonSQSReadOnlyAccess
・AWSOrganizationsReadOnlyAccess
・CortexDISCOVERYPolicy
・ReadOnlyAccess
・SecurityAudit

IAMRole
CortexTemplateCustom
LambdaExecutionRole
{CFnスタック名}-{数字}-CortexTemplateCustomLambd-{ランダム英数字}

AWS Lambda関数が実行されるために最低限必要な権限です。

以下許可ポリシーです。
・AWSLambdaBasicExecutionRole

Lambda
Function
CortexTemplateCustom
LambdaFunction
{CFnスタック名}-{数字}-CortexTemplateCustomLamb-{ランダム英数字}

CloudFormationの作成/更新/削除時に呼び出されます。

このLambdaには以下機能があります。
・CloudFormationで作成したCortex Cloudのリソースが正常に作成されたことをCortex Cloudに送信するLambda関数です。

・Cortex Cloudに認証情報を渡し、今後AssumeRoleで継続的にリソースの状態を監視できるようにする
・カスタムリソースで呼び出されたLambda関数処理が成功したか失敗したかをCloudFormationに伝える
Custom
Resource
MyCustomResource
{yyyy}/{mm}/{dd}/[$LATEST]{英数字}

Cortex Cloudにスタックの作成/更新/削除時にCortexTemplateCustomLambdaFunctionを呼び出すカスタムリソースです。

以下の機能があります。

・Cortex Cloudの継続的なリソースの監視に必要な認証情報やリソースの情報を渡す

Additional Security Capabilitiesで作成される権限と用途

「Additional Security Capabilities」のチェックリストの機能ごとに作成される権限を確認していきます。
※チェックリスト機能がすべてオフのパターンからの更新を行って比較しています。

以下機能名とその用途です。

機能名 用途
XSIAM analytics エンドポイントのデータを分析して異常や悪意のある動作が検出された場合に、アラートを発します。
Data security posture management エージェントレスのデータセキュリティスキャナーで、機密データを発見、分類、保護、管理することができます。
Registry scanning レジストリイメージをスキャンし、脆弱性、マルウェア、機密情報を検出することができます。
Serverless functions scanning サーバーレススキャンを導入し、サーバーレス関数内の脆弱性を検出・修正します。
CI/CDパイプラインに統合することで、セキュリティスキャンが自動化されます。
Automation 事前に設定された連携機能とコマンドのリストを使い、セキュリティインシデントへの対応を自動化します。
コマンドは、問題修正のために個別に実行したり、カスタムプレイブックに組み込んで使用したりすることが可能です。
Agentless disk scanning (推奨) エージェントレスのディスクスキャンを導入し、開発ライフサイクル中に脆弱性をリモートで検出・修正します。

XSIAM analyticsにチェックを入れるパターン

「Additional Security Capabilities」のXSIAM analyticsにチェックを入れるパターンですが、機能がすべてオフのパターンから変更点はありませんでした。
※左下の「Save」を押下するとそのままCloudformationのダウンロード画面に行かず保存が完了します。

Data security posture managementにチェックを入れるパターン

次はData Security posture management(DSPM)にチェックを入れます。
左下の「Save」を押下します。

遷移したら「Download CloudFormation」を押下し、Yaml形式のCloudFormationテンプレートファイルをダウンロードします。
AWSに移動し、既存のCloudformationを更新します。

何もチェックを入れないパターンから追加されたの権限と用途は以下です。

更新内容 AWSサービス名 CFn内の名前 リソース名 用途
新規追加
IAMPolicy
CortexDSPMPolicy
arn:aws:iam::{アカウントID}:policy/Cortex-DSPM-Policy-m-a-{CortexCloudProject ID}
DSPM用のIAMポリシー

以下許可されている権限です。
・CloudWatch: 読み取り
・DynamoDB: 読み取り
・IAM: 読み取り
・KMS: 許可の管理, 読み取り, 書き込み
・RDS: リスト(制限あり),読み取り, 書き込み, タグ付け
・Redshift: リスト, 許可の管理, 読み取り, 書き込み, タグ付け
・Redshift Serverless: 読み取り, 書き込み
・S3: リスト, 許可の管理, 読み取り, 書き込み, タグ付け

 

設定値変更
IAMRole
CortexPlatformRole
CortexPlatformRole-m-a-{CortexCloudProject ID}
AWS環境のリソース情報を取得する機能(Discovery Engine)がAssumeRoleするためのロール

以下許可ポリシーが追加になりました。
・CortexDSPMPolicy

新規追加
IAMRole
CortexPlatformScannerRole
CortexPlatformScannerRole-m-a-{CortexCloudProject ID}
Cortex CloudのAWS環境にAssumeRoleするためのロール

許可ポリシーは以下です。
・AmazonMemoryDBReadOnlyAccess
・Cortex-DSPM-Scanner-Policy
・ReadOnlyAccess

Registry scanning にチェックを入れるパターン

Registry scanningにチェックを入れます。左下の「Save」を押下します。

遷移したら「Download CloudFormation」を押下し、Yaml形式のCloudFormationテンプレートファイルをダウンロードします。
AWSに移動し、既存のCloudformationを更新します。

何もチェックを入れないパターンから追加されたの権限と用途は以下です。

更新内容 AWSサービス名 CFn内の名前 リソース名 用途
新規追加
IAMRole
CortexPlatformScannerRole
CortexPlatformScannerRole-m-a-{CortexCloudProject ID}
Cortex CloudのAWS環境にAssumeRoleするためのロール

以下許可ポリシーです。
・AmazonMemoryDBReadOnlyAccess
・ECRAccessPolicy
・ReadOnlyAccess

新規追加
IAMPolicy
ECRAccessPolicy
ECRAccessPolicy
CortexPlatformScannerRoleにアタッチする用のポリシーロールです。

以下権限がこのポリシーに付与されています。
・ECR: 読み取り

Serverless scanningにチェックを入れるパターン

Serverless scanningにチェックを入れます。
左下の「Save」を押下します。

遷移したら「Download CloudFormation」を押下し、Yaml形式のCloudFormationテンプレートファイルをダウンロードします。
AWSに移動し、既存のCloudformationを更新します。

何もチェックを入れないパターンから追加されたの権限と用途は以下です。

更新内容 AWSサービス名 CFn内の名前 リソース名 用途
新規追加
IAMRole
CortexPlatformScannerRole
CortexPlatformScannerRole-m-a-{CortexCloudProject ID}
Cortex CloudのAWS環境にAssumeRoleするためのロール

以下許可ポリシーです。
・AmazonMemoryDBReadOnlyAccess
・LAMBDAAccessPolicy
・ReadOnlyAccess

新規追加
IAMPolicy
LAMBDAAccessPolicy
LAMBDAAccessPolicy
CortexPlatformScannerRoleにアタッチする用のポリシーロールです。

以下権限がこのポリシーに付与されています。
・Lambda: 読み取り
・IAM: 読み取り

Automationにチェックを入れるパターン

Automationにチェックを入れます。
左下の「Save」を押下します。

遷移したら「Download CloudFormation」を押下し、Yaml形式のCloudFormationテンプレートファイルをダウンロードします。
AWSに移動し、既存のCloudformationを更新します。

何もチェックを入れないパターンから追加されたの権限と用途は以下です。

変更内容 AWSサービス名 CFn内の名前 リソース名 用途
新規追加
IAMPolicy
CortexAutomationPolicy
arn:aws:iam::{アカウントID}:policy/Cortex-Automation-Policy-m-a-{CortexCloudProject ID}
CortexPlatformRoleにアタッチするためのポリシー

以下ポリシーの権限です。
・Certificate Manager: 書き込み
・CloudTrail: 読み取り, 書き込み
・Cost Explorer Service: 読み取り
・EC2: リスト, 許可の管理, 読み取り, 書き込み, タグ付け
・EKS: 読み取り, 書き込み
・Elastic Container Service: 書き込み
・ELB: 書き込み
・ELB v2: 書き込み
・IAM: 許可の管理, 読み取り, 書き込み
・KMS: 許可の管理, 読み取り, 書き込み
・Lambda: 読み取り, 書き込み
・RDS: 書き込み, タグ付け
・S3: 許可の管理, 読み取り, 書き込み
・Secrets Manager: 書き込み, タグ付け
設定値変更
IAMRole
CortexPlatformRole
CortexPlatformRole-m-a-{CortexCloudProject ID}
AWS環境のリソース情報を取得する機能(Discovery Engine)がAssumeRoleするためのロール

以下が許可ポリシーに追加されています。
・CortexAutomationPolicy

Agentless disk scanningにチェックを入れるパターン

Agentless disk scanning(ADS)にチェックを入れます。
左下の「Save」を押下します。

遷移したら「Download CloudFormation」を押下し、Yaml形式のCloudFormationテンプレートファイルをダウンロードします。
AWSに移動し、既存のCloudformationを更新します。

何もチェックを入れないパターンから追加されたの権限と用途は以下です。

変更内容 AWSサービス名 CFn内の名前 リソース名 用途
新規追加
IAMPolicy
CortexADSPolicy
arn:aws:iam::{アカウントID}:policy/Cortex-ADS-Policy-m-a-{CortexCloudProject ID}
CortexPlatformRoleにアタッチするためのポリシー

以下ポリシーの権限です。
・EC2: リスト, 許可の管理, 書き込み, タグ付け
・KMS: 許可の管理, 読み取り, 書き込み

設定値変更
IAMRole
CortexPlatformRole
CortexPlatformRole-m-a-{CortexCloudProject ID}
AWS環境のリソース情報を取得する機能(Discovery Engine)がAssumeRoleするためのロール

以下が許可ポリシーに追加されています。
CortexADSPolicy

Log Collection Configurationで作成される権限と用途

次にLog Collection Configurationの各設定でどのような権限が作られるか確認していきます。
機能がすべてオフのパターンと比較していきます。

機能名 用途
Use Automated collection CloudTrailを使用して監査ログを収集することができます。
Collect data events (currently support lambda & S3) この設定でデータイベント(Lambda, S3)の収集も選択できます。
Custom (user defined) 既存のAmazon S3バケットやCloudTrailを使用してCloudTrailの監査ログを保存したい場合は、このオプションを選択します。
このオプションを選択する際、CloudFormationを実行する際に、CloudTrailに必要なS3バケット名、SNS ARN、そしてCloudTrailを暗号化する場合はKMS ARNを入力する必要があります。

Use Automated colletionのみオンのパターン

Log Collection ConfigurationのUse Automated colletionにチェックを入れます。
左下の「Save」を押下します。

遷移したら「Download CloudFormation」を押下し、Yaml形式のCloudFormationテンプレートファイルをダウンロードします。
AWSに移動し、既存のCloudformationを更新します。

何もチェックを入れないパターンから追加されたの権限と用途は以下です。

変更内容 AWSリソース名 CFn内の名前 リソース名 用途
新規追加
CloudTrail
CloudTrail
cortex-trail-{アカウントID}-m-a-{CortexCloudProject ID}
監査ログを記録し、S3(CloudTrailLogsBucket)に保管します。
ログを「CloudTrailSNSTopic」で作成されたSNSに送信します。
新規追加
KMS
CloudTrailKMSKey
{ランダムな英数字}
CloudTrailとS3を暗号化し、CloudTrailの監査ログを格納してあるS3バケットを復号するためのKMSキー
新規追加
S3
CloudTrailLogsBucket
cortex-ct-logs-{アカウントID}-m-a-{CortexCloudProject ID}
CloudTrailのログの記録を保存するS3バケット
新規追加
BucketPolicy
CloudTrailLogsBucket
Policy
cortex-ct-logs-{アカウントID}-m-a-{CortexCloudProject ID}
CloudTrail用のS3バケットのポリシー

このポリシーの権限は以下です。
・s3:PutObject
・s3:GetBucketAcl

新規追加
SQS
CloudTrailLogsQueue
https://sqs.ap-northeast-1.amazonaws.com/{アカウントID}/cortex-ct-logs-queue-{アカウントID}-m-a-{CortexCloudProject ID}

CloudTrailが出力した監査ログを受け取るSQS

CloudTrailがSNS経由で監査ログ情報を取得し、SQSに転送する。
新規追加
IAMRole
CloudTrailReadRole
cortex-logs-ingestion-access-m-a-{CortexCloudProject ID}

Cortex CloudがAssumeRoleするためのロール

許可ポリシーは以下です。
・CloudTrailReadAccessPolicy

信頼されたエンティティは以下です。
・sts:AssumeRoleWithWebIdentity

CloudTrailReadAccessPolicyには以下権限が許可されています。
・S3: 読み取り, リスト
・SQS: 読み取り, 書き込み
・KMS: 書き込み

新規追加
SNSTopic
CloudTrailSNSTopic
arn:aws:sns:ap-northeast-1:{アカウントID}:cortex-ct-logs-notification-{アカウントID}-m-a-{CortexCloudProject ID}
CloudTrailが新しいログファイルをS3 バケットに発行するときに通知を受け取る用のSNS
新規追加
SNSPolicy
CloudTrailSNSTopic
Policy
arn:aws:sns:ap-northeast-1:{アカウントID}:cortex-ct-logs-notification-{アカウントID}-m-a-{CortexCloudProject ID}
CloudTrail用のSNSトピックのアクセスポリシー
 
以下が許可されています。
・sns:Publish
新規追加
SNSSubscription
CloudTrailSNSTopic
Subscription
arn:aws:sns:ap-northeast-1:{アカウントID}:cortex-ct-logs-notification-{アカウントID}-m-a-{CortexCloudProject ID}:{ランダムな英数字}
CloudTrail用のSNSトピックサブスクリプション
新規追加
CustomResorce
EmptyBucketCustom
Resource
{yyyy}/{mm}/{dd}/[$LATEST]{英数字}
CloudFormation削除時にS3バケット(CloudTrailLogsBucket)の中身を空にするLambda(EmptyBucketLambda)を呼び出すカスタムリソース
※CloudFormation削除時にS3バケットが空でないとエラーがでるため
新規追加
Lambda
Function
EmptyBucketLambda
{CFnスタック名}-{yyyymmdd}-EmptyBucketLambda-{ランダムな英数字}
CloudFormation削除時にS3バケット(CloudTrailLogsBucket)を削除する用のLambdaを作成します。
新規追加
IAMRole
EmptyBucketLambda
ExecutionRole
{CFnスタック名}-{数字}-EmptyBucketLambdaExecutio-{ランダム英数字}
S3バケットの中身を削除するLambda関数用のIAMロール
IAMポリシー(EmptyS3BucketPolicy)がアタッチされています                     

アタッチされているロールの権限は以下です。

・S3: リスト、削除
新規追加 SNSPolicy
SNSPolicy
{CFnスタック名}-{yyyymmdd}-SNSPolicy-{ランダム英数字}

SQS送信するためのSNS用のポリシーです

以下権限が付与されています。
・SQS:SendMessage

Log Collection Configurationがオフなパターン

Log Collection Configurationをオフな時のパターンは機能が全部オフのパターンと同じなので権限などはそちらを参照ください。

Collect data eventsがオンのパターン

Log Collection ConfigurationがCollect data eventsのチェックをオンにしていきます。
※Use Automated colletionの追加機能のため比較対象はUse Automated colletionです。
左下の「Save」を押下します。

遷移したら「Download CloudFormation」を押下し、Yaml形式のCloudFormationテンプレートファイルをダウンロードします。
AWSに移動し、既存のCloudformationを更新します。

何もチェックを入れないパターンから追加されたの権限と用途は以下です。

変更内容 AWSリソース名 CFn内の名前 リソース名 用途
設定値修正
CloudTrail
CloudTrail
cortex-trail-{アカウントID}-m-a-{CortexCloudProject ID}
監査ログを記録し、S3(CloudTrailLogsBucket)に保管します。

ログを「CloudTrailSNSTopic」で作成されたSNSに送信します。

データイベントにS3とLambdaが追加されています。

 

Custom (user defined)がオンのパターン

Log Collection ConfigurationがCustom (user defined)のチェックがオンにして行っていきます。
左下の「Save」を押下します。

遷移したら「Download CloudFormation」を押下し、Yaml形式のCloudFormationテンプレートファイルをダウンロードします。
AWSに移動し、既存のCloudformationを更新します。

そうすると以下画像の様にパラメーターの更新が入ります。
CloudTrailに必要なKMSARN、LogBucketName、SNSARNの入力を求められるので入力します。
以下入力する必要があるパラメーターとその用途です。

パラメーター名 用途
CloudTrailKmsArn
CloudTrailの監査ログを格納してあるS3バケットを復号するためのKMSARNを指定します。 
CloudTrailの暗号化がされていない場合は入力の必要はありません。
CloudTrailLogsBucket
CloudTrailの監査ログを保存するためのS3バケット名を入力します。
CloudTrailSnsArn
ログを送信するためのSNSARNを入力します。
※SNSはFIFOではなくスタンダードで作成すること

AWSに移動し、既存のCloudformationを更新します。
何もチェックを入れないパターンから追加されたの権限と用途は以下です。

変更内容 AWSリソース名 タイプ リソース名 用途
新規追加
SQS
CloudTrailLogsQueue
cortex-trail-{アカウントID}-m-a-{CortexCloudProject ID}

Cortex CloudがCloudTrailが出した監査ログを受け取る用のSQS 

CloudTrailがSNS経由でログ情報を取得し、SQSに転送する。

このSQSはパラメーターで指定したSNSARNに紐づけられています。

 

新規追加
IAMRole
CloudTrailReadRole
 
cortex-logs-ingestion-access-m-a-{CortexCloudProject ID}

Cortex CloudがAssumeRoleするためのロール

許可ポリシーは以下です。
・CloudTrailReadAccessPolicy

信頼されたエンティティは以下です。
・sts:AssumeRoleWithWebIdentity

CloudTrailReadAccessPolicyには以下権限が許可されています。
・S3: 読み取り, リスト
・SQS: 読み取り, 書き込み
・KMS: 書き込み

新規追加
SNS
Subscription
CloudTrailSNSTopicSubscription
arn:aws:sns:ap-northeast-1:{アカウントID}:cortex-ct-logs-notification-{アカウントID}-m-a-{CortexCloudProject ID}:{ランダムな英数字}
CloudTrail用のSNSトピックサブスクリプション
新規追加
SNSPolicy
SNSPolicy
{CFnスタック名}-SNSPolicy-{ランダムな英数字}

SQS送信するためのSNS用のポリシーです

以下権限が付与されています。
・SQS:SendMessage

 

 

さいごに

今回はクラウド環境接続時に作成される権限やその権限のその用途について調査してみました。
色々な権限が追加されているのでどういった権限が作成され、動作しているかをわかっておくと、どの機能をオン/オフにするか検討しやすいかと思います。

弊社では、豊富な実績をもとにお客様の状況やご要件を丁寧にヒアリングしたうえで、お客様にとって最適なCortex Cloudの導入から設計支援、運用までをトータルでサポートしております。

「自社の環境にはどちらのスキャン方式が適しているのか」「導入後の運用に不安がある」など、Cortex Cloudについてお困りごとがございましたら、ぜひ弊社へお気軽にご相談ください。

【お問い合わせご相談窓口】
Email:cloud-security-tech@scsk.jp

×
タイトルとURLをコピーしました