aaaaa

Terraformを使ってAWS CloudTrailの証跡を作成し、出力されるログをS3バケットに保存し、そのS3バケットにライフサイクルルールを設定する方法を以下の手順で説明します。

手順

  1. Terraformのファイル構成を準備
    まず初めに、Terraformの構成ファイルを作成します。一般的には以下のようなファイル構成になります。 main.tf variables.tf outputs.tf
  2. main.tfの設定
    main.tfにCloudTrailの設定、S3バケットの作成、そのライフサイクルルールを追加します。
provider "aws" {
  region = "us-west-2"  # 任意のAWSリージョンに設定してください
}

# S3バケットの作成
resource "aws_s3_bucket" "cloudtrail_bucket" {
  bucket = "my-cloudtrail-bucket-unique-name"  # ユニークなバケット名を設定してください

  lifecycle_rule {
    id      = "move-to-glacier"
    enabled = true

    transition {
      days          = 30
      storage_class = "GLACIER"
    }

    expiration {
      days = 365
    }
  }
}

# CloudTrailの証跡作成
resource "aws_cloudtrail" "main" {
  name                    = "my-cloudtrail"
  s3_bucket_name          = aws_s3_bucket.cloudtrail_bucket.bucket
  include_global_service_events = true
  is_multi_region_trail   = true

  event_selector {
    read_write_type           = "All"
    include_management_events = true

    data_resource {
      type = "AWS::S3::Object"
      values = ["arn:aws:s3:::my-cloudtrail-bucket-unique-name/"]
    }
  }
}

# CloudTrailがログを保存できるようにS3バケットポリシーを追加
resource "aws_s3_bucket_policy" "cloudtrail_bucket_policy" {
  bucket = aws_s3_bucket.cloudtrail_bucket.id

  policy = jsonencode({
    Version = "2012-10-17",
    Statement = [
      {
        Effect = "Allow",
        Principal = {
          Service = "cloudtrail.amazonaws.com"
        },
        Action = "s3:GetBucketAcl",
        Resource = "arn:aws:s3:::${aws_s3_bucket.cloudtrail_bucket.id}"
      },
      {
        Effect = "Allow",
        Principal = {
          Service = "cloudtrail.amazonaws.com"
        },
        Action = "s3:PutObject",
        Resource = "arn:aws:s3:::${aws_s3_bucket.cloudtrail_bucket.id}/*",
        Condition = {
          StringEquals = {
            "s3:x-amz-acl" = "bucket-owner-full-control"
          }
        }
      }
    ]
  })
}
  1. variables.tfの定義
    variables.tfファイルには、必要に応じて変数を定義できます。 variable "region" { description = "The AWS region to deploy to" default = "us-west-2" } 昨日のmain.tfproviderブロックで region を変数に変更することができます。
  2. outputs.tfの定義
    outputs.tfファイルには、出力値を定義します。ここではS3バケットの名前とCloudTrailの名前を出力します。
output "cloudtrail_bucket_name" {
  value = aws_s3_bucket.cloudtrail_bucket.bucket
}

output "cloudtrail_name" {
  value = aws_cloudtrail.main.name
}
  1. Terraformの実行
    最後にTerraformの手順を実行してリソースを作成します。 terraform init terraform plan terraform apply

この手順で、Terraformを使ってCloudTrailの証跡とそれに対応するS3バケットを作成し、バケットに対してライフサイクルルールを設定できます。30日経過後にS3 Glacierに移動し、365日経過後にS3から削除されるように設定されています。

コメント

タイトルとURLをコピーしました