@@ -8,10 +8,16 @@ locals {
8
8
// Master user password
9
9
master_password_in_ssm_param = var. db_master_password_ssm_param != null ? true : false
10
10
master_password_ssm_param_ecnrypted = var. db_master_password_ssm_param_kms_key != null ? true : false
11
+ # Replace null with empty string so that the following regexall will work.
12
+ db_master_password_ssm_param = var. db_master_password_ssm_param == null ? " " : var. db_master_password_ssm_param
13
+ master_password_in_secretsmanager = length (regexall (" /aws/reference/secretsmanager/" , local. db_master_password_ssm_param )) > 0
11
14
12
15
// Provisioned user password
13
16
user_password_in_ssm_param = var. db_user_password_ssm_param != null ? true : false
14
17
user_password_ssm_param_ecnrypted = var. db_user_password_ssm_param_kms_key != null ? true : false
18
+ # Replace null with empty string so that the following regexall will work.
19
+ db_user_password_ssm_param = var. db_user_password_ssm_param == null ? " " : var. db_user_password_ssm_param
20
+ user_password_in_secretsmanager = length (regexall (" /aws/reference/secretsmanager/" , local. db_user_password_ssm_param )) > 0
15
21
}
16
22
17
23
# ############################################################
@@ -30,6 +36,12 @@ data "aws_ssm_parameter" "master_password" {
30
36
name = var. db_master_password_ssm_param
31
37
}
32
38
39
+ data "aws_secretsmanager_secret" "master_password" {
40
+ count = var. enabled && local. master_password_in_secretsmanager ? 1 : 0
41
+
42
+ name = trimprefix (var. db_master_password_ssm_param , " /aws/reference/secretsmanager/" )
43
+ }
44
+
33
45
data "aws_kms_key" "master_password" {
34
46
count = var. enabled && local. master_password_in_ssm_param && local. master_password_ssm_param_ecnrypted ? 1 : 0
35
47
@@ -42,6 +54,12 @@ data "aws_ssm_parameter" "user_password" {
42
54
name = var. db_user_password_ssm_param
43
55
}
44
56
57
+ data "aws_secretsmanager_secret" "user_password" {
58
+ count = var. enabled && local. user_password_in_secretsmanager ? 1 : 0
59
+
60
+ name = trimprefix (var. db_user_password_ssm_param , " /aws/reference/secretsmanager/" )
61
+ }
62
+
45
63
data "aws_kms_key" "user_password" {
46
64
count = var. enabled && local. user_password_in_ssm_param && local. user_password_ssm_param_ecnrypted ? 1 : 0
47
65
@@ -253,6 +271,18 @@ data "aws_iam_policy_document" "master_password_ssm_permissions" {
253
271
}
254
272
}
255
273
274
+ data "aws_iam_policy_document" "master_password_secretsmanager_permissions" {
275
+ count = var. enabled && local. master_password_in_secretsmanager ? 1 : 0
276
+
277
+ statement {
278
+ effect = " Allow"
279
+ actions = [
280
+ " secretsmanager:GetSecretValue" ,
281
+ ]
282
+ resources = [join (" " , data. aws_secretsmanager_secret . master_password . * . arn )]
283
+ }
284
+ }
285
+
256
286
data "aws_iam_policy_document" "master_password_kms_permissions" {
257
287
count = var. enabled && local. master_password_in_ssm_param && local. master_password_ssm_param_ecnrypted ? 1 : 0
258
288
@@ -277,6 +307,18 @@ data "aws_iam_policy_document" "user_password_ssm_permissions" {
277
307
}
278
308
}
279
309
310
+ data "aws_iam_policy_document" "user_password_secretsmanager_permissions" {
311
+ count = var. enabled && local. user_password_in_secretsmanager ? 1 : 0
312
+
313
+ statement {
314
+ effect = " Allow"
315
+ actions = [
316
+ " secretsmanager:GetSecretValue" ,
317
+ ]
318
+ resources = [join (" " , data. aws_secretsmanager_secret . user_password . * . arn )]
319
+ }
320
+ }
321
+
280
322
data "aws_iam_policy_document" "user_password_kms_permissions" {
281
323
count = var. enabled && local. user_password_in_ssm_param && local. user_password_ssm_param_ecnrypted ? 1 : 0
282
324
@@ -297,8 +339,10 @@ module "aggregated_policy" {
297
339
join (" " , data. aws_iam_policy_document . lambda_kms_permissions . * . json ),
298
340
join (" " , data. aws_iam_policy_document . master_password_ssm_permissions . * . json ),
299
341
join (" " , data. aws_iam_policy_document . master_password_kms_permissions . * . json ),
342
+ join (" " , data. aws_iam_policy_document . master_password_secretsmanager_permissions . * . json ),
300
343
join (" " , data. aws_iam_policy_document . user_password_ssm_permissions . * . json ),
301
344
join (" " , data. aws_iam_policy_document . user_password_kms_permissions . * . json ),
345
+ join (" " , data. aws_iam_policy_document . user_password_secretsmanager_permissions . * . json ),
302
346
])
303
347
}
304
348
0 commit comments