Skip to content

Commit

Permalink
replace key policy with that from s3 objct logging
Browse files Browse the repository at this point in the history
  • Loading branch information
badra001 committed Nov 23, 2021
1 parent bbcda8e commit d51267b
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 5 deletions.
1 change: 1 addition & 0 deletions cloudtrail-key/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ No modules.
| [aws_iam_policy_document.empty](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |
| [aws_iam_policy_document.key](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |
| [aws_iam_policy_document.key_admin](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |
| [aws_iam_policy_document.key_orig](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |
| [aws_iam_policy_document.key_policy_combined](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source |
| [aws_region.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region) | data source |

Expand Down
58 changes: 53 additions & 5 deletions cloudtrail-key/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,11 @@ locals {
account_environment = data.aws_arn.current.partition == "aws-us-gov" ? "gov" : "ew"
partition = data.aws_arn.current.partition

name = var.name == null ? format("%v-%v", lookup(local._defaults["cloudtrail"], "name"), local.region) : var.name
kms_key_name = format("%v%v", local._prefixes["kms"], local.name)
kms_admin_root = format("arn:%v:iam::%v:root", local.partition, local.account_id)
kms_admin_roles = compact(concat([local.kms_admin_root], var.kms_admin_roles))
name = var.name == null ? format("%v-%v", lookup(local._defaults["cloudtrail"], "name"), local.region) : var.name
kms_key_name = format("%v%v", local._prefixes["kms"], local.name)
kms_admin_root = format("arn:%v:iam::%v:root", local.partition, local.account_id)
# kms_admin_roles = compact(concat([local.kms_admin_root], var.kms_admin_roles))
kms_admin_roles = var.kms_admin_roles
kms_policy_document = var.kms_policy_document != null ? var.kms_policy_document : data.aws_iam_policy_document.empty.json

}
Expand Down Expand Up @@ -88,7 +89,7 @@ data "aws_iam_policy_document" "key_policy_combined" {
]
}

data "aws_iam_policy_document" "key" {
data "aws_iam_policy_document" "key_orig" {
policy_id = "Cloudtrail KMS Access"
statement {
sid = "EnableIAMUserPermissions"
Expand Down Expand Up @@ -216,3 +217,50 @@ data "aws_iam_policy_document" "key_admin" {
}

data "aws_iam_policy_document" "empty" {}


#---
# key policy for clodutrail
# https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create-kms-key-policy-for-cloudtrail.html
# can't use aws_cloudtrail.this.arn as it makes for a circular reference
#
# from aws-setup-s3-object-logging
#---
data "aws_iam_policy_document" "key" {
policy_id = "object-logging-cloud-trail"
statement {
sid = "IAMPermissionsAccessKMSManagement"
effect = "Allow"
actions = ["kms:*"]
resources = ["*"]
principals {
type = "AWS"
identifiers = [local.kms_admin_root]
}
}
statement {
sid = "CloudTrailKMSAccess"
effect = "Allow"
actions = ["kms:DescribeKey"]
resources = ["*"]
principals {
type = "Service"
identifiers = ["cloudtrail.amazonaws.com"]
}
}
statement {
sid = "CloudTrailKMSEncryptAccess"
effect = "Allow"
actions = ["kms:GenerateDataKey"]
resources = ["*"]
principals {
type = "Service"
identifiers = ["cloudtrail.amazonaws.com"]
}
condition {
test = "StringLike"
variable = "kms:EncryptionContext:aws:cloudtrail:arn"
values = [format("arn:%v:cloudtrail:*:%v:trail/*", local.partition, local.account_id)]
}
}
}

0 comments on commit d51267b

Please sign in to comment.