AWS - CloudWatch Enum
CloudWatch
CloudWatchは、ログ/メトリクス/イベントの形式で監視および運用データを収集し、AWSリソース、アプリケーション、サービスの統合ビューを提供します。 CloudWatchログイベントは、各ログ行ごとに256KBのサイズ制限があります。 高解像度のアラームを設定したり、ログとメトリクスを並べて可視化したり、自動アクションを実行したり、問題をトラブルシューティングしたり、アプリケーションを最適化するための洞察を見つけたりできます。
例えば、CloudTrailからのログを監視できます。監視されるイベント:
セキュリティグループやNACLの変更
EC2インスタンスの起動、停止、再起動、終了
IAMおよびS3内のセキュリティポリシーの変更
AWS Management Consoleへの失敗したログイン試行
失敗した認証につながるAPI呼び出し
CloudWatchで検索するためのフィルタ: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html
キーコンセプト
名前空間
名前空間はCloudWatchメトリクスのコンテナです。メトリクスをカテゴリ別に分類し、分析しやすくするのに役立ちます。
例: EC2関連のメトリクスの場合はAWS/EC2、RDSメトリクスの場合はAWS/RDSなど。
メトリクス
メトリクスは時間の経過とともに収集されるデータポイントで、AWSリソースのパフォーマンスや利用状況を表します。メトリクスはAWSサービス、カスタムアプリケーション、サードパーティの統合から収集できます。
例: CPUUtilization、NetworkIn、DiskReadOps。
寸法
寸法はメトリクスの一部であるキーと値のペアです。メトリクスを一意に識別し、追加のコンテキストを提供し、メトリクスを特定の属性に基づいてフィルタリングおよび集計するのに役立ちます。メトリクスに関連付けられる寸法の最大数は30であり、統計も可能です。
例: EC2インスタンスの場合、寸法にはInstanceId、InstanceType、AvailabilityZoneなどが含まれる場合があります。
統計
統計は、メトリクスデータに対して行われる数学的な計算で、時間の経過とともにデータを要約します。一般的な統計には、平均、合計、最小値、最大値、サンプル数などがあります。
例: 1時間の間の平均CPU使用率を計算する。
単位
単位はメトリクスに関連付けられた計測タイプです。単位は、メトリクスデータにコンテキストと意味を提供するのに役立ちます。一般的な単位には、パーセント、バイト、秒、カウントなどがあります。
例: CPUUtilizationはパーセントで測定される場合がありますが、NetworkInはバイトで測定される場合があります。
CloudWatchの機能
ダッシュボード
CloudWatchダッシュボードは、AWS CloudWatchメトリクスのカスタマイズ可能なビューを提供します。さまざまなAWSサービスからの異なるメトリクスを組み合わせて、データを視覚化し、リソースを監視するためのダッシュボードを作成および構成できます。
主な機能:
ウィジェット: グラフ、テキスト、アラームなどのダッシュボードの構成要素。
カスタマイズ: レイアウトとコンテンツをカスタマイズして特定の監視ニーズに合わせることができます。
例のユースケース:
EC2インスタンス、RDSデータベース、S3バケットなど、AWS環境全体の主要メトリクスを表示する単一のダッシュボード。
メトリクストリームとメトリクデータ
AWS CloudWatchのメトリクストリームを使用すると、CloudWatchメトリクスを選択した宛先にリアルタイムに連続してストリーミングできます。これは、AWS外のツールを使用して高度な監視、分析、カスタムダッシュボードに特に役立ちます。
メトリクストリーム内のメトリクデータは、ストリーミングされている実際の測定値またはデータポイントを指します。これらのデータポイントは、AWSリソースのCPU使用率、メモリ使用量などのさまざまなメトリクスを表します。
例のユースケース:
サードパーティの監視サービスにリアルタイムメトリクスを送信して高度な分析を行う。
長期保存とコンプライアンスのためにAmazon S3バケットにメトリクスをアーカイブする。
アラーム
CloudWatchアラームは、事前に定義された閾値に基づいてメトリクスを監視し、アクションを実行します。メトリクスが閾値を超えると、アラームはSNS経由で通知を送信したり、自動スケーリングポリシーをトリガーしたり、AWS Lambda関数を実行したりすることができます。
主なコンポーネント:
閾値: アラームがトリガーされる値。
評価期間: データが評価される期間の数。
アラームに必要なデータポイント: アラームをトリガーするために必要な閾値に達した期間の数
アクション: アラーム状態がトリガーされたときの動作(SNS経由で通知など)。
例のユースケース:
EC2インスタンスのCPU使用率を監視し、連続して5分間80%を超える場合はSNS経由で通知を送信する。
異常検出器
異常検出器は、機械学習を使用してメトリクスの異常を自動的に検出します。異常検出を任意のCloudWatchメトリクスに適用して、通常のパターンからの逸脱を特定することができます。
主なコンポーネント:
モデルトレーニング: CloudWatchは、履歴データを使用してモデルをトレーニングし、正常な動作の見え方を確立します。
異常検出バンド: メトリクスの値の予想範囲の視覚的表現。
例のユースケース:
セキュリティ侵害やアプリケーションの問題を示す可能性があるEC2インスタンスの異常なCPU使用率パターンを検出する。
インサイトルールと管理されたインサイトルール
インサイトルールを使用すると、強力な数学的表現を使用して、メトリクデータ内のトレンド、スパイク、またはその他の興味深いパターンを特定し、アクションを実行すべき条件を定義できます。これらのルールを使用すると、リソースのパフォーマンスと利用状況における異常や異常な動作を特定できます。
管理されたインサイトルールは、AWSによって提供される事前構成のインサイトルールです。特定のAWSサービスや一般的なユースケースを監視するように設計されており、詳細な構成を必要とせずに有効にできます。
例のユースケース:
RDSパフォーマンスの監視: Amazon RDSのキーのパフォーマンスインジケーター(CPU使用率、メモリ使用量、ディスクI/Oなど)を監視するために管理されたインサイトルールを有効にします。これらのメトリクスのいずれかが安全な運用のしきい値を超える場合、ルールはアラートをトリガーするか、自動的な緩和アクションを起動できます。
CloudWatchログ
AWSサービス(CloudTrailを含む)およびアプリケーション/システムからのログを集約および監視することができます(ホストにCloudWatchエージェントをインストールすることも可能)。ログは無期限に保存され(ロググループの設定による)、エクスポートすることもできます。
要素:
ロググループ | 同じ保持、監視、アクセス制御設定を共有するログストリームのコレクション |
ログストリーム | 同じソースを共有するログイベントのシーケンス |
サブスクリプションフィルタ | 特定のロググループ内のイベントに一致するフィルタパターンを定義し、それらをKinesis Data Firehoseストリーム、Kinesisストリーム、またはLambda関数に送信します |
### CloudWatchモニタリング&イベント |
CloudWatch 基本 はデータを 5分ごと に集計します(詳細 なものは 1分ごと に行います)。集計後、アラームの閾値をチェックし、トリガーする必要があるかどうかを確認します。 その場合、CloudWatchはイベントを送信し、自動的なアクションを実行する準備ができています(AWS Lambda関数、SNSトピック、SQSキュー、Kinesis Streams)
エージェントのインストール
マシン/コンテナ内にエージェントをインストールして、ログを自動的にCloudWatchに送信できます。
ロール を作成し、CloudWatchがインスタンスからデータを収集する権限とAWSシステムマネージャSSMとのやり取りを許可する権限を持つ インスタンス に アタッチ します(CloudWatchAgentAdminPolicy&AmazonEC2RoleforSSM)
EC2インスタンスに エージェント を ダウンロード して インストール します(https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip)。EC2内からダウンロードするか、AWSシステムマネージャを使用してパッケージAWS-ConfigureAWSPackageを選択して自動的にインストールできます
CloudWatchエージェントを 構成 して 起動 します
ロググループには多くのストリームがあります。ストリームには多くのイベントがあります。そして、各ストリーム内では、イベントが順番に保証されています。
列挙
ポストエクスプロイテーション / バイパス
cloudwatch:DeleteAlarms
,cloudwatch:PutMetricAlarm
, cloudwatch:PutCompositeAlarm
cloudwatch:DeleteAlarms
,cloudwatch:PutMetricAlarm
, cloudwatch:PutCompositeAlarm
これらの権限を持つ攻撃者は、組織のモニタリングおよびアラートインフラを著しく損なう可能性があります。既存のアラームを削除することで、攻撃者は重要なアラートを無効にし、管理者に重要なパフォーマンスの問題、セキュリティ侵害、または運用上の障害を通知するアラートを無効にすることができます。さらに、メトリックアラームを作成または変更することで、攻撃者は管理者を誤解させることもでき、偽のアラートを出したり正当なアラートを無効にしたりして、悪意のある活動を隠し、実際のインシデントへの迅速な対応を妨げることができます。
さらに、cloudwatch:PutCompositeAlarm
権限を持つ攻撃者は、コンポジットアラームAがコンポジットアラームBに依存し、コンポジットアラームBもコンポジットアラームAに依存するコンポジットアラームのループやサイクルを作成できます。このシナリオでは、サイクルの一部であるコンポジットアラームを削除することはできません。なぜなら、削除したいアラームに依存するコンポジットアラームが常に存在するからです。
以下の例は、メトリックアラームを無効にする方法を示しています:
このメトリックアラームは特定のEC2インスタンスの平均CPU利用率を監視し、メトリックを300秒ごとに評価し、評価期間を6回(合計30分)必要とします。平均CPU利用率がこれらの期間のうち少なくとも4回で60%を超えると、アラームがトリガーされ、指定されたSNSトピックに通知が送信されます。
閾値を99%以上に設定し、期間を10秒に設定し、評価期間を8640に設定(10秒の8640期間が1日に相当するため)、データポイントをアラームにも8640に設定することで、CPU利用率が24時間中のすべての10秒ごとに99%を超える必要があり、アラームをトリガーするためには、このような設定が必要です。
潜在的影響: 重要なイベントの通知が欠如し、未検出の問題が発生する可能性があり、誤ったアラートが抑制され、実際のインシデントの検出が見逃される可能性があります。
cloudwatch:DeleteAlarmActions
, cloudwatch:EnableAlarmActions
, cloudwatch:SetAlarmState
cloudwatch:DeleteAlarmActions
, cloudwatch:EnableAlarmActions
, cloudwatch:SetAlarmState
アラームアクションを削除することで、攻撃者はアラーム状態が到達した際に重要なアラートや自動応答がトリガーされるのを防ぐことができます。これにより、管理者への通知や自動スケーリングのアクティビティのトリガーが阻害される可能性があります。不適切にアラームアクションを有効にしたり再度有効にしたりすることは、以前に無効になっていたアクションを再度有効にするか、トリガーされるアクションを変更することによって予期しない動作を引き起こす可能性があり、インシデント対応に混乱や誤誘導を引き起こす可能性があります。
さらに、権限を持つ攻撃者はアラームの状態を操作でき、管理者を混乱させるために偽のアラームを作成したり、悪意のある活動や重要なシステムの障害を隠すために本物のアラームを無効にすることができます。
SetAlarmState
をコンポジットアラームで使用する場合、コンポジットアラームが実際の状態に戻ることは保証されません。そのコンポジットアラームは、その子アラームのいずれかが状態を変更するときにのみ実際の状態に戻ります。また、構成を更新すると再評価されます。
潜在的影響: 重要なイベントの通知の不足、潜在的な未検出の問題、誤ったアラート、本物のインシデントの検出を逃す可能性があります。
cloudwatch:DeleteAnomalyDetector
, cloudwatch:PutAnomalyDetector
cloudwatch:DeleteAnomalyDetector
, cloudwatch:PutAnomalyDetector
攻撃者は、メトリックデータの異常なパターンや異常に対応する能力を妨害することができます。既存の異常検出器を削除することで、攻撃者は重要なアラートメカニズムを無効にすることができます。また、それらを作成または変更することで、誤った設定を行うか、誤った陽性を作成して監視を乱し、圧倒することができます。
以下の例は、メトリック異常検出器を無効にする方法を示しています。このメトリック異常検出器は特定のEC2インスタンスの平均CPU利用率を監視しており、所望の時間範囲を持つ「ExcludedTimeRanges」パラメータを追加するだけで、その期間中に関連データを分析したり警告したりしないようにすることができます。
潜在的影響: 異常なパターンやセキュリティ脅威の検出に直接影響を与える。
cloudwatch:DeleteDashboards
, cloudwatch:PutDashboard
cloudwatch:DeleteDashboards
, cloudwatch:PutDashboard
攻撃者は、ダッシュボードを作成、変更、または削除することで、組織の監視および可視化機能を妨害することができます。これらの権限は、システムのパフォーマンスや健康状態に対する重要な可視性を削除したり、ダッシュボードを不正確なデータで表示したり、悪意のある活動を隠すために悪用される可能性があります。
潜在的影響: モニタリングの可視性の喪失と誤った情報。
cloudwatch:DeleteInsightRules
, cloudwatch:PutInsightRule
,cloudwatch:PutManagedInsightRule
cloudwatch:DeleteInsightRules
, cloudwatch:PutInsightRule
,cloudwatch:PutManagedInsightRule
Insight ルールは異常を検出し、パフォーマンスを最適化し、リソースを効果的に管理するために使用されます。既存の Insight ルールを削除することで、攻撃者は重要なモニタリング機能を削除し、システムをパフォーマンスの問題やセキュリティの脅威から盲目にさせる可能性があります。さらに、攻撃者は Insight ルールを作成または変更して、誤ったデータを生成したり、悪意のある活動を隠したりして、誤った診断や運用チームからの不適切な応答を引き起こす可能性があります。
潜在的影響: パフォーマンスの問題や異常を検出して対応する難しさ、誤った意思決定、および悪意のある活動やシステムの障害を隠す可能性があります。
cloudwatch:DisableInsightRules
, cloudwatch:EnableInsightRules
cloudwatch:DisableInsightRules
, cloudwatch:EnableInsightRules
重要なインサイトルールを無効にすることで、攻撃者は組織を重要なパフォーマンスおよびセキュリティメトリクスから盲目にすることができます。逆に、誤ったルールを有効にしたり構成したりすることで、偽のデータを生成したり、ノイズを作成したり、悪意のある活動を隠すことができるかもしれません。
潜在的影響: 運用チームの混乱、実際の問題への遅れた対応や誤ったアラートに基づく不必要な行動が引き起こされる可能性がある。
cloudwatch:DeleteMetricStream
, cloudwatch:PutMetricStream
, cloudwatch:PutMetricData
cloudwatch:DeleteMetricStream
, cloudwatch:PutMetricStream
, cloudwatch:PutMetricData
cloudwatch:DeleteMetricStream
、cloudwatch:PutMetricStream
権限を持つ攻撃者は、メトリックデータストリームを作成および削除することができ、セキュリティ、モニタリング、データの整合性が危険にさらされる可能性がある:
悪意のあるストリームの作成: 機密データを不正な宛先に送信するためのメトリックストリームを作成する。
リソースの操作: 過剰なデータを持つ新しいメトリックストリームの作成は、多くのノイズを生み出し、誤ったアラートを引き起こし、真の問題を隠す可能性がある。
モニタリングの中断: メトリックストリームを削除することで、攻撃者はモニタリングデータの連続的な流れを中断する。これにより、彼らの悪意のある活動が効果的に隠される。
同様に、cloudwatch:PutMetricData
権限を持つ場合、メトリックストリームにデータを追加することが可能となる。これにより、不適切なデータの追加量によってDoSが発生し、完全に無効化される可能性がある。
以下は、指定されたEC2インスタンスでCPU使用率が70%に対応するデータを追加する例です:
潜在的影響: モニタリングデータの流れに混乱が生じ、異常やインシデントの検出、リソースの操作、および過剰なメトリックストリームの作成によるコスト増加に影響が出る可能性があります。
cloudwatch:StopMetricStreams
, cloudwatch:StartMetricStreams
cloudwatch:StopMetricStreams
, cloudwatch:StartMetricStreams
攻撃者は影響を受けるメトリックデータストリームの流れを制御できます(リソース制限がない場合はすべてのデータストリーム)。cloudwatch:StopMetricStreams
権限を持つ攻撃者は、重要なメトリックストリームを停止することで、悪意のある活動を隠すことができます。
潜在的影響: モニタリングデータの流れに混乱が生じ、異常およびインシデントの検出に影響を与える可能性があります。
cloudwatch:TagResource
, cloudwatch:UntagResource
cloudwatch:TagResource
, cloudwatch:UntagResource
攻撃者は、CloudWatchリソース(現在はアラームとContributor Insightsルールのみ)からタグを追加、変更、または削除することができます。これにより、タグに基づく組織のアクセス制御ポリシーが混乱する可能性があります。
潜在的影響: タグベースのアクセス制御ポリシーの混乱。
参考文献
Last updated