Help us understand the problem. What is going on with this article?

[JAWS-UG CLI] CloudWatch:#5 アラームの設定 (IAM変更の検知)

More than 5 years have passed since last update.

AWS CLIを利用して、CloutWatch Logsで設定したメトリックフィルタのデータに対してアラームの設定をしてみます。

前提条件

CloudWatchへの権限

  • CloudWatchに対してフル権限があること。

AWS CLIのバージョン

  • 以下のバージョンで動作確認済

    • AWS CLI 1.7.22
コマンド
aws --version

結果(例):

  aws-cli/1.7.26 Python/2.7.5 Darwin/13.4.0

0. 準備

0.1. リージョンの決定

作成するユーザのデフォルトリージョンを決めます。

(カレントユーザが利用するカレントリージョンも切り変わります。)

コマンド(アイルランドリージョンの場合)
export AWS_DEFAULT_REGION='eu-west-1'

0.2. 変数の確認

プロファイルとリージョンが想定のものになっていることを確認します。

変数の確認
aws configure list

結果(例):

        Name                    Value             Type    Location
        ----                    -----             ----    --------
     profile       cloudwatchFull-prjZ-mbp13iamFull-prjZ-mbp13              env    AWS_DEFAULT_PROFILE
  access_key     ****************XXXX shared-credentials-file
  secret_key     ****************XXXX shared-credentials-file
      region                eu-west-1              env    AWS_DEFAULT_REGION

0.3. 名前空間の確認

変数の確認
cat << ETX

        CWATCH_NAMESPACE: ${CWATCH_NAMESPACE}

ETX

0.4. メトリック名の確認

変数の確認
cat << ETX

        CWATCH_METRIC_NAME: ${CWATCH_METRIC_NAME}

ETX

0.5. メトリックの存在確認

コマンド
aws cloudwatch list-metrics --namespace ${CWATCH_NAMESPACE}

結果:

  {
    "Metrics": [
      {
          "Namespace": "CloudTrailMetric",
          "Dimensions": [],
          "MetricName": "IAMAuthnAuthzActivity"
      }
    ]
  }

0.6. SNSトピック名の確認

変数の確認
cat << ETX

        SNS_TOPIC_ARN: ${SNS_TOPIC_ARN}

ETX

1. 事前作業

IAMに変更があった場合にアラームがあがるように設定していきます。

1.1. 監視周期の決定

まず、監視周期を決めます。 本ハンズオンでははやめにアラーム通知が欲しいので60秒に指定します。

コマンド
CWATCH_ALARM_PERIOD='60'

1.2. アラーム対象の決定

アラームの対象となる、metric名(必須)とUnit単位(任意)を指定します。

コマンド
CWATCH_METRIC_UNIT='Count'
コマンド
CWATCH_STATISTICS='Sum'

1.3. アラーム名の決定

アラーム名を決定します。 可能な限りDescriptionも指定するようにしましょ
う。

コマンド
CWATCH_ALARM_NAME='IAMAuthnAuthzActivityAlarm'
CWATCH_ALARM_DESC='Alarm for IAM modify.'

1.4. アラーム閾値の決定

アラームの閾値を指定します。

evaluation period: 2回(period)状態が継続した場合にアラームを通知します

閾値と比較演算子: キューにジョブが1つ以上
(GreaterThanOrEqualToThreshold)あるとアラームを通知します。

コマンド
CWATCH_EVALUATION_PERIOD='1'
CWATCH_THRESHOLD='1'
CWATCH_COMPARISON='GreaterThanOrEqualToThreshold'

2. 本作業

2.1. アラームの設定

実際にアラームを設定してみましょう。

コマンド
CWATCH_ALARM_TOPIC=${SNS_TOPIC_ARN}
変数の確認
cat << ETX

        CWATCH_NAMESPACE:          ${CWATCH_NAMESPACE}
        CWATCH_METRIC_NAME:        ${CWATCH_METRIC_NAME}
        CWATCH_STATISTICS:         ${CWATCH_STATISTICS}
        CWATCH_ALARM_PERIOD:       ${CWATCH_ALARM_PERIOD}
        CWATCH_EVALUATION_PERIOD:  ${CWATCH_EVALUATION_PERIOD}
        CWATCH_THRESHOLD:          ${CWATCH_THRESHOLD}
        CWATCH_COMPARISON:         ${CWATCH_COMPARISON}
        CWATCH_ALARM_NAME:         ${CWATCH_ALARM_NAME}
        CWATCH_ALARM_DESC:        "${CWATCH_ALARM_DESC}"
        CWATCH_ALARM_TOPIC:        ${CWATCH_ALARM_TOPIC}

