So verbergen Sie terraform aws_ssm_parameter-Werte

Aug 25 2020

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

1 Marcin Aug 25 2020 at 06:03

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.