Come nascondere i valori di terraform aws_ssm_parameter
Ho un parametro SSM creato con tipo SecureString e valore-chiave as (pasword = Passwor @ d123). Sto cercando di recuperare il valore utilizzando risorse di dati in cui il valore viene stampato nell'output del piano.
data "aws_ssm_parameter" "foo" {
name = "password"
}
module "lamda_env_vars" {
New_password = data.aws_ssm_parameter.foo.value
}
plan output:-
New_paswword = Password@123
Ho provato la crittografia come di seguito.
data "aws_ssm_parameter" "foo" {
name = "password"
with_decryption = false
}
module "lambda_env_vars" {
New_password = data.aws_ssm_parameter.foo.value
}
plan output:-
New_password = Q#iuws##)9ssdhs(some encryptrd value)
Qui il problema è che lo stesso codice hash crittografato viene assegnato come valore per la mia funzione lambda.
Come mascherare il valore durante la terraformazione del piano e ottenere il valore di testo normale per la mia funzione lambda?
Risposte
In genere si passa semplicemente il nome del SecretStringparametro di SSM come variabile env alla funzione lambda. Quindi la funzione lambda la recupererebbe da sola dall'archivio parametri SSM.
Se si desidera utilizzare l'approccio con with_decryption = false, la funzione lambda dovrà chiamare l' API di decrittografia KMS per decrittografare effettivamente il testo cifrato nella sua versione di testo normale.
In entrambi i casi, il ruolo di esecuzione della funzione deve disporre delle autorizzazioni per KMS e / o SSM Parameter Store.