So verbergen Sie terraform aws_ssm_parameter-Werte
Ich habe einen SSM-Parameter mit dem Typ SecureString und dem Schlüsselwert as (pasword = Passwor @ d123) erstellt. Ich versuche, den Wert mithilfe von Datenressourcen abzurufen, bei denen der Wert in der Planausgabe gedruckt wird.
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
Ich habe versucht, wie unten zu verschlüsseln.
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)
Hier ist das Problem, dass der gleiche verschlüsselte Hash-Code als Wert für meine Lambda-Funktion zugewiesen wird.
Wie maskiere ich den Wert beim Terraforming-Plan und erhalte den Klartextwert für meine Lambda-Funktion?
Antworten
Im Allgemeinen würden Sie nur den Namen des SSM- SecretStringParameters als env-Variable an Ihre Lambda-Funktion übergeben. Dann würde die Lambda-Funktion es selbst aus dem SSM-Parameterspeicher abrufen.
Wenn Sie den Ansatz mit verwenden möchten with_decryption = false, muss Ihre Lambda-Funktion die KMS- Entschlüsselungs- API aufrufen , um den verschlüsselten Text tatsächlich in seine Nur-Text-Version zu entschlüsseln.
In beiden Fällen muss die Ausführungsrolle Ihrer Funktion über Berechtigungen für KMS und / oder SSM-Parameterspeicher verfügen.