Skip to content

Commit aabf84b

Browse files
committed
SEC-531 First draft of Cloud Trail KMS encryption
1 parent 10c54a6 commit aabf84b

File tree

5 files changed

+68
-25
lines changed

5 files changed

+68
-25
lines changed

cloudtrail.tf

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ module "cloudtrail" {
99
aws_kms_grant.org_kms
1010
]
1111

12-
name = var.cloudtrail_name
13-
enable_log_file_validation = var.cloudtrail_enable_log_file_validation
14-
enable_logging = var.cloudtrail_enable_logging
15-
include_global_service_events = var.cloudtrail_include_global_service_events
16-
insight_selector = var.cloudtrail_insight_selector
17-
is_multi_region_trail = var.cloudtrail_is_multi_region_trail
18-
is_organization_trail = var.cloudtrail_is_organization_trail
19-
#kms_key_arn = var.kms_key_id == "" ? "" : data.aws_kms_key.by_alias.arn
20-
s3_bucket_name = var.log_s3_bucket
21-
s3_key_prefix = var.cloudtrail_s3_key_prefix
22-
tags = var.tags
12+
name = var.cloudtrail_name
13+
enable_log_file_validation = var.cloudtrail_enable_log_file_validation
14+
enable_logging = var.cloudtrail_enable_logging
15+
include_global_service_events = var.cloudtrail_include_global_service_events
16+
insight_selector = var.cloudtrail_insight_selector
17+
is_multi_region_trail = var.cloudtrail_is_multi_region_trail
18+
is_organization_trail = var.cloudtrail_is_organization_trail
19+
kms_key_arn = var.kms_key_id == "" ? "" : data.aws_kms_key.by_alias[0].arn
20+
s3_bucket_name = var.log_s3_bucket
21+
s3_key_prefix = var.cloudtrail_s3_key_prefix
22+
tags = var.tags
2323
}

data.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ data "aws_regions" "enabled" {
1212
}
1313

1414
data "aws_kms_key" "by_alias" {
15+
count = var.kms_key_id == "" ? 0 : 1
1516
key_id = var.kms_key_id
1617
}

modules/cloudtrail/main.tf

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,21 @@
2626
#tfsec:ignore:aws-cloudtrail-enable-at-rest-encryption
2727
module "cloudtrail" {
2828
#ts:skip=AC_AWS_0448 Multi Region is enabled. Not work with Org?
29-
source = "appzen-oss/cloudtrail/aws"
29+
#source = "appzen-oss/cloudtrail/aws"
30+
source = "../../../terraform-aws-cloudtrail"
3031
#version = "0.22.0"
3132

32-
name = var.name
33-
enable_log_file_validation = var.enable_log_file_validation
34-
include_global_service_events = var.include_global_service_events
35-
is_multi_region_trail = var.is_multi_region_trail
36-
is_organization_trail = var.is_organization_trail
37-
insight_selector = var.insight_selector
38-
enable_logging = var.enable_logging
39-
kms_key_arn = var.kms_key_arn
40-
s3_bucket_name = var.s3_bucket_name
41-
s3_key_prefix = var.s3_key_prefix
42-
tags = var.tags
33+
name = var.name
34+
enable_log_file_validation = var.enable_log_file_validation
35+
include_global_service_events = var.include_global_service_events
36+
is_multi_region_trail = var.is_multi_region_trail
37+
is_organization_trail = var.is_organization_trail
38+
insight_selector = var.insight_selector
39+
enable_logging = var.enable_logging
40+
kms_key_arn = var.kms_key_arn
41+
s3_bucket_name = var.s3_bucket_name
42+
s3_key_prefix = var.s3_key_prefix
43+
tags = var.tags
4344
}
4445

4546
# Pass tags

modules/guardduty/main.tf

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,24 @@ resource "aws_guardduty_detector" "self" {
7070
s3_logs {
7171
enable = true
7272
}
73+
kubernetes {
74+
audit_logs {
75+
enable = true
76+
}
77+
}
78+
malware_protection {
79+
scan_ec2_instance_with_findings {
80+
ebs_volumes {
81+
enable = true
82+
}
83+
}
84+
}
7385
}
86+
#datasources {
87+
# s3_logs {
88+
# enable = true
89+
# }
90+
#}
7491
tags = var.tags
7592
}
7693

organization.tf

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,25 @@ locals {
4040
var.enable_firewall_manager ? "fms.amazonaws.com" : "",
4141
var.enable_firewall_manager ? "ram.amazonaws.com" : "",
4242
var.enable_guardduty ? "guardduty.amazonaws.com" : "",
43+
var.enable_guardduty ? "malware-protection.guardduty.amazonaws.com" : "",
4344
var.enable_iam_access_analyzer ? "access-analyzer.amazonaws.com" : "",
4445
var.enable_securityhub ? "securityhub.amazonaws.com" : "",
4546
]
4647
)))
48+
remove_nondelegated_principals = toset(compact(
49+
[
50+
"aws-artifact-account-sync.amazonaws.com",
51+
"health.amazonaws.com",
52+
"ram.amazonaws.com",
53+
"malware-protection.guardduty.amazonaws.com",
54+
"servicequotas.amazonaws.com",
55+
"tagpolicies.tag.amazonaws.com",
56+
"wellarchitected.amazonaws.com",
57+
]
58+
))
4759
# Final principals set with items added and removed
48-
aws_service_access_principals = setsubtract(
49-
local.access_principals, local.remove_access_principals)
60+
aws_service_access_principals = setsubtract(local.access_principals, local.remove_access_principals)
61+
aws_delegated_principals = var.account_type == "master" ? toset(setsubtract(local.aws_service_access_principals, local.remove_nondelegated_principals)) : toset([])
5062
#var.enable_artifact ? "" : "",
5163

5264
#enabled_policy_types = toset(compact([
@@ -63,3 +75,15 @@ resource "aws_organizations_organization" "self" {
6375
enabled_policy_types = data.aws_organizations_organization.self.enabled_policy_types
6476
feature_set = "ALL"
6577
}
78+
79+
resource "aws_servicecatalog_organizations_access" "self" {
80+
count = var.account_type == "master" ? 1 : 0
81+
enabled = "true"
82+
}
83+
84+
resource "aws_organizations_delegated_administrator" "self" {
85+
for_each = local.aws_delegated_principals
86+
account_id = var.security_administrator_account_id
87+
service_principal = each.key
88+
depends_on = [aws_servicecatalog_organizations_access.self,aws_organizations_organization.self]
89+
}

0 commit comments

Comments
 (0)