[JAWS-UG CLI] CloudTrail:#3 CloudTrailの設定

AWS CLIを利用して、CloudTrailの設定を有効にしてみます。


前提条件
========


CloudTrailへの権限
------------------

* CloudTrailに対してフル権限があること。


AWS CLIのバージョン
-------------------

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

  * AWS CLI 1.7.26

```bash:コマンド:
aws --version
```

```text:結果(例):
      aws-cli/1.7.26 Python/2.7.5 Darwin/13.4.0
```


0. 準備
=======


0.1. リージョンの決定
---------------------

作成するTrailのリージョンを決めます。

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

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


0.2. 変数の確認
---------------

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

```bash:変数の確認:
aws configure list
```

```text:結果(例):
            Name                    Value             Type    Location
            ----                    -----             ----    --------
         profile       cloudtrailFull-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. Trail用S3バケットの確認
----------------------------

```bash:変数の確認:
cat << ETX

        S3_BUCKET_NAME: ${S3_BUCKET_NAME}

ETX
```


1. 事前作業
===========


1.1. S3プレフィックスの決定
---------------------------

今回は、デフォルトのままにします。

注釈: デフォルト: /${キープレフィックス
  }/AWSLogs/${AWS_ID}/CloudTrail/${リ ージョン名}


1.2. Trail名の決定
------------------

```bash:コマンド:
TRAIL_NAME='Default'
```


2. 本作業
=========


2.1. Trailの作成
----------------

```bash:コマンド:
cat << ETX

        TRAIL_NAME:     ${TRAIL_NAME}
        S3_BUCKET_NAME: ${S3_BUCKET_NAME}

ETX
```

```bash:コマンド:
aws cloudtrail create-trail \
        --name ${TRAIL_NAME} \
        --s3-bucket-name ${S3_BUCKET_NAME}
```

```json:結果(例):
      {
        "IncludeGlobalServiceEvents": true,
        "Name": "Default",
        "S3BucketName": "trail-XXXXXXXXXXXX-eu-west-1"
      }
```


2.2. Trailの内容確認
--------------------

```bash:コマンド:
aws cloudtrail describe-trails --trail-name-list ${TRAIL_NAME}
```

```json:結果(例):
      {
        "trailList": [
          {
              "IncludeGlobalServiceEvents": true,
              "Name": "Default",
              "S3BucketName": "trail-XXXXXXXXXXXX-eu-west-1"
          }
        ]
      }
```


2.1. ロギングの状態確認
-----------------------

```bash:コマンド:
aws cloudtrail get-trail-status --name ${TRAIL_NAME}
```

```json:結果(例):
      {
        "IsLogging": false
      }
```


2.2. ロギングの開始
-------------------

```bash:コマンド:
aws cloudtrail start-logging --name ${TRAIL_NAME}
```

```text:結果:
      (戻り値なし)
```


2.3. ロギングの状態確認
-----------------------

```bash:コマンド:
aws cloudtrail get-trail-status --name ${TRAIL_NAME}
```

ロギング開始直後は下記の内容が表示されます。

```json:結果(例):
      {
        "IsLogging": true,
        "StartLoggingTime": 1421652962.51
      }
```

10分ほどまって、S3バケットにログが保存されると、以下の内容に変化します
。

```json:結果(例):
      {
        "StartLoggingTime": 1421652962.51,
        "IsLogging": true,
        "LatestDeliveryTime": 1421653022.589
      }
```


3. 事後作業
===========


3.1. ログ確認
-------------

S3バケットにログファイルが作成されていることを確認します。

```bash:コマンド:
aws s3 ls s3://${S3_BUCKET_NAME}/AWSLogs/${AWS_ID}/CloudTrail/${AWS_DEFAULT_REGION}/`date -u +%Y`/`date -u +%m`/`date -u +%d`/
```

```text:結果(例):
      2015-01-19 14:29:42        980 XXXXXXXXXXXX_CloudTrail_eu-west-1_20150119T0530Z_XgjNcNlurtSBMnGv.json.gz
```


3.2. イベント確認
-----------------

```bash:コマンド:
aws cloudtrail lookup-events 
```

```json:結果(例):
      {
        "Events": [
          {
              "EventId": "c0a32f8d-e7a8-451f-9a36-064b1687d863",
              "Username": "administrator-prj203-mbp1-administratorprj203mbp13-FQJW6N64C75G",
              "EventTime": 1431259459.0,
              "CloudTrailEvent": "{"eventVersion":"1.03","userIdentity":{"type":"IAMUser","principalId":"AIDAXXXXXXXXXXXXXXXXX","arn":"arn:aws:iam::XXXXXXXXXXXX:user/administrator-prjz-mbp13","accountId":"XXXXXXXXXXXX","accessKeyId":"AKIAXXXXXXXXXXXXXXXX","userName":"administrator-prjz-mbp13"},"eventTime":"2015-05-11T12:04:19Z","eventSource":"cloudtrail.amazonaws.com","eventName":"StartLogging","awsRegion":"eu-west-1","sourceIPAddress":"xxx.xxx.xxx.xxx","userAgent":"aws-cli/1.7.26Python/2.7.5 Darwin/13.4.0","requestParameters":{"name":"Default"},"responseElements":null,"requestID":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","eventID":"xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","eventType":"AwsApiCall","recipientAccountId":"XXXXXXXXXXXX"}",
              "EventName": "StartLogging",
              "Resources": [
                  {
                      "ResourceType": "AWS::CloudTrail::Trail",
                      "ResourceName": "Default"
                  }
              ]
          }
        ]
      }
```


完了
====