5
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Cloud Formationで簡単に全リージョンのCloudTrailを有効化する

Posted at

サクっとできるので、アカウント作ったらとりあえずやっておくといいかもしれません:grinning:

以下は、全リージョンのCloudTrailを有効にするCloudFormationテンプレートのペライチと、使い方になります。

テンプレートは、公式ドキュメントをベースに以下の修正を加えています。

  • 全てのリージョンで CloudTrail 証跡を有効にするように変更
  • グローバルサービス (IAM など) からのイベントをログファイルに発行するように変更
  • OutputにSNS TopicのARNと、S3バケット名を出力するように変更
  • SNSのサブスクリプションは指定しない → サブスクリプションは後から自由に設定したいので、SNS Topicだけ作っておく

CloudFormation テンプレート

---
AWSTemplateFormatVersion: "2010-09-09"
Resources:
  S3Bucket:
    DeletionPolicy: Retain
    Type: "AWS::S3::Bucket"
    Properties: {}
  BucketPolicy:
    Type: "AWS::S3::BucketPolicy"
    Properties:
      Bucket:
        Ref: S3Bucket
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
          -
            Sid: "AWSCloudTrailAclCheck"
            Effect: "Allow"
            Principal:
              Service: "cloudtrail.amazonaws.com"
            Action: "s3:GetBucketAcl"
            Resource:
              !Sub |-
                arn:aws:s3:::${S3Bucket}
          -
            Sid: "AWSCloudTrailWrite"
            Effect: "Allow"
            Principal:
              Service: "cloudtrail.amazonaws.com"
            Action: "s3:PutObject"
            Resource:
              !Sub |-
                arn:aws:s3:::${S3Bucket}/AWSLogs/${AWS::AccountId}/*
            Condition:
              StringEquals:
                s3:x-amz-acl: "bucket-owner-full-control"
  Topic:
    Type: "AWS::SNS::Topic"
  TopicPolicy:
    Type: "AWS::SNS::TopicPolicy"
    Properties:
      Topics:
        - Ref: "Topic"
      PolicyDocument:
        Version: "2008-10-17"
        Statement:
          -
            Sid: "AWSCloudTrailSNSPolicy"
            Effect: "Allow"
            Principal:
              Service: "cloudtrail.amazonaws.com"
            Resource: "*"
            Action: "SNS:Publish"
  myTrail:
    DependsOn:
        - BucketPolicy
        - TopicPolicy
    Type: "AWS::CloudTrail::Trail"
    Properties:
      S3BucketName:
        Ref: S3Bucket
      SnsTopicName:
        !GetAtt Topic.TopicName
      IsLogging: true
      IsMultiRegionTrail: true
      IncludeGlobalServiceEvents: true
Outputs:
  SNSTopicArn:
    Value: !Ref Topic
  S3BucketName:
    Value: !Ref S3Bucket

使い方

どんなリソースが作られるのか視覚的にわかりやすいので、CloudFormation Designerを使ってテンプレートを読み込んでみます。(慣れている方は、aws cliとかを使ってもいいと思います)

まずは、CloudFormationのコンソールを開いて、「テンプレートのデザイン」を押します。

001.png

CloudFormation Designerの画面が開いたら、

  1. テンプレートの言語の選択をYAMLに変えます
  2. テンプレートタブに上記テンプレをコピペします
  3. テンプレをvalidateします
  4. 画面右上の矢印から画面のリフレッシュを行います
003.png

すると、リソースがどのようにつくられるか可視化されます:clap:

あとは、画面上部左上にある:cloud:のアイコンからスタックを作成する画面に行って、適当に名前をつけて作成します。

スクリーンショット 2017-06-20 13.34.31.png

簡単。うまくいくと状況がCREATE_COMPLETEになります。

スクリーンショット 2017-06-20 13.41.49.png

まとめ

正直CloudTrailのコンソールからでもポチポチやれば簡単に設定できるのですが、なるべくリソース作成や変更はコード化しておくと、後からいろいろ見直しやすいのでおすすめです:thumbsup:

参考

5
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?