AWS CloudTrail & AWS Config

# AWS CloudTrail & AWS Config

https://d1.awsstatic.com/webinars/jp/pdf/services/20160831-AWS_BlackBelt-CloudTrail-Config-public.pdf

https://d1.awsstatic.com/webinars/jp/pdf/services/20190618_AWS-Blackbelt_Config.pdf

## CloudTrail とは

  • AWS ユーザーの操作をロギングするサービス(全リージョンで有効にしておくのがベストプラクティス)
    • 対象
      • ルートアカウント
      • IAMユーザー
    • ロギング対象のイベント
      • API call Event
      • Non-API call Event
  • ロギングデータはS3に暗号化されて保存
    • KMSを利用した暗号化にも対応
    • Digest File を利用したログファイル整合性の確認
      • CloudTrail ログファイル、ダイジェストファイルの編集・削除の検知
    • Bucket Policy により、複数アカウントCloudTrail Log を1つのバケットに集約することも可能
  • CloudTrail 自体の利用料金は無料
  • 活用方法
    • アラート
      • CloudTrail のログをJSON 形式でCloudWatch Logs に転送
      • CloudWatch Logs Metric Filter の利用し特定のAPIコールを検知
      • Amazon SNS を利用して通知
      • これらの設定はCloudFormation を利用して構築可能
    • 文字列検索
      • S3に保存されたデータを利用して、制限はあるが、CloudTrail Lookup Event を活用して、文字列を検索
    • 可視化
      • CloudWatch Logs からElasticsearch Service に連携。そのデータをKibanaを利用して可視化

 

## AWS Config とは

  • AWS リソースを切り口に時系列ベースでロギング
  • AWS リソースのレポジトリ情報からリソースの変更履歴、構成変更を管理するサービス
    • 構成情報は定期的にスナップショットとしてS3に保存(最大7年)
    • 必要に応じSNSを使った通知も可能
  • 構成情報を元に、現在のシステムがあるべき状態になっているかを評価
    • 独自の評価ルール or AWS が適用するルールを利用

 

  • 機能
    • Configuration Stream
      • リソースが作成、変更、または構成項目が削除されるたびに作成され、構成ストリームに追加される
      • SNSトピックに連携可能
    • Configuration History
      • 任意の期間における各リソースタイプの構成要素の集合
      • リソースの設定履歴を指定したS3バケットに保存
    • Configuration Snapshot
      • あるポイントでのコンフィグレーションアイテムの集合
      • 自動で定期的あるいは変更トリガで作成され、S3にエクスポートされる

 

 

  • ディスカバリの仕組み
    • First Discovery
      • サポートされるリソースに対して、ディスカバリが実行され、Configuration Item が作成される
    • Periodically Discovery
      • CIに対して、定期的に構成変更がないかをディスカバリ
    • Configuration History
      • 6時間ごとにディスカバリ結果を出力
    • Configuration Snapshot
      • 定期的にSnapshot を出力

 

  • AWS Config リレーションシップでリソースの連携関係を把握できる

 

  • AWS Config Rules
    • 準拠すべきルールを事前に設定し、その内容に沿った構成変更が行われているかを評価
    • ルールの種類
      • AWS Managed Rules
        • AWS が提供するルール
      • Customer Managed Rules
        • Lambda ベースにルールを作成可能
        • 評価実行のタイミングを指定
        • Awslabs GitHub でカスタムルールを公開もしている。コミュニティベースでカスタマイズされたルールも公開されている
        • AWS Config Rule Development Kit(RDK) というカスタムルール作成を支援する開発キットがある
    • マネージドルールのカテゴリ
      • コンピューティング
      • データベース
      • マネジメントとガバナンス
      • ネットワークとコンテンツ配信
      • セキュリティ、コンプライアンス
      • ストレージ
    • 評価実行のタイミング
      • Event-Based Evaluations
        • 関連リソースが作成、変更された際にルールの評価が実行される
      • Periodic Evaluations
        • 任意のタイミング
        • AWS Config がコンフィグレーションスナップショットを取得する際にルールの評価が実地される
    • 修復アクション
      • コンプライアンス違反のリソースに対して、ルールに関連付けられた修正アクションを実行

 

## ベストプラクティス

aws.amazon.com

- AMI の種類のチェック

  - 実行中のインスタンス

- required-tags

  - リソースに指定したタグがあるかどうかを確認

- EBSが暗号化されているかを確認

- Systems Manager の管理下におかれているかを確認

- VPC Flow Logs が有効になっているかを確認

- S3 のバケットの権限の確認

- 有効なアクセスキーが、指定日内にローテーションされているかどうかを確認

 

 

記録対象について

  1. すべてのアカウントとリージョンで有効化する
  2. すべてのリソースタイプについて、設定変更を記録する
  3. グローバルリソースは1リージョンで記録を有効にする(重複して登録されるのを防ぐ)
  4. 権限管理が行われ、特定の人にしかアクセスできないS3バケットにヒストリーとスナップショットを保存する
  5. Data aggregation 機能を利用して、管理アカウントから集中管理する
  6. Organizations ベースのaggregator を利用する(マルチアカウント環境だと統制がとりにくい)

 

全体的なAWS Config 利用の流れとしては

アカウントとリージョンを指定してAWS Config データを取得する。それをアグリゲータを利用して、リージョンとアカウントを一つにまとめる。それを集約ビューでまとめる。

 

## 雑感

CloudTrail はユーザの操作に対してのロギングが行えるサービス。AWS Config はリソースの変更に対してロギングが行えるサービス。

削除されてしまったEC2インスタンスの追跡を行いたい場合はリソースベースのAWS Config が良さそう。それを誰が行なったのかを追跡するのはCloudTrail といった具合なのかなと思った。

AWS Config に関しては、アカウント管理者がユーザに対してルールに準拠しているかを検知したいと行った場合に使えるので中央集権的に管理するのにちょうど良いサービスという印象。CloudTrail は有効にしておくのがベストプラクティスで短期~長期にわたってユーザの操作ログを分析したりするのに向いている。

CloudTrail は有効にしているが、AWS Config は有効に使えていないので業務で使えたらなと思った。