@@ -8,10 +8,16 @@ locals {
88 // Master user password
99 master_password_in_ssm_param = var. db_master_password_ssm_param != null ? true : false
1010 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
1114
1215 // Provisioned user password
1316 user_password_in_ssm_param = var. db_user_password_ssm_param != null ? true : false
1417 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
1521}
1622
1723# ############################################################
@@ -30,6 +36,12 @@ data "aws_ssm_parameter" "master_password" {
3036 name = var. db_master_password_ssm_param
3137}
3238
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+
3345data "aws_kms_key" "master_password" {
3446 count = var. enabled && local. master_password_in_ssm_param && local. master_password_ssm_param_ecnrypted ? 1 : 0
3547
@@ -42,6 +54,12 @@ data "aws_ssm_parameter" "user_password" {
4254 name = var. db_user_password_ssm_param
4355}
4456
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+
4563data "aws_kms_key" "user_password" {
4664 count = var. enabled && local. user_password_in_ssm_param && local. user_password_ssm_param_ecnrypted ? 1 : 0
4765
@@ -253,6 +271,18 @@ data "aws_iam_policy_document" "master_password_ssm_permissions" {
253271 }
254272}
255273
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+
256286data "aws_iam_policy_document" "master_password_kms_permissions" {
257287 count = var. enabled && local. master_password_in_ssm_param && local. master_password_ssm_param_ecnrypted ? 1 : 0
258288
@@ -277,6 +307,18 @@ data "aws_iam_policy_document" "user_password_ssm_permissions" {
277307 }
278308}
279309
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+
280322data "aws_iam_policy_document" "user_password_kms_permissions" {
281323 count = var. enabled && local. user_password_in_ssm_param && local. user_password_ssm_param_ecnrypted ? 1 : 0
282324
@@ -297,8 +339,10 @@ module "aggregated_policy" {
297339 join (" " , data. aws_iam_policy_document . lambda_kms_permissions . * . json ),
298340 join (" " , data. aws_iam_policy_document . master_password_ssm_permissions . * . json ),
299341 join (" " , data. aws_iam_policy_document . master_password_kms_permissions . * . json ),
342+ join (" " , data. aws_iam_policy_document . master_password_secretsmanager_permissions . * . json ),
300343 join (" " , data. aws_iam_policy_document . user_password_ssm_permissions . * . json ),
301344 join (" " , data. aws_iam_policy_document . user_password_kms_permissions . * . json ),
345+ join (" " , data. aws_iam_policy_document . user_password_secretsmanager_permissions . * . json ),
302346 ])
303347}
304348
0 commit comments