@fjall/components-infrastructure 0.89.4 → 0.89.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/LICENSE +50 -21
  2. package/dist/index.d.ts +1 -1
  3. package/dist/index.js +1 -18
  4. package/dist/lib/app.d.ts +12 -12
  5. package/dist/lib/app.js +61 -56
  6. package/dist/lib/aspects/index.d.ts +1 -1
  7. package/dist/lib/aspects/index.js +1 -6
  8. package/dist/lib/aspects/resourceInventory.js +6 -13
  9. package/dist/lib/config/audit.js +1 -5
  10. package/dist/lib/config/aws/accessAnalyser.d.ts +11 -0
  11. package/dist/lib/config/aws/accessAnalyser.js +17 -0
  12. package/dist/lib/config/aws/accountAuditRole.js +11 -15
  13. package/dist/lib/config/aws/accountMonitoringRole.js +25 -29
  14. package/dist/lib/config/aws/alarmTopic.d.ts +8 -0
  15. package/dist/lib/config/aws/alarmTopic.js +19 -0
  16. package/dist/lib/config/aws/cloudTrail.js +4 -9
  17. package/dist/lib/config/aws/configRecorder.d.ts +16 -0
  18. package/dist/lib/config/aws/configRecorder.js +51 -0
  19. package/dist/lib/config/aws/configRulePreset.d.ts +13 -0
  20. package/dist/lib/config/aws/configRulePreset.js +62 -0
  21. package/dist/lib/config/aws/disasterRecovery.d.ts +1 -1
  22. package/dist/lib/config/aws/disasterRecovery.js +56 -73
  23. package/dist/lib/config/aws/ebsDefaultEncryption.d.ts +8 -0
  24. package/dist/lib/config/aws/ebsDefaultEncryption.js +41 -0
  25. package/dist/lib/config/aws/ecrDefaultImage.js +25 -30
  26. package/dist/lib/config/aws/eventBus.js +8 -11
  27. package/dist/lib/config/aws/guardDutyDetector.d.ts +16 -0
  28. package/dist/lib/config/aws/guardDutyDetector.js +26 -0
  29. package/dist/lib/config/aws/identityCenter.d.ts +1 -1
  30. package/dist/lib/config/aws/identityCenter.js +23 -25
  31. package/dist/lib/config/aws/identityCenterGroupMembership.js +18 -22
  32. package/dist/lib/config/aws/index.d.ts +19 -8
  33. package/dist/lib/config/aws/index.js +19 -25
  34. package/dist/lib/config/aws/inspectorEnablement.d.ts +9 -0
  35. package/dist/lib/config/aws/inspectorEnablement.js +51 -0
  36. package/dist/lib/config/aws/ipam.js +9 -13
  37. package/dist/lib/config/aws/oidcConnector.js +8 -12
  38. package/dist/lib/config/aws/platform.js +1 -5
  39. package/dist/lib/config/aws/s3BlockPublicAccess.d.ts +9 -0
  40. package/dist/lib/config/aws/s3BlockPublicAccess.js +55 -0
  41. package/dist/lib/config/aws/scpPreset.d.ts +21 -0
  42. package/dist/lib/config/aws/scpPreset.js +311 -0
  43. package/dist/lib/config/aws/securityBaseline.d.ts +15 -0
  44. package/dist/lib/config/aws/securityBaseline.js +27 -0
  45. package/dist/lib/config/aws/securityHubHub.d.ts +15 -0
  46. package/dist/lib/config/aws/securityHubHub.js +28 -0
  47. package/dist/lib/config/aws/securityServicesAdmin.d.ts +20 -0
  48. package/dist/lib/config/aws/securityServicesAdmin.js +115 -0
  49. package/dist/lib/config/index.d.ts +2 -2
  50. package/dist/lib/config/index.js +2 -21
  51. package/dist/lib/index.d.ts +4 -4
  52. package/dist/lib/index.js +5 -26
  53. package/dist/lib/patterns/aws/account.d.ts +17 -1
  54. package/dist/lib/patterns/aws/account.js +61 -33
  55. package/dist/lib/patterns/aws/apexDomainPattern.d.ts +26 -0
  56. package/dist/lib/patterns/aws/apexDomainPattern.js +91 -0
  57. package/dist/lib/patterns/aws/auditRole.js +13 -16
  58. package/dist/lib/patterns/aws/buildkite.d.ts +1 -1
  59. package/dist/lib/patterns/aws/buildkite.js +70 -75
  60. package/dist/lib/patterns/aws/cdn.d.ts +5 -5
  61. package/dist/lib/patterns/aws/cdn.js +22 -28
  62. package/dist/lib/patterns/aws/compute.d.ts +1 -1
  63. package/dist/lib/patterns/aws/compute.js +31 -44
  64. package/dist/lib/patterns/aws/computeEc2.d.ts +1 -1
  65. package/dist/lib/patterns/aws/computeEc2.js +11 -14
  66. package/dist/lib/patterns/aws/computeEcs.d.ts +18 -2
  67. package/dist/lib/patterns/aws/computeEcs.js +41 -31
  68. package/dist/lib/patterns/aws/computeLambda.d.ts +2 -2
  69. package/dist/lib/patterns/aws/computeLambda.js +24 -31
  70. package/dist/lib/patterns/aws/database.d.ts +16 -7
  71. package/dist/lib/patterns/aws/database.js +81 -73
  72. package/dist/lib/patterns/aws/delegatedDomainPattern.d.ts +17 -0
  73. package/dist/lib/patterns/aws/delegatedDomainPattern.js +54 -0
  74. package/dist/lib/patterns/aws/dnsRecordComposer.d.ts +25 -0
  75. package/dist/lib/patterns/aws/dnsRecordComposer.js +225 -0
  76. package/dist/lib/patterns/aws/domain.d.ts +32 -0
  77. package/dist/lib/patterns/aws/domain.js +115 -0
  78. package/dist/lib/patterns/aws/domainDelegation.d.ts +3 -3
  79. package/dist/lib/patterns/aws/domainDelegation.js +28 -37
  80. package/dist/lib/patterns/aws/domainFactory.d.ts +20 -5
  81. package/dist/lib/patterns/aws/domainFactory.js +48 -10
  82. package/dist/lib/patterns/aws/domainValidation.d.ts +11 -0
  83. package/dist/lib/patterns/aws/domainValidation.js +145 -0
  84. package/dist/lib/patterns/aws/externalRecordsPattern.d.ts +18 -0
  85. package/dist/lib/patterns/aws/externalRecordsPattern.js +141 -0
  86. package/dist/lib/patterns/aws/fivetranProxy.d.ts +1 -1
  87. package/dist/lib/patterns/aws/fivetranProxy.js +6 -11
  88. package/dist/lib/patterns/aws/index.d.ts +21 -19
  89. package/dist/lib/patterns/aws/index.js +25 -36
  90. package/dist/lib/patterns/aws/interfaces/cdn.js +1 -5
  91. package/dist/lib/patterns/aws/interfaces/compute.js +4 -11
  92. package/dist/lib/patterns/aws/interfaces/connector.js +1 -15
  93. package/dist/lib/patterns/aws/interfaces/database.d.ts +1 -1
  94. package/dist/lib/patterns/aws/interfaces/database.js +6 -15
  95. package/dist/lib/patterns/aws/interfaces/domain.d.ts +80 -2
  96. package/dist/lib/patterns/aws/interfaces/domain.js +1 -6
  97. package/dist/lib/patterns/aws/interfaces/index.js +8 -41
  98. package/dist/lib/patterns/aws/interfaces/messaging.js +4 -11
  99. package/dist/lib/patterns/aws/interfaces/organisation.d.ts +1 -1
  100. package/dist/lib/patterns/aws/interfaces/organisation.js +4 -11
  101. package/dist/lib/patterns/aws/interfaces/pattern.js +2 -7
  102. package/dist/lib/patterns/aws/interfaces/storage.js +1 -5
  103. package/dist/lib/patterns/aws/managedIdentityCenter.js +7 -12
  104. package/dist/lib/patterns/aws/messaging.d.ts +7 -7
  105. package/dist/lib/patterns/aws/messaging.js +22 -33
  106. package/dist/lib/patterns/aws/network.d.ts +2 -2
  107. package/dist/lib/patterns/aws/network.js +9 -14
  108. package/dist/lib/patterns/aws/organisation.d.ts +6 -2
  109. package/dist/lib/patterns/aws/organisation.js +34 -35
  110. package/dist/lib/patterns/aws/organisationFactory.d.ts +3 -3
  111. package/dist/lib/patterns/aws/organisationFactory.js +7 -12
  112. package/dist/lib/patterns/aws/pattern.js +6 -12
  113. package/dist/lib/patterns/aws/payload.js +73 -63
  114. package/dist/lib/patterns/aws/platform.d.ts +6 -3
  115. package/dist/lib/patterns/aws/platform.js +15 -15
  116. package/dist/lib/patterns/aws/storage.d.ts +6 -4
  117. package/dist/lib/patterns/aws/storage.js +35 -40
  118. package/dist/lib/patterns/aws/subdomainHostedZone.js +11 -16
  119. package/dist/lib/patterns/aws/targets/fjallTargets.d.ts +37 -0
  120. package/dist/lib/patterns/aws/targets/fjallTargets.js +66 -0
  121. package/dist/lib/patterns/aws/targets/index.d.ts +2 -0
  122. package/dist/lib/patterns/aws/targets/index.js +2 -0
  123. package/dist/lib/patterns/aws/targets/targetResolution.d.ts +76 -0
  124. package/dist/lib/patterns/aws/targets/targetResolution.js +119 -0
  125. package/dist/lib/patterns/index.d.ts +1 -0
  126. package/dist/lib/patterns/index.js +1 -0
  127. package/dist/lib/resources/aws/analytics/clickhouse.d.ts +15 -0
  128. package/dist/lib/resources/aws/analytics/clickhouse.js +292 -0
  129. package/dist/lib/resources/aws/analytics/clickhouseConstants.d.ts +73 -0
  130. package/dist/lib/resources/aws/analytics/clickhouseConstants.js +87 -0
  131. package/dist/lib/resources/aws/analytics/clickhouseSecurityGroup.d.ts +13 -0
  132. package/dist/lib/resources/aws/analytics/clickhouseSecurityGroup.js +28 -0
  133. package/dist/lib/resources/aws/analytics/clickhouseTypes.d.ts +47 -0
  134. package/dist/lib/resources/aws/analytics/clickhouseTypes.js +1 -0
  135. package/dist/lib/resources/aws/analytics/clickhouseUserData.d.ts +5 -0
  136. package/dist/lib/resources/aws/analytics/clickhouseUserData.js +248 -0
  137. package/dist/lib/resources/aws/analytics/index.d.ts +2 -0
  138. package/dist/lib/resources/aws/analytics/index.js +1 -0
  139. package/dist/lib/resources/aws/audit/auditRole.js +10 -15
  140. package/dist/lib/resources/aws/audit/index.d.ts +1 -1
  141. package/dist/lib/resources/aws/audit/index.js +1 -6
  142. package/dist/lib/resources/aws/backup/backupPlan.d.ts +1 -1
  143. package/dist/lib/resources/aws/backup/backupPlan.js +14 -16
  144. package/dist/lib/resources/aws/backup/backupVault.d.ts +1 -1
  145. package/dist/lib/resources/aws/backup/backupVault.js +13 -15
  146. package/dist/lib/resources/aws/backup/index.d.ts +2 -2
  147. package/dist/lib/resources/aws/backup/index.js +2 -19
  148. package/dist/lib/resources/aws/base/awsStack.js +17 -19
  149. package/dist/lib/resources/aws/base/index.d.ts +1 -1
  150. package/dist/lib/resources/aws/base/index.js +1 -18
  151. package/dist/lib/resources/aws/cdn/cloudFront.js +40 -42
  152. package/dist/lib/resources/aws/cdn/index.d.ts +1 -1
  153. package/dist/lib/resources/aws/cdn/index.js +1 -18
  154. package/dist/lib/resources/aws/compute/ec2.js +39 -39
  155. package/dist/lib/resources/aws/compute/ecs.d.ts +18 -396
  156. package/dist/lib/resources/aws/compute/ecs.js +105 -976
  157. package/dist/lib/resources/aws/compute/ecsCapacityProviderAspect.d.ts +22 -0
  158. package/dist/lib/resources/aws/compute/ecsCapacityProviderAspect.js +35 -0
  159. package/dist/lib/resources/aws/compute/ecsConstants.d.ts +20 -0
  160. package/dist/lib/resources/aws/compute/ecsConstants.js +49 -0
  161. package/dist/lib/resources/aws/compute/ecsContext.d.ts +12 -0
  162. package/dist/lib/resources/aws/compute/ecsContext.js +1 -0
  163. package/dist/lib/resources/aws/compute/ecsImages.d.ts +4 -0
  164. package/dist/lib/resources/aws/compute/ecsImages.js +35 -0
  165. package/dist/lib/resources/aws/compute/ecsNetworking.d.ts +28 -0
  166. package/dist/lib/resources/aws/compute/ecsNetworking.js +290 -0
  167. package/dist/lib/resources/aws/compute/ecsRoles.d.ts +15 -0
  168. package/dist/lib/resources/aws/compute/ecsRoles.js +110 -0
  169. package/dist/lib/resources/aws/compute/ecsServiceFactory.d.ts +33 -0
  170. package/dist/lib/resources/aws/compute/ecsServiceFactory.js +183 -0
  171. package/dist/lib/resources/aws/compute/ecsTaskDefinition.d.ts +30 -0
  172. package/dist/lib/resources/aws/compute/ecsTaskDefinition.js +168 -0
  173. package/dist/lib/resources/aws/compute/ecsTypes.d.ts +337 -0
  174. package/dist/lib/resources/aws/compute/ecsTypes.js +10 -0
  175. package/dist/lib/resources/aws/compute/ecsValidation.d.ts +18 -0
  176. package/dist/lib/resources/aws/compute/ecsValidation.js +72 -0
  177. package/dist/lib/resources/aws/compute/index.d.ts +3 -3
  178. package/dist/lib/resources/aws/compute/index.js +3 -20
  179. package/dist/lib/resources/aws/compute/lambda.d.ts +10 -2
  180. package/dist/lib/resources/aws/compute/lambda.js +82 -70
  181. package/dist/lib/resources/aws/database/dynamodb.js +27 -28
  182. package/dist/lib/resources/aws/database/index.d.ts +7 -7
  183. package/dist/lib/resources/aws/database/index.js +14 -33
  184. package/dist/lib/resources/aws/database/rdsAurora.d.ts +10 -2
  185. package/dist/lib/resources/aws/database/rdsAurora.js +76 -61
  186. package/dist/lib/resources/aws/database/rdsAuroraGlobal.d.ts +2 -2
  187. package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +24 -21
  188. package/dist/lib/resources/aws/database/rdsDefaults.js +3 -7
  189. package/dist/lib/resources/aws/database/rdsHelpers.d.ts +2 -2
  190. package/dist/lib/resources/aws/database/rdsHelpers.js +21 -29
  191. package/dist/lib/resources/aws/database/rdsInstance.d.ts +11 -3
  192. package/dist/lib/resources/aws/database/rdsInstance.js +101 -83
  193. package/dist/lib/resources/aws/database/rdsProxyOutput.js +5 -9
  194. package/dist/lib/resources/aws/iam/delegationRole.d.ts +18 -0
  195. package/dist/lib/resources/aws/iam/delegationRole.js +60 -0
  196. package/dist/lib/resources/aws/iam/identityCenter/assignment.js +4 -9
  197. package/dist/lib/resources/aws/iam/identityCenter/group.js +5 -9
  198. package/dist/lib/resources/aws/iam/identityCenter/index.d.ts +3 -3
  199. package/dist/lib/resources/aws/iam/identityCenter/index.js +3 -20
  200. package/dist/lib/resources/aws/iam/identityCenter/permissionSet.d.ts +1 -1
  201. package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +5 -9
  202. package/dist/lib/resources/aws/iam/index.d.ts +5 -4
  203. package/dist/lib/resources/aws/iam/index.js +5 -21
  204. package/dist/lib/resources/aws/iam/instanceProfile.js +2 -7
  205. package/dist/lib/resources/aws/iam/managedPolicy.js +2 -7
  206. package/dist/lib/resources/aws/iam/policy.js +2 -7
  207. package/dist/lib/resources/aws/iam/role.js +2 -7
  208. package/dist/lib/resources/aws/index.d.ts +7 -7
  209. package/dist/lib/resources/aws/index.js +7 -24
  210. package/dist/lib/resources/aws/logging/cloudTrail.d.ts +1 -1
  211. package/dist/lib/resources/aws/logging/cloudTrail.js +18 -22
  212. package/dist/lib/resources/aws/logging/index.d.ts +2 -2
  213. package/dist/lib/resources/aws/logging/index.js +2 -19
  214. package/dist/lib/resources/aws/logging/logGroup.js +4 -10
  215. package/dist/lib/resources/aws/messaging/eventbridge.js +11 -14
  216. package/dist/lib/resources/aws/messaging/index.d.ts +4 -4
  217. package/dist/lib/resources/aws/messaging/index.js +4 -21
  218. package/dist/lib/resources/aws/messaging/sns.js +11 -14
  219. package/dist/lib/resources/aws/messaging/sqs.js +32 -34
  220. package/dist/lib/resources/aws/messaging/utils.d.ts +1 -1
  221. package/dist/lib/resources/aws/messaging/utils.js +1 -6
  222. package/dist/lib/resources/aws/monitoring/alarmDefaults.d.ts +36 -0
  223. package/dist/lib/resources/aws/monitoring/alarmDefaults.js +34 -0
  224. package/dist/lib/resources/aws/monitoring/ecsAlarms.d.ts +21 -0
  225. package/dist/lib/resources/aws/monitoring/ecsAlarms.js +88 -0
  226. package/dist/lib/resources/aws/monitoring/index.d.ts +4 -0
  227. package/dist/lib/resources/aws/monitoring/index.js +4 -5
  228. package/dist/lib/resources/aws/monitoring/lambdaAlarms.d.ts +18 -0
  229. package/dist/lib/resources/aws/monitoring/lambdaAlarms.js +44 -0
  230. package/dist/lib/resources/aws/monitoring/rdsAlarms.d.ts +20 -0
  231. package/dist/lib/resources/aws/monitoring/rdsAlarms.js +52 -0
  232. package/dist/lib/resources/aws/networking/crossAccountDelegationRecord.d.ts +17 -0
  233. package/dist/lib/resources/aws/networking/crossAccountDelegationRecord.js +26 -0
  234. package/dist/lib/resources/aws/networking/dnsRecord/aRecord.d.ts +12 -0
  235. package/dist/lib/resources/aws/networking/dnsRecord/aRecord.js +21 -0
  236. package/dist/lib/resources/aws/networking/dnsRecord/aaaaRecord.d.ts +12 -0
  237. package/dist/lib/resources/aws/networking/dnsRecord/aaaaRecord.js +22 -0
  238. package/dist/lib/resources/aws/networking/dnsRecord/aliasRecord.d.ts +12 -0
  239. package/dist/lib/resources/aws/networking/dnsRecord/aliasRecord.js +23 -0
  240. package/dist/lib/resources/aws/networking/dnsRecord/caaRecord.d.ts +17 -0
  241. package/dist/lib/resources/aws/networking/dnsRecord/caaRecord.js +21 -0
  242. package/dist/lib/resources/aws/networking/dnsRecord/cnameRecord.d.ts +12 -0
  243. package/dist/lib/resources/aws/networking/dnsRecord/cnameRecord.js +22 -0
  244. package/dist/lib/resources/aws/networking/dnsRecord/dnsRecordBase.d.ts +17 -0
  245. package/dist/lib/resources/aws/networking/dnsRecord/dnsRecordBase.js +17 -0
  246. package/dist/lib/resources/aws/networking/dnsRecord/index.d.ts +10 -0
  247. package/dist/lib/resources/aws/networking/dnsRecord/index.js +10 -0
  248. package/dist/lib/resources/aws/networking/dnsRecord/mxRecord.d.ts +16 -0
  249. package/dist/lib/resources/aws/networking/dnsRecord/mxRecord.js +21 -0
  250. package/dist/lib/resources/aws/networking/dnsRecord/nsRecord.d.ts +12 -0
  251. package/dist/lib/resources/aws/networking/dnsRecord/nsRecord.js +21 -0
  252. package/dist/lib/resources/aws/networking/dnsRecord/srvRecord.d.ts +18 -0
  253. package/dist/lib/resources/aws/networking/dnsRecord/srvRecord.js +21 -0
  254. package/dist/lib/resources/aws/networking/dnsRecord/txtRecord.d.ts +12 -0
  255. package/dist/lib/resources/aws/networking/dnsRecord/txtRecord.js +21 -0
  256. package/dist/lib/resources/aws/networking/domain.d.ts +1 -1
  257. package/dist/lib/resources/aws/networking/domain.js +32 -34
  258. package/dist/lib/resources/aws/networking/domainCertificate.d.ts +8 -3
  259. package/dist/lib/resources/aws/networking/domainCertificate.js +22 -16
  260. package/dist/lib/resources/aws/networking/hostedZone.d.ts +23 -19
  261. package/dist/lib/resources/aws/networking/hostedZone.js +70 -134
  262. package/dist/lib/resources/aws/networking/index.d.ts +8 -7
  263. package/dist/lib/resources/aws/networking/index.js +8 -24
  264. package/dist/lib/resources/aws/networking/ipam.js +2 -7
  265. package/dist/lib/resources/aws/networking/ipamPool.d.ts +1 -1
  266. package/dist/lib/resources/aws/networking/ipamPool.js +45 -55
  267. package/dist/lib/resources/aws/networking/securityGroup.js +2 -7
  268. package/dist/lib/resources/aws/networking/vpc.d.ts +1 -1
  269. package/dist/lib/resources/aws/networking/vpc.js +17 -21
  270. package/dist/lib/resources/aws/organisation/costAllocationTagActivator.d.ts +1 -1
  271. package/dist/lib/resources/aws/organisation/costAllocationTagActivator.js +11 -15
  272. package/dist/lib/resources/aws/organisation/index.d.ts +5 -5
  273. package/dist/lib/resources/aws/organisation/index.js +4 -12
  274. package/dist/lib/resources/aws/organisation/organisation.js +5 -7
  275. package/dist/lib/resources/aws/organisation/organisationAccount.js +7 -10
  276. package/dist/lib/resources/aws/organisation/organisationPolicy.js +5 -9
  277. package/dist/lib/resources/aws/organisation/organisationalUnit.js +1 -3
  278. package/dist/lib/resources/aws/secrets/alias.js +2 -7
  279. package/dist/lib/resources/aws/secrets/index.d.ts +4 -4
  280. package/dist/lib/resources/aws/secrets/index.js +4 -21
  281. package/dist/lib/resources/aws/secrets/kms.js +15 -18
  282. package/dist/lib/resources/aws/secrets/parameter.d.ts +3 -3
  283. package/dist/lib/resources/aws/secrets/parameter.js +19 -22
  284. package/dist/lib/resources/aws/secrets/secret.d.ts +2 -2
  285. package/dist/lib/resources/aws/secrets/secret.js +12 -14
  286. package/dist/lib/resources/aws/storage/ecr.d.ts +2 -2
  287. package/dist/lib/resources/aws/storage/ecr.js +7 -13
  288. package/dist/lib/resources/aws/storage/index.d.ts +2 -2
  289. package/dist/lib/resources/aws/storage/index.js +2 -19
  290. package/dist/lib/resources/aws/storage/s3.d.ts +1 -1
  291. package/dist/lib/resources/aws/storage/s3.js +24 -12
  292. package/dist/lib/resources/aws/utilities/awsCustomResource.js +3 -7
  293. package/dist/lib/resources/aws/utilities/codeBuild.js +7 -12
  294. package/dist/lib/resources/aws/utilities/customResource.js +14 -17
  295. package/dist/lib/resources/aws/utilities/customResourceProvider.js +2 -7
  296. package/dist/lib/resources/aws/utilities/index.d.ts +5 -5
  297. package/dist/lib/resources/aws/utilities/index.js +5 -22
  298. package/dist/lib/resources/aws/utilities/resourceShare.js +2 -7
  299. package/dist/lib/resources/index.d.ts +1 -1
  300. package/dist/lib/resources/index.js +1 -18
  301. package/dist/lib/types.js +1 -3
  302. package/dist/lib/utils/accountsUtils.d.ts +5 -0
  303. package/dist/lib/utils/accountsUtils.js +18 -0
  304. package/dist/lib/utils/addSuffixToEmail.js +1 -5
  305. package/dist/lib/utils/backupTierMapping.js +2 -6
  306. package/dist/lib/utils/capitaliseString.js +1 -10
  307. package/dist/lib/utils/connections.js +9 -13
  308. package/dist/lib/utils/connector.js +10 -23
  309. package/dist/lib/utils/constructMap.d.ts +33 -0
  310. package/dist/lib/utils/constructMap.js +154 -0
  311. package/dist/lib/utils/databaseTypes.js +4 -10
  312. package/dist/lib/utils/dnsRecords.d.ts +1 -1
  313. package/dist/lib/utils/dnsRecords.js +23 -27
  314. package/dist/lib/utils/domainTypes.d.ts +0 -1
  315. package/dist/lib/utils/domainTypes.js +2 -10
  316. package/dist/lib/utils/env.js +14 -26
  317. package/dist/lib/utils/getAccountId.js +3 -7
  318. package/dist/lib/utils/getAsync.js +7 -10
  319. package/dist/lib/utils/getConfig.d.ts +0 -2
  320. package/dist/lib/utils/getConfig.js +29 -47
  321. package/dist/lib/utils/getStackOutput.js +4 -8
  322. package/dist/lib/utils/index.d.ts +12 -12
  323. package/dist/lib/utils/index.js +12 -29
  324. package/dist/lib/utils/manifestWriter.d.ts +14 -3
  325. package/dist/lib/utils/manifestWriter.js +60 -43
  326. package/dist/lib/utils/orgConfigParser.d.ts +14 -0
  327. package/dist/lib/utils/orgConfigParser.js +49 -0
  328. package/dist/lib/utils/removalPolicy.js +5 -9
  329. package/dist/lib/utils/resourceNaming.js +11 -16
  330. package/dist/lib/utils/standardTagsAspect.js +9 -16
  331. package/dist/lib/utils/stripAndCamelCase.js +1 -5
  332. package/dist/lib/utils/validationLogger.js +12 -18
  333. package/dist/lib/utils/vpcUtils.js +5 -10
  334. package/package.json +25 -8
  335. package/dist/lib/config/aws/accountId.d.ts +0 -6
  336. package/dist/lib/config/aws/accountId.js +0 -32
  337. package/dist/lib/config/aws/backupGlobalSettings.d.ts +0 -29
  338. package/dist/lib/config/aws/backupGlobalSettings.js +0 -49
  339. package/dist/lib/config/aws/costAllocationTags.d.ts +0 -12
  340. package/dist/lib/config/aws/costAllocationTags.js +0 -47
  341. package/dist/lib/config/aws/ipamDelegateAdmin.d.ts +0 -8
  342. package/dist/lib/config/aws/ipamDelegateAdmin.js +0 -57
  343. package/dist/lib/config/aws/ipamPoolId.d.ts +0 -16
  344. package/dist/lib/config/aws/ipamPoolId.js +0 -42
  345. package/dist/lib/config/aws/organisation.d.ts +0 -30
  346. package/dist/lib/config/aws/organisation.js +0 -92
  347. package/dist/lib/config/aws/organisationId.d.ts +0 -7
  348. package/dist/lib/config/aws/organisationId.js +0 -45
  349. package/dist/lib/config/aws/organisationsAccess.d.ts +0 -10
  350. package/dist/lib/config/aws/organisationsAccess.js +0 -49
  351. package/dist/lib/config/aws/ramSharing.d.ts +0 -4
  352. package/dist/lib/config/aws/ramSharing.js +0 -34
  353. package/dist/lib/config/monitoring.d.ts +0 -18
  354. package/dist/lib/config/monitoring.js +0 -22
  355. package/dist/lib/patterns/aws/connections.d.ts +0 -46
  356. package/dist/lib/patterns/aws/connections.js +0 -159
  357. package/dist/lib/patterns/aws/hostedZone.d.ts +0 -28
  358. package/dist/lib/patterns/aws/hostedZone.js +0 -150
  359. package/dist/lib/patterns/aws/managedAccount.d.ts +0 -9
  360. package/dist/lib/patterns/aws/managedAccount.js +0 -55
  361. package/dist/lib/patterns/aws/managedOrganisation.d.ts +0 -36
  362. package/dist/lib/patterns/aws/managedOrganisation.js +0 -97
  363. package/dist/lib/patterns/aws/managedPlatform.d.ts +0 -12
  364. package/dist/lib/patterns/aws/managedPlatform.js +0 -29
  365. package/dist/lib/resources/aws/database/database.d.ts +0 -14
  366. package/dist/lib/resources/aws/database/database.js +0 -28
  367. package/dist/lib/resources/aws/database/databaseInstance.d.ts +0 -15
  368. package/dist/lib/resources/aws/database/databaseInstance.js +0 -30
  369. package/dist/lib/resources/aws/database/migrationLambda.d.ts +0 -80
  370. package/dist/lib/resources/aws/database/migrationLambda.js +0 -119
  371. package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.d.ts +0 -13
  372. package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.js +0 -51
  373. package/dist/lib/resources/aws/iam/securityGroup.d.ts +0 -5
  374. package/dist/lib/resources/aws/iam/securityGroup.js +0 -14
  375. package/dist/lib/resources/aws/monitoring/monitoringRole.d.ts +0 -29
  376. package/dist/lib/resources/aws/monitoring/monitoringRole.js +0 -120
  377. package/dist/lib/utils/capitalizeString.d.ts +0 -12
  378. package/dist/lib/utils/capitalizeString.js +0 -30
@@ -0,0 +1,17 @@
1
+ import { CfnAnalyzer } from "aws-cdk-lib/aws-accessanalyzer";
2
+ import { Construct } from "constructs";
3
+ /**
4
+ * Per-account IAM Access Analyser. Identifies resources shared with
5
+ * external entities (S3 buckets, IAM roles, KMS keys, Lambda functions).
6
+ * Free service -- no additional cost.
7
+ */
8
+ export class AccountAccessAnalyser extends Construct {
9
+ analyser;
10
+ constructor(scope, id) {
11
+ super(scope, id);
12
+ this.analyser = new CfnAnalyzer(this, "Analyser", {
13
+ analyzerName: "FjallAccountAnalyser",
14
+ type: "ACCOUNT"
15
+ });
16
+ }
17
+ }
@@ -1,10 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AccountAuditRole = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const aws_iam_1 = require("aws-cdk-lib/aws-iam");
6
- const constructs_1 = require("constructs");
7
- const platform_1 = require("./platform");
1
+ import { CfnOutput } from "aws-cdk-lib";
2
+ import { Role, AccountPrincipal, ManagedPolicy } from "aws-cdk-lib/aws-iam";
3
+ import { Construct } from "constructs";
4
+ import { FJALL_PLATFORM_ACCOUNT_ID } from "./platform.js";
8
5
  /**
9
6
  * Per-account audit role for the Fjall platform.
10
7
  *
@@ -12,21 +9,22 @@ const platform_1 = require("./platform");
12
9
  * managed policies, trusting the Fjall platform account. Only instantiated when
13
10
  * a `fjallOrgId` context value is provided to the Account stack.
14
11
  */
