Skip to content

Instantly share code, notes, and snippets.

@ChrisMcKee
Created January 25, 2019 16:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ChrisMcKee/0ca78c207fa7c3aca3b973c824aab069 to your computer and use it in GitHub Desktop.
Save ChrisMcKee/0ca78c207fa7c3aca3b973c824aab069 to your computer and use it in GitHub Desktop.
terraform {
required_version = ">= 0.11.2"
backend "s3" {}
}
variable "aws_assume_role_arn" {
type = "string"
}
provider "aws" {
assume_role {
role_arn = "${var.aws_assume_role_arn}"
}
}
variable "namespace" {
type = "string"
description = "Namespace (e.g. `cp` or `cloudposse`)"
}
variable "stage" {
type = "string"
description = "Stage (e.g. `prod`, `dev`, `staging`)"
}
variable "name" {
type = "string"
description = "Name (e.g. `account`)"
default = "account"
}
# Cloudwatch
resource "aws_cloudwatch_log_group" "cloudtrail_log_group" {
name = "${var.namespace}-${var.stage}-log-group"
retention_in_days = 90
}
resource "aws_iam_role" "cloud_watch_logs_role" {
name = "CloudWatch-for-CloudTrail"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "cloudtrail.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
EOF
}
resource "aws_iam_role_policy" "cloud_watch_policy" {
name = "CloudWatch-policy"
role = "${aws_iam_role.cloud_watch_logs_role.id}"
policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogStream"
],
"Resource": [
"${aws_cloudwatch_log_group.cloudtrail_log_group.arn}"
]
},
{
"Effect": "Allow",
"Action": [
"logs:PutLogEvents"
],
"Resource": [
"${aws_cloudwatch_log_group.cloudtrail_log_group.arn}"
]
}
]
}
EOF
}
output "cloudtrail_log_group" {
value = "${aws_cloudwatch_log_group.cloudtrail_log_group.id}"
}
# Cloud Trail
module "cloudtrail" {
source = "git::https://github.com/cloudposse/terraform-aws-cloudtrail.git?ref=tags/0.5.0"
namespace = "${var.namespace}"
stage = "${var.stage}"
name = "${var.name}"
enable_logging = "true"
enable_log_file_validation = "true"
include_global_service_events = "true"
is_multi_region_trail = "true"
s3_bucket_name = "${var.namespace}-audit-account"
cloud_watch_logs_role_arn = "${aws_iam_role.cloud_watch_logs_role.arn}"
cloud_watch_logs_group_arn = "${aws_cloudwatch_log_group.cloudtrail_log_group.arn}"
}
#Alarm
module "cloudtrail_api_alarms" {
source = "git::https://github.com/cloudposse/terraform-aws-cloudtrail-cloudwatch-alarms.git"
log_group_name = "${aws_cloudwatch_log_group.cloudtrail_log_group.id}"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment