|
1 | | -## AWS Config |
2 | | - |
3 | | -## Provision and distribute the stacksets to the appropriate accounts for aws config rules. |
4 | | -module "config_rule_groups" { |
5 | | - for_each = var.config.rule_groups |
6 | | - source = "appvia/stackset/aws" |
7 | | - version = "0.1.10" |
8 | | - |
9 | | - name = format("%s%s", var.config.stackset_name_prefix, lower(each.key)) |
10 | | - description = format("Used to configure and distribute the AWS Config rules for %s", each.key) |
11 | | - call_as = "DELEGATED_ADMIN" |
12 | | - enabled_regions = try(each.value.enabled_regions, null) |
13 | | - exclude_accounts = each.value.exclude_accounts |
14 | | - organizational_units = each.value.associations |
15 | | - permission_model = "SERVICE_MANAGED" |
16 | | - tags = local.tags |
17 | | - |
18 | | - template = templatefile("${path.module}/assets/cloudformation/config.yaml", { |
19 | | - "description" = each.value.description |
20 | | - "rule_group_name" = each.key |
21 | | - "rules" = each.value.rules |
22 | | - }) |
23 | | -} |
24 | | - |
25 | | -## AWS Inspector |
26 | | - |
27 | | - |
28 | | -resource "aws_inspector2_enabler" "inspector" { |
29 | | - count = var.inspector.enable ? 1 : 0 |
30 | | - |
31 | | - account_ids = [var.inspector.account_id] |
32 | | - resource_types = local.inspector_resources_types |
33 | | -} |
34 | | - |
35 | | -## All new accounts will have inspector enabled for the following resource types, any |
36 | | -## existing accounts will need to be enabled manually via the aws_inspector2_member_association |
37 | | -resource "aws_inspector2_organization_configuration" "auto_enable_inspector_new_accounts" { |
38 | | - auto_enable { |
39 | | - ec2 = var.inspector.enable_ec2_scan |
40 | | - ecr = var.inspector.enable_ecr_scan |
41 | | - lambda = var.inspector.enable_lambda_scan |
42 | | - lambda_code = var.inspector.enable_lambda_code_scan |
43 | | - } |
44 | | -} |
45 | | - |
46 | | -## AWS Macie |
47 | | - |
48 | | -## Provision the stackset to enable the macie service across all the accounts |
49 | | -module "macie" { |
50 | | - count = local.macie_enabled ? 1 : 0 |
51 | | - source = "appvia/stackset/aws" |
52 | | - version = "0.1.10" |
53 | | - |
54 | | - name = try(var.macie.stackset_name, null) |
55 | | - description = "Configuration for the AWS macie service, configured by the landing zone" |
56 | | - exclude_accounts = try(var.macie.exclude_accounts, null) |
57 | | - region = var.region |
58 | | - tags = local.tags |
59 | | - |
60 | | - template = templatefile("${path.module}/assets/cloudformation/macie.yaml", { |
61 | | - frequency = var.macie.frequency |
62 | | - status = var.macie.enable ? "ENABLED" : "DISABLED" |
63 | | - }) |
64 | | -} |
65 | | - |
66 | | -## AWS Access Analyzer |
67 | | - |
68 | | -## Provision the unused access analyzer |
69 | | -resource "aws_accessanalyzer_analyzer" "unused_access" { |
70 | | - count = local.analyzer_enabled && try(var.access_analyzer.enable_unused_analyzer, false) ? 1 : 0 |
71 | | - |
72 | | - analyzer_name = var.access_analyzer.unused_analyzer_name |
73 | | - type = "ORGANIZATION_UNUSED_ACCESS" |
74 | | - configuration { |
75 | | - unused_access { |
76 | | - unused_access_age = var.access_analyzer.unused_access_age |
77 | | - } |
78 | | - } |
79 | | -} |
80 | | - |
81 | | -## AWS Security Hub |
82 | | - |
83 | | -## Provision a securityhub aggregator in the account |
84 | | -resource "aws_securityhub_finding_aggregator" "current" { |
85 | | - count = var.securityhub.aggregator.create ? 1 : 0 |
86 | | - |
87 | | - linking_mode = var.securityhub.aggregator.linking_mode |
88 | | - specified_regions = var.securityhub.aggregator.specified_regions |
89 | | -} |
90 | | - |
91 | | -## Provision the organization configuration |
92 | | -resource "aws_securityhub_organization_configuration" "current" { |
93 | | - auto_enable = var.securityhub.configuration.auto_enable |
94 | | - auto_enable_standards = var.securityhub.configuration.auto_enable_standards |
95 | | - |
96 | | - organization_configuration { |
97 | | - configuration_type = var.securityhub.configuration.organization_configuration.configuration_type |
98 | | - } |
99 | | - |
100 | | - depends_on = [ |
101 | | - aws_securityhub_finding_aggregator.current, |
102 | | - ] |
103 | | -} |
104 | | - |
105 | | -## Provision one or more configuration policies for the security hub |
106 | | -resource "aws_securityhub_configuration_policy" "current" { |
107 | | - for_each = var.securityhub.policies |
108 | | - |
109 | | - name = each.key |
110 | | - description = each.value.description |
111 | | - |
112 | | - configuration_policy { |
113 | | - service_enabled = each.value.enable |
114 | | - |
115 | | - enabled_standard_arns = [ |
116 | | - for standard in each.value.policy.standard_arns : local.standards_subscription[standard] |
117 | | - ] |
118 | | - |
119 | | - security_controls_configuration { |
120 | | - disabled_control_identifiers = each.value.policy.controls.disabled |
121 | | - |
122 | | - dynamic "security_control_custom_parameter" { |
123 | | - for_each = each.value.policy.controls.custom_parameter != null ? each.value.policy.controls.custom_parameter : [] |
124 | | - |
125 | | - content { |
126 | | - security_control_id = security_control_custom_parameter.value.security_control_id |
127 | | - |
128 | | - parameter { |
129 | | - name = security_control_custom_parameter.value.parameter.name |
130 | | - value_type = security_control_custom_parameter.value.parameter.value_type |
131 | | - } |
132 | | - } |
133 | | - } |
134 | | - } |
135 | | - } |
136 | | - |
137 | | - depends_on = [aws_securityhub_organization_configuration.current] |
138 | | -} |
139 | | - |
140 | | -## Associate a security hub policy with an account or organizational unit |
141 | | -resource "aws_securityhub_configuration_policy_association" "current" { |
142 | | - for_each = local.policy_associations_by_policy |
143 | | - |
144 | | - policy_id = aws_securityhub_configuration_policy.current[each.value.policy].id |
145 | | - target_id = each.value.target_id |
146 | | - |
147 | | - depends_on = [aws_securityhub_configuration_policy.current] |
148 | | -} |
0 commit comments