15
- class AccountAuditRole extends constructs_1.Construct {
12
+ export class AccountAuditRole extends Construct {
13
+ role;
16
14
  constructor(scope, id, props) {
17
15
  super(scope, id);
18
- this.role = new aws_iam_1.Role(this, "Role", {
16
+ this.role = new Role(this, "Role", {
19
17
  roleName: `FjallAudit${props.fjallOrgId}`,
20
18
  path: "/",
21
- assumedBy: new aws_iam_1.AccountPrincipal(platform_1.FJALL_PLATFORM_ACCOUNT_ID),
19
+ assumedBy: new AccountPrincipal(FJALL_PLATFORM_ACCOUNT_ID),
22
20
  description: `Cross-account audit role for Fjall organisation ${props.fjallOrgId}. Grants read-only access for asset discovery and compliance auditing.`,
23
21
  externalIds: [props.fjallOrgId],
24
22
  managedPolicies: [
25
- aws_iam_1.ManagedPolicy.fromAwsManagedPolicyName("ReadOnlyAccess"),
26
- aws_iam_1.ManagedPolicy.fromAwsManagedPolicyName("SecurityAudit")
23
+ ManagedPolicy.fromAwsManagedPolicyName("ReadOnlyAccess"),
24
+ ManagedPolicy.fromAwsManagedPolicyName("SecurityAudit")
27
25
  ]
28
26
  });
29
- new aws_cdk_lib_1.CfnOutput(this, "FjallAuditRoleArn", {
27
+ new CfnOutput(this, "FjallAuditRoleArn", {
30
28
  key: "FjallAuditRoleArn",
31
29
  value: this.role.roleArn,
32
30
  description: `ARN of the Fjall audit role for organisation ${props.fjallOrgId}`,
@@ -34,5 +32,3 @@ class AccountAuditRole extends constructs_1.Construct {
34
32
  });
35
33
  }
36
34
  }
37
- exports.AccountAuditRole = AccountAuditRole;
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudEF1ZGl0Um9sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9jb25maWcvYXdzL2FjY291bnRBdWRpdFJvbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXdDO0FBQ3hDLGlEQUE0RTtBQUM1RSwyQ0FBdUM7QUFDdkMseUNBQXVEO0FBVXZEOzs7Ozs7R0FNRztBQUNILE1BQWEsZ0JBQWlCLFNBQVEsc0JBQVM7SUFHN0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE0QjtRQUNwRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxjQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUNqQyxRQUFRLEVBQUUsYUFBYSxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ3pDLElBQUksRUFBRSxHQUFHO1lBQ1QsU0FBUyxFQUFFLElBQUksMEJBQWdCLENBQUMsb0NBQXlCLENBQUM7WUFDMUQsV0FBVyxFQUFFLG1EQUFtRCxLQUFLLENBQUMsVUFBVSx3RUFBd0U7WUFDeEosV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUMvQixlQUFlLEVBQUU7Z0JBQ2YsdUJBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDeEQsdUJBQWEsQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLENBQUM7YUFDeEQ7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO1lBQ3ZDLEdBQUcsRUFBRSxtQkFBbUI7WUFDeEIsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUN4QixXQUFXLEVBQUUsZ0RBQWdELEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDL0UsVUFBVSxFQUFFLG1CQUFtQjtTQUNoQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF6QkQsNENBeUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBSb2xlLCBBY2NvdW50UHJpbmNpcGFsLCBNYW5hZ2VkUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBGSkFMTF9QTEFURk9STV9BQ0NPVU5UX0lEIH0gZnJvbSBcIi4vcGxhdGZvcm1cIjtcblxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50QXVkaXRSb2xlUHJvcHMge1xuICAvKipcbiAgICogVGhlIEZqYWxsIG9yZ2FuaXNhdGlvbiBJRC4gVXNlZCBhcyBhIHN1ZmZpeCBpbiB0aGUgcm9sZSBuYW1lXG4gICAqIChgRmphbGxBdWRpdHtvcmdJZH1gKSBhbmQgYXMgdGhlIEV4dGVybmFsSWQgY29uZGl0aW9uLlxuICAgKi9cbiAgZmphbGxPcmdJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBlci1hY2NvdW50IGF1ZGl0IHJvbGUgZm9yIHRoZSBGamFsbCBwbGF0Zm9ybS5cbiAqXG4gKiBDcmVhdGVzIGEgYEZqYWxsQXVkaXR7b3JnSWR9YCBJQU0gcm9sZSB3aXRoIFJlYWRPbmx5QWNjZXNzIGFuZCBTZWN1cml0eUF1ZGl0XG4gKiBtYW5hZ2VkIHBvbGljaWVzLCB0cnVzdGluZyB0aGUgRmphbGwgcGxhdGZvcm0gYWNjb3VudC4gT25seSBpbnN0YW50aWF0ZWQgd2hlblxuICogYSBgZmphbGxPcmdJZGAgY29udGV4dCB2YWx1ZSBpcyBwcm92aWRlZCB0byB0aGUgQWNjb3VudCBzdGFjay5cbiAqL1xuZXhwb3J0IGNsYXNzIEFjY291bnRBdWRpdFJvbGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogUm9sZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQWNjb3VudEF1ZGl0Um9sZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucm9sZSA9IG5ldyBSb2xlKHRoaXMsIFwiUm9sZVwiLCB7XG4gICAgICByb2xlTmFtZTogYEZqYWxsQXVkaXQke3Byb3BzLmZqYWxsT3JnSWR9YCxcbiAgICAgIHBhdGg6IFwiL1wiLFxuICAgICAgYXNzdW1lZEJ5OiBuZXcgQWNjb3VudFByaW5jaXBhbChGSkFMTF9QTEFURk9STV9BQ0NPVU5UX0lEKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgQ3Jvc3MtYWNjb3VudCBhdWRpdCByb2xlIGZvciBGamFsbCBvcmdhbmlzYXRpb24gJHtwcm9wcy5mamFsbE9yZ0lkfS4gR3JhbnRzIHJlYWQtb25seSBhY2Nlc3MgZm9yIGFzc2V0IGRpc2NvdmVyeSBhbmQgY29tcGxpYW5jZSBhdWRpdGluZy5gLFxuICAgICAgZXh0ZXJuYWxJZHM6IFtwcm9wcy5mamFsbE9yZ0lkXSxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICBNYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcIlJlYWRPbmx5QWNjZXNzXCIpLFxuICAgICAgICBNYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcIlNlY3VyaXR5QXVkaXRcIilcbiAgICAgIF1cbiAgICB9KTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJGamFsbEF1ZGl0Um9sZUFyblwiLCB7XG4gICAgICBrZXk6IFwiRmphbGxBdWRpdFJvbGVBcm5cIixcbiAgICAgIHZhbHVlOiB0aGlzLnJvbGUucm9sZUFybixcbiAgICAgIGRlc2NyaXB0aW9uOiBgQVJOIG9mIHRoZSBGamFsbCBhdWRpdCByb2xlIGZvciBvcmdhbmlzYXRpb24gJHtwcm9wcy5mamFsbE9yZ0lkfWAsXG4gICAgICBleHBvcnROYW1lOiBcIkZqYWxsQXVkaXRSb2xlQXJuXCJcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,10 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AccountMonitoringRole = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const aws_iam_1 = require("aws-cdk-lib/aws-iam");
6
- const constructs_1 = require("constructs");
7
- const platform_1 = require("./platform");
1
+ import { CfnOutput } from "aws-cdk-lib";
2
+ import { Role, AccountPrincipal, PolicyStatement, Effect } from "aws-cdk-lib/aws-iam";
3
+ import { Construct } from "constructs";
4
+ import { FJALL_PLATFORM_ACCOUNT_ID } from "./platform.js";
8
5
  /**
9
6
  * Per-account monitoring role for the Fjall platform.
10
7
  *
@@ -14,19 +11,20 @@ const platform_1 = require("./platform");
14
11
  *
15
12
  * This replaces the previous per-app `FjallMonitoring-{appName}` roles.
16
13
  */
17
- class AccountMonitoringRole extends constructs_1.Construct {
14
+ export class AccountMonitoringRole extends Construct {
15
+ role;
18
16
  constructor(scope, id, props) {
19
17
  super(scope, id);
20
- this.role = new aws_iam_1.Role(this, "Role", {
18
+ this.role = new Role(this, "Role", {
21
19
  roleName: "FjallMonitoring",
22
20
  path: "/",
23
- assumedBy: new aws_iam_1.AccountPrincipal(platform_1.FJALL_PLATFORM_ACCOUNT_ID),
21
+ assumedBy: new AccountPrincipal(FJALL_PLATFORM_ACCOUNT_ID),
24
22
  description: "Cross-account monitoring role for the Fjall platform. Grants read access to CloudWatch, ECS, RDS, S3, Lambda, ALB, Logs, and Cost Explorer.",
25
23
  ...(props?.fjallOrgId ? { externalIds: [props.fjallOrgId] } : {})
26
24
  });
27
25
  // CloudWatch Metrics
28
- this.role.addToPolicy(new aws_iam_1.PolicyStatement({
29
- effect: aws_iam_1.Effect.ALLOW,
26
+ this.role.addToPolicy(new PolicyStatement({
27
+ effect: Effect.ALLOW,
30
28
  actions: [
31
29
  "cloudwatch:GetMetricData",
32
30
  "cloudwatch:GetMetricStatistics",
@@ -35,8 +33,8 @@ class AccountMonitoringRole extends constructs_1.Construct {
35
33
  resources: ["*"]
36
34
  }));
37
35
  // ECS
38
- this.role.addToPolicy(new aws_iam_1.PolicyStatement({
39
- effect: aws_iam_1.Effect.ALLOW,
36
+ this.role.addToPolicy(new PolicyStatement({
37
+ effect: Effect.ALLOW,
40
38
  actions: [
41
39
  "ecs:DescribeServices",
42
40
  "ecs:DescribeTasks",
@@ -47,8 +45,8 @@ class AccountMonitoringRole extends constructs_1.Construct {
47
45
  resources: ["*"]
48
46
  }));
49
47
  // RDS
50
- this.role.addToPolicy(new aws_iam_1.PolicyStatement({
51
- effect: aws_iam_1.Effect.ALLOW,
48
+ this.role.addToPolicy(new PolicyStatement({
49
+ effect: Effect.ALLOW,
52
50
  actions: [
53
51
  "rds:DescribeDBInstances",
54
52
  "rds:DescribeDBClusters",
@@ -58,8 +56,8 @@ class AccountMonitoringRole extends constructs_1.Construct {
58
56
  resources: ["*"]
59
57
  }));
60
58
  // S3
61
- this.role.addToPolicy(new aws_iam_1.PolicyStatement({
62
- effect: aws_iam_1.Effect.ALLOW,
59
+ this.role.addToPolicy(new PolicyStatement({
60
+ effect: Effect.ALLOW,
63
61
  actions: [
64
62
  "s3:GetBucketLocation",
65
63
  "s3:GetBucketMetricsConfiguration",
@@ -70,8 +68,8 @@ class AccountMonitoringRole extends constructs_1.Construct {
70
68
  resources: ["*"]
71
69
  }));
72
70
  // Lambda
73
- this.role.addToPolicy(new aws_iam_1.PolicyStatement({
74
- effect: aws_iam_1.Effect.ALLOW,
71
+ this.role.addToPolicy(new PolicyStatement({
72
+ effect: Effect.ALLOW,
75
73
  actions: [
76
74
  "lambda:GetFunction",
77
75
  "lambda:GetFunctionConfiguration",
@@ -81,8 +79,8 @@ class AccountMonitoringRole extends constructs_1.Construct {
81
79
  resources: ["*"]
82
80
  }));
83
81
  // Application Load Balancer
84
- this.role.addToPolicy(new aws_iam_1.PolicyStatement({
85
- effect: aws_iam_1.Effect.ALLOW,
82
+ this.role.addToPolicy(new PolicyStatement({
83
+ effect: Effect.ALLOW,
86
84
  actions: [
87
85
  "elasticloadbalancing:DescribeLoadBalancers",
88
86
  "elasticloadbalancing:DescribeTargetGroups",
@@ -92,8 +90,8 @@ class AccountMonitoringRole extends constructs_1.Construct {
92
90
  resources: ["*"]
93
91
  }));
94
92
  // CloudWatch Logs
95
- this.role.addToPolicy(new aws_iam_1.PolicyStatement({
96
- effect: aws_iam_1.Effect.ALLOW,
93
+ this.role.addToPolicy(new PolicyStatement({
94
+ effect: Effect.ALLOW,
97
95
  actions: [
98
96
  "logs:FilterLogEvents",
99
97
  "logs:GetLogEvents",
@@ -103,8 +101,8 @@ class AccountMonitoringRole extends constructs_1.Construct {
103
101
  resources: ["*"]
104
102
  }));
105
103
  // Cost Explorer
106
- this.role.addToPolicy(new aws_iam_1.PolicyStatement({
107
- effect: aws_iam_1.Effect.ALLOW,
104
+ this.role.addToPolicy(new PolicyStatement({
105
+ effect: Effect.ALLOW,
108
106
  actions: [
109
107
  "ce:GetCostAndUsage",
110
108
  "ce:GetCostAndUsageWithResources",
@@ -121,7 +119,7 @@ class AccountMonitoringRole extends constructs_1.Construct {
121
119
  ],
122
120
  resources: ["*"]
123
121
  }));
124
- new aws_cdk_lib_1.CfnOutput(this, "FjallMonitoringRoleArn", {
122
+ new CfnOutput(this, "FjallMonitoringRoleArn", {
125
123
  key: "FjallMonitoringRoleArn",
126
124
  value: this.role.roleArn,
127
125
  description: "ARN of the per-account Fjall monitoring role",
@@ -129,5 +127,3 @@ class AccountMonitoringRole extends constructs_1.Construct {
129
127
  });
130
128
  }
131
129
  }
132
- exports.AccountMonitoringRole = AccountMonitoringRole;
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudE1vbml0b3JpbmdSb2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2NvbmZpZy9hd3MvYWNjb3VudE1vbml0b3JpbmdSb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF3QztBQUN4QyxpREFLNkI7QUFDN0IsMkNBQXVDO0FBQ3ZDLHlDQUF1RDtBQVV2RDs7Ozs7Ozs7R0FRRztBQUNILE1BQWEscUJBQXNCLFNBQVEsc0JBQVM7SUFHbEQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBa0M7UUFFbEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksY0FBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDakMsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixJQUFJLEVBQUUsR0FBRztZQUNULFNBQVMsRUFBRSxJQUFJLDBCQUFnQixDQUFDLG9DQUF5QixDQUFDO1lBQzFELFdBQVcsRUFDVCw2SUFBNkk7WUFDL0ksR0FBRyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNsRSxDQUFDLENBQUM7UUFFSCxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQ25CLElBQUkseUJBQWUsQ0FBQztZQUNsQixNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO1lBQ3BCLE9BQU8sRUFBRTtnQkFDUCwwQkFBMEI7Z0JBQzFCLGdDQUFnQztnQkFDaEMsd0JBQXdCO2FBQ3pCO1lBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO1NBQ2pCLENBQUMsQ0FDSCxDQUFDO1FBRUYsTUFBTTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUNuQixJQUFJLHlC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ckMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBbkpELHNEQW1KQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgUm9sZSxcbiAgQWNjb3VudFByaW5jaXBhbCxcbiAgUG9saWN5U3RhdGVtZW50LFxuICBFZmZlY3Rcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBGSkFMTF9QTEFURk9STV9BQ0NPVU5UX0lEIH0gZnJvbSBcIi4vcGxhdGZvcm1cIjtcblxuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50TW9uaXRvcmluZ1JvbGVQcm9wcyB7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBGamFsbCBvcmdhbmlzYXRpb24gSUQuIFdoZW4gcHJvdmlkZWQsIHVzZWQgYXMgdGhlIEV4dGVybmFsSWRcbiAgICogY29uZGl0aW9uIGZvciBhZGRpdGlvbmFsIGFzc3VtZS1yb2xlIHNlY3VyaXR5LlxuICAgKi9cbiAgZmphbGxPcmdJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQZXItYWNjb3VudCBtb25pdG9yaW5nIHJvbGUgZm9yIHRoZSBGamFsbCBwbGF0Zm9ybS5cbiAqXG4gKiBDcmVhdGVzIGEgc2luZ2xlIGBGamFsbE1vbml0b3JpbmdgIElBTSByb2xlIHBlciBBV1MgYWNjb3VudCAoaW4gdGhlIEFjY291bnQgc3RhY2spXG4gKiB0aGF0IGdyYW50cyB0aGUgRmphbGwgcGxhdGZvcm0gcmVhZCBhY2Nlc3MgdG8gQ2xvdWRXYXRjaCBtZXRyaWNzLCBFQ1MsIFJEUywgUzMsXG4gKiBMYW1iZGEsIEFMQiwgQ2xvdWRXYXRjaCBMb2dzLCBhbmQgQ29zdCBFeHBsb3Jlci5cbiAqXG4gKiBUaGlzIHJlcGxhY2VzIHRoZSBwcmV2aW91cyBwZXItYXBwIGBGamFsbE1vbml0b3Jpbmcte2FwcE5hbWV9YCByb2xlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEFjY291bnRNb25pdG9yaW5nUm9sZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBSb2xlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wcz86IEFjY291bnRNb25pdG9yaW5nUm9sZVByb3BzXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnJvbGUgPSBuZXcgUm9sZSh0aGlzLCBcIlJvbGVcIiwge1xuICAgICAgcm9sZU5hbWU6IFwiRmphbGxNb25pdG9yaW5nXCIsXG4gICAgICBwYXRoOiBcIi9cIixcbiAgICAgIGFzc3VtZWRCeTogbmV3IEFjY291bnRQcmluY2lwYWwoRkpBTExfUExBVEZPUk1fQUNDT1VOVF9JRCksXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJDcm9zcy1hY2NvdW50IG1vbml0b3Jpbmcgcm9sZSBmb3IgdGhlIEZqYWxsIHBsYXRmb3JtLiBHcmFudHMgcmVhZCBhY2Nlc3MgdG8gQ2xvdWRXYXRjaCwgRUNTLCBSRFMsIFMzLCBMYW1iZGEsIEFMQiwgTG9ncywgYW5kIENvc3QgRXhwbG9yZXIuXCIsXG4gICAgICAuLi4ocHJvcHM/LmZqYWxsT3JnSWQgPyB7IGV4dGVybmFsSWRzOiBbcHJvcHMuZmphbGxPcmdJZF0gfSA6IHt9KVxuICAgIH0pO1xuXG4gICAgLy8gQ2xvdWRXYXRjaCBNZXRyaWNzXG4gICAgdGhpcy5yb2xlLmFkZFRvUG9saWN5KFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgXCJjbG91ZHdhdGNoOkdldE1ldHJpY0RhdGFcIixcbiAgICAgICAgICBcImNsb3Vkd2F0Y2g6R2V0TWV0cmljU3RhdGlzdGljc1wiLFxuICAgICAgICAgIFwiY2xvdWR3YXRjaDpMaXN0TWV0cmljc1wiXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gRUNTXG4gICAgdGhpcy5yb2xlLmFkZFRvUG9saWN5KFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgXCJlY3M6RGVzY3JpYmVTZXJ2aWNlc1wiLFxuICAgICAgICAgIFwiZWNzOkRlc2NyaWJlVGFza3NcIixcbiAgICAgICAgICBcImVjczpMaXN0VGFza3NcIixcbiAgICAgICAgICBcImVjczpEZXNjcmliZUNsdXN0ZXJzXCIsXG4gICAgICAgICAgXCJlY3M6TGlzdFNlcnZpY2VzXCJcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBSRFNcbiAgICB0aGlzLnJvbGUuYWRkVG9Qb2xpY3koXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICBcInJkczpEZXNjcmliZURCSW5zdGFuY2VzXCIsXG4gICAgICAgICAgXCJyZHM6RGVzY3JpYmVEQkNsdXN0ZXJzXCIsXG4gICAgICAgICAgXCJyZHM6RGVzY3JpYmVEQlByb3hpZXNcIixcbiAgICAgICAgICBcInJkczpMaXN0VGFnc0ZvclJlc291cmNlXCJcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBTM1xuICAgIHRoaXMucm9sZS5hZGRUb1BvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIFwiczM6R2V0QnVja2V0TG9jYXRpb25cIixcbiAgICAgICAgICBcInMzOkdldEJ1Y2tldE1ldHJpY3NDb25maWd1cmF0aW9uXCIsXG4gICAgICAgICAgXCJzMzpHZXRCdWNrZXRUYWdnaW5nXCIsXG4gICAgICAgICAgXCJzMzpMaXN0QnVja2V0XCIsXG4gICAgICAgICAgXCJzMzpMaXN0QWxsTXlCdWNrZXRzXCJcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBMYW1iZGFcbiAgICB0aGlzLnJvbGUuYWRkVG9Qb2xpY3koXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICBcImxhbWJkYTpHZXRGdW5jdGlvblwiLFxuICAgICAgICAgIFwibGFtYmRhOkdldEZ1bmN0aW9uQ29uZmlndXJhdGlvblwiLFxuICAgICAgICAgIFwibGFtYmRhOkxpc3RGdW5jdGlvbnNcIixcbiAgICAgICAgICBcImxhbWJkYTpMaXN0VGFnc1wiXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlclxuICAgIHRoaXMucm9sZS5hZGRUb1BvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIFwiZWxhc3RpY2xvYWRiYWxhbmNpbmc6RGVzY3JpYmVMb2FkQmFsYW5jZXJzXCIsXG4gICAgICAgICAgXCJlbGFzdGljbG9hZGJhbGFuY2luZzpEZXNjcmliZVRhcmdldEdyb3Vwc1wiLFxuICAgICAgICAgIFwiZWxhc3RpY2xvYWRiYWxhbmNpbmc6RGVzY3JpYmVUYXJnZXRIZWFsdGhcIixcbiAgICAgICAgICBcImVsYXN0aWNsb2FkYmFsYW5jaW5nOkRlc2NyaWJlVGFnc1wiXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gQ2xvdWRXYXRjaCBMb2dzXG4gICAgdGhpcy5yb2xlLmFkZFRvUG9saWN5KFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgXCJsb2dzOkZpbHRlckxvZ0V2ZW50c1wiLFxuICAgICAgICAgIFwibG9nczpHZXRMb2dFdmVudHNcIixcbiAgICAgICAgICBcImxvZ3M6RGVzY3JpYmVMb2dHcm91cHNcIixcbiAgICAgICAgICBcImxvZ3M6RGVzY3JpYmVMb2dTdHJlYW1zXCJcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdXG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBDb3N0IEV4cGxvcmVyXG4gICAgdGhpcy5yb2xlLmFkZFRvUG9saWN5KFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgXCJjZTpHZXRDb3N0QW5kVXNhZ2VcIixcbiAgICAgICAgICBcImNlOkdldENvc3RBbmRVc2FnZVdpdGhSZXNvdXJjZXNcIixcbiAgICAgICAgICBcImNlOkdldENvc3RGb3JlY2FzdFwiLFxuICAgICAgICAgIFwiY2U6R2V0Q29zdENhdGVnb3JpZXNcIixcbiAgICAgICAgICBcImNlOkdldFNhdmluZ3NQbGFuc1V0aWxpemF0aW9uXCIsXG4gICAgICAgICAgXCJjZTpHZXRTYXZpbmdzUGxhbnNVdGlsaXphdGlvbkRldGFpbHNcIixcbiAgICAgICAgICBcImNlOkdldFNhdmluZ3NQbGFuc0NvdmVyYWdlXCIsXG4gICAgICAgICAgXCJjZTpHZXRTYXZpbmdzUGxhbnNQdXJjaGFzZVJlY29tbWVuZGF0aW9uXCIsXG4gICAgICAgICAgXCJjZTpHZXRSZXNlcnZhdGlvblV0aWxpemF0aW9uXCIsXG4gICAgICAgICAgXCJjZTpHZXRSZXNlcnZhdGlvbkNvdmVyYWdlXCIsXG4gICAgICAgICAgXCJjZTpHZXRSZXNlcnZhdGlvblB1cmNoYXNlUmVjb21tZW5kYXRpb25cIixcbiAgICAgICAgICBcImNlOkdldFJpZ2h0c2l6aW5nUmVjb21tZW5kYXRpb25cIlxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJGamFsbE1vbml0b3JpbmdSb2xlQXJuXCIsIHtcbiAgICAgIGtleTogXCJGamFsbE1vbml0b3JpbmdSb2xlQXJuXCIsXG4gICAgICB2YWx1ZTogdGhpcy5yb2xlLnJvbGVBcm4sXG4gICAgICBkZXNjcmlwdGlvbjogXCJBUk4gb2YgdGhlIHBlci1hY2NvdW50IEZqYWxsIG1vbml0b3Jpbmcgcm9sZVwiLFxuICAgICAgZXhwb3J0TmFtZTogXCJGamFsbE1vbml0b3JpbmdSb2xlQXJuXCJcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,8 @@
1
+ import { CfnOutput } from "aws-cdk-lib";
2
+ import type { ITopic } from "aws-cdk-lib/aws-sns";
3
+ import { Construct } from "constructs";
4
+ export declare class SharedAlarmTopic extends Construct {
5
+ readonly topic: ITopic;
6
+ readonly topicArn: CfnOutput;
7
+ constructor(scope: Construct, id: string);
8
+ }
@@ -0,0 +1,19 @@
1
+ import { CfnOutput } from "aws-cdk-lib";
2
+ import * as sns from "aws-cdk-lib/aws-sns";
3
+ import { Construct } from "constructs";
4
+ export class SharedAlarmTopic extends Construct {
5
+ topic;
6
+ topicArn;
7
+ constructor(scope, id) {
8
+ super(scope, id);
9
+ const topic = new sns.Topic(this, "AlarmNotifications", {
10
+ displayName: "Fjall CloudWatch Alarm Notifications"
11
+ });
12
+ this.topic = topic;
13
+ this.topicArn = new CfnOutput(this, "SharedAlarmTopicArn", {
14
+ key: "SharedAlarmTopicArn",
15
+ value: topic.topicArn,
16
+ exportName: "SharedAlarmTopicArn"
17
+ });
18
+ }
19
+ }
@@ -1,17 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ManagementEventsTrail = void 0;
4
- const constructs_1 = require("constructs");
5
- const cloudTrail_1 = require("../../resources/aws/logging/cloudTrail");
6
- class ManagementEventsTrail extends constructs_1.Construct {
1
+ import { Construct } from "constructs";
2
+ import { Trail } from "../../resources/aws/logging/cloudTrail.js";
3
+ export class ManagementEventsTrail extends Construct {
7
4
  constructor(scope, id, props) {
8
5
  super(scope, id);
9
- new cloudTrail_1.Trail(this, "managementEventsTrail", {
6
+ new Trail(this, "managementEventsTrail", {
10
7
  bucketName: `cloudtrail-management-events-${props.accountId}-${props.region}`,
11
8
  trailName: "managementEvents",
12
9
  isMultiRegionTrail: true
13
10
  });
14
11
  }
15
12
  }
16
- exports.ManagementEventsTrail = ManagementEventsTrail;
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRUcmFpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9jb25maWcvYXdzL2Nsb3VkVHJhaWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBQ3ZDLHVFQUErRDtBQU8vRCxNQUFhLHFCQUFzQixTQUFRLHNCQUFTO0lBQ2xELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBaUM7UUFDekUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLGtCQUFLLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFO1lBQ3ZDLFVBQVUsRUFBRSxnQ0FBZ0MsS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQzdFLFNBQVMsRUFBRSxrQkFBa0I7WUFDN0Isa0JBQWtCLEVBQUUsSUFBSTtTQUN6QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFWRCxzREFVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUcmFpbCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2xvZ2dpbmcvY2xvdWRUcmFpbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1hbmFnZW1lbnRFdmVudHNUcmFpbFByb3BzIHtcbiAgYWNjb3VudElkOiBzdHJpbmc7XG4gIHJlZ2lvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgTWFuYWdlbWVudEV2ZW50c1RyYWlsIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE1hbmFnZW1lbnRFdmVudHNUcmFpbFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIG5ldyBUcmFpbCh0aGlzLCBcIm1hbmFnZW1lbnRFdmVudHNUcmFpbFwiLCB7XG4gICAgICBidWNrZXROYW1lOiBgY2xvdWR0cmFpbC1tYW5hZ2VtZW50LWV2ZW50cy0ke3Byb3BzLmFjY291bnRJZH0tJHtwcm9wcy5yZWdpb259YCxcbiAgICAgIHRyYWlsTmFtZTogXCJtYW5hZ2VtZW50RXZlbnRzXCIsXG4gICAgICBpc011bHRpUmVnaW9uVHJhaWw6IHRydWVcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { Construct } from "constructs";
2
+ export interface ConfigRecorderProps {
3
+ /** Record all supported resource types. Default: true */
4
+ allResources?: boolean;
5
+ /** Include global resource types (IAM, etc.). Default: true */
6
+ includeGlobalResources?: boolean;
7
+ }
8
+ /**
9
+ * AWS Config recorder with S3 delivery channel.
10
+ * Records configuration changes to all supported resources.
11
+ * Prerequisite for SecurityHub compliance checks and Config Rules.
12
+ */
13
+ export declare class ConfigRecorder extends Construct {
14
+ readonly deliveryBucketName: string;
15
+ constructor(scope: Construct, id: string, props?: ConfigRecorderProps);
16
+ }
@@ -0,0 +1,51 @@
1
+ import { Duration, RemovalPolicy } from "aws-cdk-lib";
2
+ import { CfnConfigurationRecorder, CfnDeliveryChannel } from "aws-cdk-lib/aws-config";
3
+ import { Role, ServicePrincipal, ManagedPolicy } from "aws-cdk-lib/aws-iam";
4
+ import { Bucket, BucketEncryption, BlockPublicAccess } from "aws-cdk-lib/aws-s3";
5
+ import { Construct } from "constructs";
6
+ /**
7
+ * AWS Config recorder with S3 delivery channel.
8
+ * Records configuration changes to all supported resources.
9
+ * Prerequisite for SecurityHub compliance checks and Config Rules.
10
+ */
11
+ export class ConfigRecorder extends Construct {
12
+ deliveryBucketName;
13
+ constructor(scope, id, props) {
14
+ super(scope, id);
15
+ const allResources = props?.allResources !== false;
16
+ const includeGlobalResources = props?.includeGlobalResources !== false;
17
+ // Delivery bucket -- S3-managed encryption, 90-day lifecycle, no public access
18
+ const deliveryBucket = new Bucket(this, "DeliveryBucket", {
19
+ encryption: BucketEncryption.S3_MANAGED,
20
+ blockPublicAccess: BlockPublicAccess.BLOCK_ALL,
21
+ enforceSSL: true,
22
+ removalPolicy: RemovalPolicy.RETAIN,
23
+ lifecycleRules: [{ expiration: Duration.days(90), enabled: true }]
24
+ });
25
+ this.deliveryBucketName = deliveryBucket.bucketName;
26
+ // IAM role for Config service
27
+ const configRole = new Role(this, "ConfigRole", {
28
+ assumedBy: new ServicePrincipal("config.amazonaws.com"),
29
+ managedPolicies: [
30
+ ManagedPolicy.fromAwsManagedPolicyName("service-role/AWS_ConfigRole")
31
+ ]
32
+ });
33
+ deliveryBucket.grantReadWrite(configRole);
34
+ // Configuration recorder
35
+ const recorder = new CfnConfigurationRecorder(this, "Recorder", {
36
+ roleArn: configRole.roleArn,
37
+ recordingGroup: {
38
+ allSupported: allResources,
39
+ includeGlobalResourceTypes: includeGlobalResources
40
+ }
41
+ });
42
+ // Delivery channel
43
+ const deliveryChannel = new CfnDeliveryChannel(this, "DeliveryChannel", {
44
+ s3BucketName: deliveryBucket.bucketName,
45
+ configSnapshotDeliveryProperties: {
46
+ deliveryFrequency: "TwentyFour_Hours"
47
+ }
48
+ });
49
+ deliveryChannel.addDependency(recorder);
50
+ }
51
+ }
@@ -0,0 +1,13 @@
1
+ import { Construct } from "constructs";
2
+ export interface ConfigRulePresetProps {
3
+ /** Preset to apply: "essential" (8 rules) or "production" (20 rules). */
4
+ preset: "essential" | "production";
5
+ }
6
+ /**
7
+ * Curated AWS Config Rule presets for common compliance checks.
8
+ * Each rule is deployed as a managed rule. Requires an active Config recorder
9
+ * in the same account (enforced at the Account stack level, not within this construct).
10
+ */
11
+ export declare class ConfigRulePreset extends Construct {
12
+ constructor(scope: Construct, id: string, props: ConfigRulePresetProps);
13
+ }
@@ -0,0 +1,62 @@
1
+ import { ManagedRule } from "aws-cdk-lib/aws-config";
2
+ import { Construct } from "constructs";
3
+ const ESSENTIAL_RULES = [
4
+ { identifier: "ENCRYPTED_VOLUMES", name: "encrypted-volumes" },
5
+ { identifier: "INCOMING_SSH_DISABLED", name: "restricted-ssh" },
6
+ { identifier: "S3_BUCKET_SSL_REQUESTS_ONLY", name: "s3-ssl-only" },
7
+ { identifier: "RDS_STORAGE_ENCRYPTED", name: "rds-encryption" },
8
+ { identifier: "ROOT_ACCOUNT_MFA_ENABLED", name: "root-mfa" },
9
+ { identifier: "IAM_ROOT_ACCESS_KEY_CHECK", name: "root-access-keys" },
10
+ {
11
+ identifier: "RESTRICTED_INCOMING_TRAFFIC",
12
+ name: "restricted-incoming-traffic"
13
+ },
14
+ { identifier: "EC2_INSTANCE_NO_PUBLIC_IP", name: "ec2-no-public-ip" }
15
+ ];
16
+ const PRODUCTION_EXTRA_RULES = [
17
+ { identifier: "S3_BUCKET_PUBLIC_READ_PROHIBITED", name: "s3-public-read" },
18
+ { identifier: "S3_BUCKET_PUBLIC_WRITE_PROHIBITED", name: "s3-public-write" },
19
+ { identifier: "RDS_INSTANCE_PUBLIC_ACCESS_CHECK", name: "rds-not-public" },
20
+ { identifier: "CLOUD_TRAIL_ENABLED", name: "cloudtrail-enabled" },
21
+ { identifier: "VPC_FLOW_LOGS_ENABLED", name: "vpc-flow-logs" },
22
+ { identifier: "IAM_USER_MFA_ENABLED", name: "iam-user-mfa" },
23
+ {
24
+ identifier: "LAMBDA_FUNCTION_PUBLIC_ACCESS_PROHIBITED",
25
+ name: "lambda-not-public"
26
+ },
27
+ { identifier: "EBS_OPTIMIZED_INSTANCE", name: "ebs-optimised-instance" },
28
+ {
29
+ identifier: "SUBNET_AUTO_ASSIGN_PUBLIC_IP_DISABLED",
30
+ name: "subnet-no-public-ip"
31
+ },
32
+ {
33
+ identifier: "RDS_SNAPSHOTS_PUBLIC_PROHIBITED",
34
+ name: "rds-snapshots-private"
35
+ },
36
+ { identifier: "EKS_ENDPOINT_NO_PUBLIC_ACCESS", name: "eks-private-endpoint" },
37
+ {
38
+ identifier: "S3_ACCOUNT_LEVEL_PUBLIC_ACCESS_BLOCKS_PERIODIC",
39
+ name: "s3-account-bpa"
40
+ }
41
+ ];
42
+ const PRESET_RULES = {
43
+ essential: ESSENTIAL_RULES,
44
+ production: [...ESSENTIAL_RULES, ...PRODUCTION_EXTRA_RULES]
45
+ };
46
+ /**
47
+ * Curated AWS Config Rule presets for common compliance checks.
48
+ * Each rule is deployed as a managed rule. Requires an active Config recorder
49
+ * in the same account (enforced at the Account stack level, not within this construct).
50
+ */
51
+ export class ConfigRulePreset extends Construct {
52
+ constructor(scope, id, props) {
53
+ super(scope, id);
54
+ const rules = PRESET_RULES[props.preset];
55
+ for (const rule of rules) {
56
+ new ManagedRule(this, rule.identifier, {
57
+ identifier: rule.identifier,
58
+ configRuleName: `fjall-${rule.name}`
59
+ });
60
+ }
61
+ }
62
+ }
@@ -1,5 +1,5 @@
1
1
  import { Construct } from "constructs";
2
- import { BackupVault, BackupPlan } from "../../resources/aws/backup";
2
+ import { BackupVault, BackupPlan } from "../../resources/aws/backup/index.js";
3
3
  import { BackupPlanRule } from "aws-cdk-lib/aws-backup";
4
4
  export interface CustomBackupPlanConfig {
5
5
  planName: string;