ETX
コマンド
aws cloudwatch put-metric-alarm \
          --namespace           ${CWATCH_NAMESPACE} \
          --metric-name         ${CWATCH_METRIC_NAME} \
          --statistic           ${CWATCH_STATISTICS} \
          --period              ${CWATCH_ALARM_PERIOD} \
          --evaluation-periods  ${CWATCH_EVALUATION_PERIOD} \
          --threshold           ${CWATCH_THRESHOLD} \
          --comparison-operator ${CWATCH_COMPARISON} \
          --alarm-name          ${CWATCH_ALARM_NAME} \
          --alarm-description  "${CWATCH_ALARM_DESC}" \
          --alarm-actions       ${CWATCH_ALARM_TOPIC}

結果:

  (戻り値なし)

2.2. アラーム変更履歴の確認

アラーム変更履歴に、以下のエントリがあることを確認します。

  • アラーム作成
コマンド
CWATCH_MAX_ITEMS='1'
コマンド
aws cloudwatch describe-alarm-history \
          --alarm-name ${CWATCH_ALARM_NAME} \
          --max-items ${CWATCH_MAX_ITEMS}

結果:

  {
    "AlarmHistoryItems": [
      {
          "Timestamp": "2015-05-11T06:39:43.670Z",
          "HistoryItemType": "ConfigurationUpdate",
          "AlarmName": "IAMAuthnAuthzActivityAlarm",
          "HistoryData": "{\"version\":\"1.0\",\"type\":\"Create\",\"createdAlarm\":{\"threshold\":1.0,\"namespace\":\"CloudTrailMetric\",\"okactions\":[],\"alarmActions\":[\"arn:aws:sns:eu-west-1:XXXXXXXXXXXX:trail-alarm\"],\"actionsEnabled\":true,\"alarmName\":\"IAMAuthnAuthzActivityAlarm\",\"alarmConfigurationUpdatedTimestamp\":\"2015-05-11T06:39:43.670+0000\",\"alarmArn\":\"arn:aws:cloudwatch:eu-west-1:XXXXXXXXXXXX:alarm:IAMAuthnAuthzActivityAlarm\",\"stateUpdatedTimestamp\":\"2015-05-11T06:39:43.670+0000\",\"statistic\":\"Sum\",\"stateValue\":\"INSUFFICIENT_DATA\",\"metricName\":\"IAMAuthnAuthzActivity\",\"period\":60,\"dimensions\":[],\"evaluationPeriods\":1,\"comparisonOperator\":\"GreaterThanOrEqualToThreshold\",\"insufficientDataActions\":[],\"alarmDescription\":\"Alarm for IAM modify.\"}}",
          "HistorySummary": "Alarm \"IAMAuthnAuthzActivityAlarm\" created"
      }
    ]
  }

3. 事後作業

3.1. アラーム設定の確認

アラームの設定内容を確認します。

コマンド
aws cloudwatch describe-alarms --alarm-names ${CWATCH_ALARM_NAME}

結果:

  {
    "MetricAlarms": [
      {
          "EvaluationPeriods": 1,
          "AlarmArn": "arn:aws:cloudwatch:eu-west-1:258890897647:alarm:IAMAuthnAuthzActivityAlarm",
          "StateUpdatedTimestamp": "2015-05-11T06:39:43.670Z",
          "AlarmConfigurationUpdatedTimestamp": "2015-05-11T06:39:43.670Z",
          "ComparisonOperator": "GreaterThanOrEqualToThreshold",
          "AlarmActions": [
              "arn:aws:sns:eu-west-1:258890897647:trail-alarm"
          ],
          "AlarmDescription": "Alarm for IAM modify.",
          "Namespace": "CloudTrailMetric",
          "Period": 60,
          "StateValue": "INSUFFICIENT_DATA",
          "Threshold": 1.0,
          "AlarmName": "IAMAuthnAuthzActivityAlarm",
          "Dimensions": [],
          "Statistic": "Sum",
          "StateReason": "Unchecked: Initial alarm creation",
          "InsufficientDataActions": [],
          "OKActions": [],
          "ActionsEnabled": true,
          "MetricName": "IAMAuthnAuthzActivity"
      }
    ]
  }

3.2. IAMグループの作成

コマンド
aws iam create-group --group-name test-`date +%Y%m%d`-02

結果(例):

  {
    "Group": {
      "Path": "/",
      "CreateDate": "2015-05-11T06:03:33.140Z",
      "GroupId": "AGPAIXZBI34RKKCMV27VS",
      "Arn": "arn:aws:iam::258890897647:group/test-20150511-02",
      "GroupName": "test-20150511-02"
    }
  }

3.3. アラームの受信確認

完了

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away